# 🧠 Does the Language of Artificial Intelligence Move Markets? **UQO Working Paper No. 17** — *A Semantic Analysis of S&P 500 SEC Filings and the Cross-Section of Stock Returns, 2010–2026* [![Paper](https://img.shields.io/badge/paper-PDF%20(39%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf) [![Python](https://img.shields.io/badge/python-3.11%2B-3776AB?logo=python&logoColor=white)](requirements.txt) [![Data](https://img.shields.io/badge/data-7%2C869%20firm--years%20·%20500%20S%26P%20500%20firms%20·%2010--K%20embeddings-4051b5)](data/processed/) [![Reproducible](https://img.shields.io/badge/reproducible-end--to--end%20pipeline%20(9%20scripts)-2e7d32)](scripts/) [![Institution](https://img.shields.io/badge/UQO-D%C3%A9pt.%20des%20sciences%20administratives-16365c)](https://uqo.ca) [![Authors](https://img.shields.io/badge/authors-Kammoun%20·%20Tandjambianda%20·%20Boucher-16365c)](mailto:simon-pierre.boucher@uqo.ca) > **TL;DR** — We embed the full text of every S&P 500 annual report (Form 10-K, fiscal years > 2010–2026) with a sentence transformer and score each passage by cosine similarity to curated AI > “anchor” concepts (internal adoption, infrastructure exposure, product-disruption risk). Linked to > look-ahead-free forward returns, the panel of 7,869 firm-years shows a **conditional, economically > large** effect: the top-minus-bottom quintile spread in AI-disclosure intensity rises from > **+2.4 pp/yr before ChatGPT to +14.6 pp/yr after** (long-short Sharpe 0.15 → 1.33), survives > exclusion of the Magnificent 7, is AI-specific in a five-factor placebo (ESG and climate spreads turn > *negative*), and shows up as **+10.1 % cumulative abnormal return** (t = 1.97) for high-AI firms in > the year after the ChatGPT launch. The repricing is cross-sectional and regime-dependent: the > market re-rated *which firms and sectors* are AI-exposed once AI became salient. --- ## 📌 Status | Item | Value | |---|---| | Version | 1.0 (June 2026) — `main.tex` reconstructed 2026-10-17 | | SSRN | not yet submitted | | Journal | — (draft) | | 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) | ## 🎯 What this paper does Did the *language* of AI in firms' mandatory disclosures carry information about their subsequent stock returns, when did that information begin to be priced, and through which channel? Three ingredients are combined: a machine-readable 10-K corpus (EDGAR Research Database), a semantic measurement technology (sentence embeddings scored against AI anchor concepts, section-weighted), and a clean look-ahead-free mapping from fiscal-year disclosure to tradeable forward returns (July Y+1 → June Y+2). ``` r_{i,Y+1} = α + β · AI_{i,Y} + γ' X_{i,Y} + δ · (AI_{i,Y} × Post-ChatGPT) + ε_{i,Y+1} ``` Signals: `AI_ADOPT` (internal AI use), `AI_INFRA` (compute / capex exposure), `AI_RISK` (product-disruption risk), `AI_COMPOS` = z(ADOPT) + z(INFRA). Methods: within-year z-scoring, quintile portfolio sorts (EW/VW, raw and market-adjusted) with Newey–West t-statistics, FF5 + momentum alphas, two-way fixed-effects panels with double-clustered errors, Fama–MacBeth, and a post-ChatGPT (30 November 2022) structural-break interaction. ## 🏆 Headline results | Object | Estimate | |---|---| | Panel | 7,869 firm-years, 500 firms, FY 2010–2026 (estimation sample 6,852 firm-years, 497 firms) | | Q5–Q1 forward-return spread, pre- / post-ChatGPT | **+2.4 pp/yr → +14.6 pp/yr** | | Long-short Sharpe, pre / post | 0.15 → 1.33 | | Full-sample risk-adjusted long-short alpha | ≈ 2 %/yr, insignificant | | Event study: ChatGPT launch, high- vs low-AI firms, 1-year CAR | **+10.1 %** (t = 1.97) | | Placebo (5 non-AI semantic factors) | post-2022 jump specific to AI; ESG / climate spreads negative | | Magnificent 7 excluded | break unchanged | | Firm fixed effects / sector fixed effects | effect absorbed / roughly halved → cross-sectional re-rating | ## 🗂 Repository layout ``` ai-disclosure-stock-returns/ ├── data/processed/ # analysis_panel, merged_panel, prices, market caps, FF5, event CARs (parquet, 19 MB, committed) ├── scripts/ # the pipeline, in order │ ├── 01_download_prices.py # monthly prices (500 tickers), SPY, market caps │ ├── 02_build_panel.py # look-ahead-free forward returns (July formation) + controls │ ├── 03_analysis.py # sorts, FF6 alphas, two-way FE, Fama–MacBeth, post-ChatGPT break │ ├── 04_figures.py # figures 1–5 │ ├── 05_make_tables.py # LaTeX tables (core) │ ├── 06_extended.py # placebo, sector-neutral / double sorts, Mag-7 exclusion, PCA, DiD │ ├── 07_event_study.py # ChatGPT market-model event study │ ├── 08_figures_ext.py # figures 6–13 │ └── 09_make_tables_ext.py # LaTeX tables (extended) ├── results/tables/ # results*.json + CSV tables emitted by the scripts ├── figures/ # 13 publication figures (PNG, 200 dpi) ├── docs/ # original June 2026 report (full + short), analysis README └── paper/ # main.tex + sections/ + tables/ + figures/ + appendix/ + references.bib → main.pdf ``` ## 🚀 Quick start ```bash python3 -m pip install -r requirements.txt # scripts read/write relative to the repository root python3 scripts/01_download_prices.py # needs network (Yahoo Finance) — skip if data/processed/ is present python3 scripts/02_build_panel.py python3 scripts/03_analysis.py python3 scripts/06_extended.py python3 scripts/07_event_study.py python3 scripts/04_figures.py && python3 scripts/08_figures_ext.py # → figures/ python3 scripts/05_make_tables.py && python3 scripts/09_make_tables_ext.py # → paper/tables/ cd paper && make # latexmk → main.pdf ``` Runtime ≈ 3 minutes on an Apple-silicon laptop from the processed panel. ## 🗃 Data - **Disclosure signals**: section-weighted cosine similarity of 10-K passages to AI anchor concepts, computed in the EDGAR Research Database (`~/Desktop/UQO/UQO_RESEARCH_DB`, sentence-transformer embeddings of every S&P 500 10-K, FY 2010–2026). Only the firm-year scores enter this repository. - **Prices and factors**: monthly prices and market capitalisations for the 500 constituents and SPY (Yahoo Finance), Fama–French five factors and momentum (Kenneth French data library). - **Timing**: fiscal-year Y disclosure → forward 12-month return July (Y+1) to June (Y+2), strictly tradeable. - Sample cascade: 7,869 firm-years → 6,852 firm-years (497 firms) with non-missing forward returns and controls (Table 1 of the paper). ## 🔬 Methodology 1. **Signal construction** (`02_build_panel.py`): within-year z-scores of the three anchors and the composite; controls (momentum, volatility, log market cap). 2. **Portfolio sorts** (`03_analysis.py`): quintiles, EW/VW, raw and market-adjusted, Newey–West inference; long-short spread regressed on FF5 + momentum. 3. **Panel and Fama–MacBeth** (`03_analysis.py`): two-way fixed effects with double-clustered errors; year-by-year cross-sectional slopes. 4. **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. 5. **Placebo** (`06_extended.py`): five non-AI semantic factors (incl. ESG, climate) through the same pipeline. 6. **Event study** (`07_event_study.py`): market-model CARs around 30 November 2022, binscatter on pre-event AI intensity. ## 🖼 Figures & tables inventory | Figure | Content | |---|---| | `fig1_quintile_returns` | forward returns by AI-disclosure quintile | | `fig2_cumulative_ls` | cumulative long-short returns by signal | | `fig3_annual_spread` | Q5–Q1 spread by formation year | | `fig4_ai_language_trend` | AI-language intensity over time | | `fig5_binscatter` | forward return vs AI intensity | | `fig6_fm_byyear` | Fama–MacBeth slopes by year | | `fig7_placebo` | AI vs five placebo semantic factors | | `fig8_event_car` | cumulative abnormal returns around ChatGPT | | `fig9_double_sort` | double sorts pre/post | | `fig10_mag7` | Magnificent-7 exclusion | | `fig11_eventtime` | DiD in event time | | `fig12_sector_box` | AI intensity by sector | | `fig13_event_binscatter` | 1-year CAR vs pre-event AI intensity | Tables (`paper/tables/*.tex`): summary statistics, correlations, top firms, portfolio sorts, alphas, panel, structural break, double sorts, placebo, event study, DiD, robustness. ## ⚠️ Limitations - Anchor concepts embed the authors' definitional choices; alternative anchors are explored but not exhaustive. - S&P 500 constituents only (large caps); survivorship handled through point-in-time membership but results may not extend to small caps. - The post-ChatGPT window is short (2023–2026 formation years); the break is identified on few annual cross-sections. - Prices from Yahoo Finance (adjusted closes) rather than CRSP. ## 📝 Citation ```bibtex @techreport{kammoun2026ailanguage, author = {Kammoun, Manel and Tandjambianda, Djerrycharli and Boucher, Simon-Pierre}, 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}, institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives}, type = {Working Paper}, number = {17}, year = {2026}, month = {June} } ``` ## 👤 Authors & contact **Manel Kammoun**, **Djerrycharli Tandjambianda**, **Simon-Pierre Boucher** — Département des sciences administratives, Université du Québec en Outaouais (UQO), Gatineau, QC. 📧 [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) ## 🗒 Notes - **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. - 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. - Macros `\tstat` and `\tablelegend` (used by sections and tables) are defined in `main.tex`.