SPB Git forge

spb/wp17_uqo

Public
2commits 1branches 1releases
19.9 MBsize
maindefault branch
21 min agolast push
TeX 74.5% Python 25.4%
11.0 KB · 180 lines markdown
Rendered Raw Blame History
1<!-- Authors: Manel Kammoun, Djerrycharli Tandjambianda, Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->2# 🧠 Does the Language of Artificial Intelligence Move Markets?34**UQO Working Paper No. 17** — *A Semantic Analysis of S&P 500 SEC Filings and the Cross-Section of Stock Returns, 2010–2026*56[![Paper](https://img.shields.io/badge/paper-PDF%20(39%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)7[![Python](https://img.shields.io/badge/python-3.11%2B-3776AB?logo=python&logoColor=white)](requirements.txt)8[![Data](https://img.shields.io/badge/data-7%2C869%20firm--years%20·%20500%20S%26P%20500%20firms%20·%2010--K%20embeddings-4051b5)](data/processed/)9[![Reproducible](https://img.shields.io/badge/reproducible-end--to--end%20pipeline%20(9%20scripts)-2e7d32)](scripts/)10[![Institution](https://img.shields.io/badge/UQO-D%C3%A9pt.%20des%20sciences%20administratives-16365c)](https://uqo.ca)11[![Authors](https://img.shields.io/badge/authors-Kammoun%20·%20Tandjambianda%20·%20Boucher-16365c)](mailto:simon-pierre.boucher@uqo.ca)1213> **TL;DR** — We embed the full text of every S&P 500 annual report (Form 10-K, fiscal years14> 2010–2026) with a sentence transformer and score each passage by cosine similarity to curated AI15> “anchor” concepts (internal adoption, infrastructure exposure, product-disruption risk). Linked to16> look-ahead-free forward returns, the panel of 7,869 firm-years shows a **conditional, economically17> large** effect: the top-minus-bottom quintile spread in AI-disclosure intensity rises from18> **+2.4 pp/yr before ChatGPT to +14.6 pp/yr after** (long-short Sharpe 0.15 → 1.33), survives19> exclusion of the Magnificent 7, is AI-specific in a five-factor placebo (ESG and climate spreads turn20> *negative*), and shows up as **+10.1 % cumulative abnormal return** (t = 1.97) for high-AI firms in21> the year after the ChatGPT launch. The repricing is cross-sectional and regime-dependent: the22> market re-rated *which firms and sectors* are AI-exposed once AI became salient.2324---2526## 📌 Status2728| Item | Value |29|---|---|30| Version | 1.0 (June 2026) — `main.tex` reconstructed 2026-10-17 |31| SSRN | not yet submitted |32| Journal | — (draft) |33| Code & data | reproducible from `scripts/` on the committed processed panel (`data/processed/`, 19 MB); raw 10-K embeddings come from the EDGAR Research Database (not redistributed) |3435## 🎯 What this paper does3637Did the *language* of AI in firms' mandatory disclosures carry information about their subsequent38stock returns, when did that information begin to be priced, and through which channel? Three39ingredients are combined: a machine-readable 10-K corpus (EDGAR Research Database), a semantic40measurement technology (sentence embeddings scored against AI anchor concepts, section-weighted),41and a clean look-ahead-free mapping from fiscal-year disclosure to tradeable forward returns42(July Y+1 → June Y+2).4344```45r_{i,Y+1} = α + β · AI_{i,Y} + γ' X_{i,Y} + δ · (AI_{i,Y} × Post-ChatGPT) + ε_{i,Y+1}46```4748Signals: `AI_ADOPT` (internal AI use), `AI_INFRA` (compute / capex exposure), `AI_RISK`49(product-disruption risk), `AI_COMPOS` = z(ADOPT) + z(INFRA). Methods: within-year z-scoring,50quintile portfolio sorts (EW/VW, raw and market-adjusted) with Newey–West t-statistics, FF5 +51momentum alphas, two-way fixed-effects panels with double-clustered errors, Fama–MacBeth, and a52post-ChatGPT (30 November 2022) structural-break interaction.5354## 🏆 Headline results5556| Object | Estimate |57|---|---|58| Panel | 7,869 firm-years, 500 firms, FY 2010–2026 (estimation sample 6,852 firm-years, 497 firms) |59| Q5–Q1 forward-return spread, pre- / post-ChatGPT | **+2.4 pp/yr → +14.6 pp/yr** |60| Long-short Sharpe, pre / post | 0.15 → 1.33 |61| Full-sample risk-adjusted long-short alpha | ≈ 2 %/yr, insignificant |62| Event study: ChatGPT launch, high- vs low-AI firms, 1-year CAR | **+10.1 %** (t = 1.97) |63| Placebo (5 non-AI semantic factors) | post-2022 jump specific to AI; ESG / climate spreads negative |64| Magnificent 7 excluded | break unchanged |65| Firm fixed effects / sector fixed effects | effect absorbed / roughly halved → cross-sectional re-rating |6667## 🗂 Repository layout6869```70ai-disclosure-stock-returns/71├── data/processed/           # analysis_panel, merged_panel, prices, market caps, FF5, event CARs (parquet, 19 MB, committed)72├── scripts/                  # the pipeline, in order73│   ├── 01_download_prices.py     # monthly prices (500 tickers), SPY, market caps74│   ├── 02_build_panel.py         # look-ahead-free forward returns (July formation) + controls75│   ├── 03_analysis.py            # sorts, FF6 alphas, two-way FE, Fama–MacBeth, post-ChatGPT break76│   ├── 04_figures.py             # figures 1–577│   ├── 05_make_tables.py         # LaTeX tables (core)78│   ├── 06_extended.py            # placebo, sector-neutral / double sorts, Mag-7 exclusion, PCA, DiD79│   ├── 07_event_study.py         # ChatGPT market-model event study80│   ├── 08_figures_ext.py         # figures 6–1381│   └── 09_make_tables_ext.py     # LaTeX tables (extended)82├── results/tables/           # results*.json + CSV tables emitted by the scripts83├── figures/                  # 13 publication figures (PNG, 200 dpi)84├── docs/                     # original June 2026 report (full + short), analysis README85└── paper/                    # main.tex + sections/ + tables/ + figures/ + appendix/ + references.bib → main.pdf86```8788## 🚀 Quick start8990```bash91python3 -m pip install -r requirements.txt9293# scripts read/write relative to the repository root94python3 scripts/01_download_prices.py      # needs network (Yahoo Finance) — skip if data/processed/ is present95python3 scripts/02_build_panel.py96python3 scripts/03_analysis.py97python3 scripts/06_extended.py98python3 scripts/07_event_study.py99python3 scripts/04_figures.py && python3 scripts/08_figures_ext.py     # → figures/100python3 scripts/05_make_tables.py && python3 scripts/09_make_tables_ext.py   # → paper/tables/101102cd paper && make                           # latexmk → main.pdf103```104105Runtime ≈ 3 minutes on an Apple-silicon laptop from the processed panel.106107## 🗃 Data108109- **Disclosure signals**: section-weighted cosine similarity of 10-K passages to AI anchor concepts, computed in the110  EDGAR Research Database (`~/Desktop/UQO/UQO_RESEARCH_DB`, sentence-transformer embeddings of every S&P 500 10-K,111  FY 2010–2026). Only the firm-year scores enter this repository.112- **Prices and factors**: monthly prices and market capitalisations for the 500 constituents and SPY (Yahoo Finance),113  Fama–French five factors and momentum (Kenneth French data library).114- **Timing**: fiscal-year Y disclosure → forward 12-month return July (Y+1) to June (Y+2), strictly tradeable.115- Sample cascade: 7,869 firm-years → 6,852 firm-years (497 firms) with non-missing forward returns and controls116  (Table 1 of the paper).117118## 🔬 Methodology1191201. **Signal construction** (`02_build_panel.py`): within-year z-scores of the three anchors and the composite; controls (momentum, volatility, log market cap).1212. **Portfolio sorts** (`03_analysis.py`): quintiles, EW/VW, raw and market-adjusted, Newey–West inference; long-short spread regressed on FF5 + momentum.1223. **Panel and Fama–MacBeth** (`03_analysis.py`): two-way fixed effects with double-clustered errors; year-by-year cross-sectional slopes.1234. **Structural break** (`03_analysis.py`, `06_extended.py`): post-ChatGPT interaction, DiD in event time, sector-neutral and double sorts, Magnificent-7 exclusion, alternative signals/horizons, PCA.1245. **Placebo** (`06_extended.py`): five non-AI semantic factors (incl. ESG, climate) through the same pipeline.1256. **Event study** (`07_event_study.py`): market-model CARs around 30 November 2022, binscatter on pre-event AI intensity.126127## 🖼 Figures & tables inventory128129| Figure | Content |130|---|---|131| `fig1_quintile_returns` | forward returns by AI-disclosure quintile |132| `fig2_cumulative_ls` | cumulative long-short returns by signal |133| `fig3_annual_spread` | Q5–Q1 spread by formation year |134| `fig4_ai_language_trend` | AI-language intensity over time |135| `fig5_binscatter` | forward return vs AI intensity |136| `fig6_fm_byyear` | Fama–MacBeth slopes by year |137| `fig7_placebo` | AI vs five placebo semantic factors |138| `fig8_event_car` | cumulative abnormal returns around ChatGPT |139| `fig9_double_sort` | double sorts pre/post |140| `fig10_mag7` | Magnificent-7 exclusion |141| `fig11_eventtime` | DiD in event time |142| `fig12_sector_box` | AI intensity by sector |143| `fig13_event_binscatter` | 1-year CAR vs pre-event AI intensity |144145Tables (`paper/tables/*.tex`): summary statistics, correlations, top firms, portfolio sorts, alphas, panel,146structural break, double sorts, placebo, event study, DiD, robustness.147148## ⚠️ Limitations149150- Anchor concepts embed the authors' definitional choices; alternative anchors are explored but not exhaustive.151- S&P 500 constituents only (large caps); survivorship handled through point-in-time membership but results may not extend to small caps.152- The post-ChatGPT window is short (2023–2026 formation years); the break is identified on few annual cross-sections.153- Prices from Yahoo Finance (adjusted closes) rather than CRSP.154155## 📝 Citation156157```bibtex158@techreport{kammoun2026ailanguage,159  author      = {Kammoun, Manel and Tandjambianda, Djerrycharli and Boucher, Simon-Pierre},160  title       = {Does the Language of Artificial Intelligence Move Markets? A Semantic Analysis of S\&P~500 SEC Filings and the Cross-Section of Stock Returns, 2010--2026},161  institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives},162  type        = {Working Paper},163  number      = {17},164  year        = {2026},165  month       = {June}166}167```168169## 👤 Authors & contact170171**Manel Kammoun**, **Djerrycharli Tandjambianda**, **Simon-Pierre Boucher** — Département des sciences administratives,172Université du Québec en Outaouais (UQO), Gatineau, QC.173📧 [manel.kammoun@uqo.ca](mailto:manel.kammoun@uqo.ca) · [djerrycharli.tandjambianda@uqo.ca](mailto:djerrycharli.tandjambianda@uqo.ca) · [simon-pierre.boucher@uqo.ca](mailto:simon-pierre.boucher@uqo.ca)174175## 🗒 Notes176177- **Reconstruction (2026-10-17)**: the working-paper `main.tex` of the June 2026 draft (former folder `UQO_WP_SPB_MK_CT`) had been lost; it was rebuilt from `Recherche-UQO/_modele-working-paper/main.tex` with title, abstract, keywords and JEL taken from the original report (`docs/original_report_full_2026-06.tex`). The 13 figures were regenerated from the committed panel with `scripts/04_figures.py` and `08_figures_ext.py`. Sections, tables and appendix are untouched.178- Deviations from the standard: three author e-mails on the cover (`\WPemail` holds three `\href`s, the title page prints `\WPemail` directly); the long abstract is single-spaced so that Keywords and JEL stay on page 2; `data/processed/*.parquet` (19 MB) is committed because it is the only reproducible input outside the EDGAR Research Database.179- Macros `\tstat` and `\tablelegend` (used by sections and tables) are defined in `main.tex`.180