# 🧠 Does the Language of Artificial Intelligence Move Markets? **UQO Working Paper No. 0002 (FIRC-funded)** β€” *A Semantic Analysis of Russell 3000 SEC Filings and the Cross-Section of Stock Returns, 2010–2026* β€” **Version 2.0, October 28, 2026** (Russell 3000 extension of the S&P 500 study, formerly WP 17 v1.1, archived in `docs/paper_v1.1_sp500_20261026/`). Research funded by the FIRC (Fonds institutionnel de recherche et de crΓ©ation, UQO). > **TL;DR** β€” We embed every Form 10-K, 10-Q and 8-K of ~2,500 U.S. firms (S&P 500 βˆͺ iShares Russell 3000 holdings, 527,548 filings, 2010–2026) with a sentence transformer, score each chunk against AI anchor concepts, and link the filing-year signal to look-ahead-free forward returns (July Y+1 β†’ June Y+2), with S&P 500 members and the full universe reported side by side. In the broad market AI language carries a **modest, persistent premium** (EW Q5–Q1 +5.5 pp/yr, t = 2.4; Fama–MacBeth +3.1 pp/SD, t = 2.8; within-sector +1.5 pp/SD, t = 4.4), strongest among smaller firms **before** 2022. The **post-ChatGPT jump replicates in the S&P 500 (+5.0 β†’ +15.0 pp) but not in the Russell 3000 (+4.9 β†’ +7.9, 2022 cohort negative, placebo break 2022 ranks 8/10, post-launch FF6 alpha βˆ’0.3 %/yr)**: it is a large-cap re-rating (largest 1,000 firms +2.9 β†’ +12.8; event-study 1-year Hβˆ’L +19.5 pp vs +9.9 for the rest). **Disclosed AI projects** (SPID database) carry no premium; **10-K language** carries the strongest. --- ## πŸ“Œ Status | Item | Value | |---|---| | Version | **2.0 (October 28, 2026)** β€” Russell 3000 extension; Γ  valider par les co-auteurs | | Funding | FIRC (UQO) | | Previous versions | v1.1 (S&P 500, 2026-10-17 review) and v1.0 (June 2026): `docs/paper_v1.1_sp500_20261026/` | | Code & data | **v2.0 exhibits**: produced by the committed `scripts/r3k_00…07` at commit `3cf7560` from `data/raw_russell3000/` (factor panel, filing-level scores, SPID counts, universe) and `data/processed_r3k/` (Yahoo prices and SEC share counts of the **2026-10-28 vintage**; sha256 manifest in `UQO-WP-REVIEW/reproducibility/FIRC-0002/environment/inputs.sha256`); these two directories are gitignored (β‰ˆ 320 MB) and must be deposited (spbgit release or M3U96b archive referenced by hash β€” pending author action) before the results can be called reproducible by a third party. The re-run of the committed chain reproduces `results.json` exactly, `results2.json` except the `spid` and `double_sort_*` blocks (stale at commit time) and `results_event.json` under the author's pandas 3.0.2 (see `reproducibility/FIRC-0002/baseline_rerun_diff.txt`). **v2.1 review chain** (`scripts/r3k_10…23`, `scripts/run_all.sh`, pinned `requirements.lock`, `tests/test_regenerate.py`): rebuilt panel (corrected market capitalization, cleaned returns, CIK-keyed), results in `results/r3k_v2/`. Raw filing text and embeddings come from the EDGAR Research Database (UQO WP 0001) and are not redistributed; FinData OS (FirstRate) raw closes are a licensed second price source (access documented in `data/processed_r3k_v2/README.md`). | ## πŸ† Headline results (Russell 3000 unless stated) | Object | Estimate | |---|---| | Panel | 27,468 firm-years, 2,379 firms, formation years 2010–2024 (6,793 firm-years of S&P 500 members) | | Full-sample Q5–Q1 spread (composite) | EW +5.5 pp/yr (t 2.41); VW +13.9 (t 2.59); S&P 500 members EW +7.0 (t 2.56) | | Fama–MacBeth slope (composite) | +3.07 pp/SD (t 2.80); with sector dummies +1.46 (t 4.38); S&P 500 +2.07 (t 2.17) | | Pre / post ChatGPT, Russell 3000 | +4.9 β†’ +7.9 pp (post t 1.34); cohorts 2022/23/24 = βˆ’8.4 / +11.8 / +20.4; pooled post +8.2 (t 1.80), winsorized +3.0; post LS Sharpe 0.23 (pre 0.50) | | Pre / post, S&P 500 members | +5.0 β†’ +15.0 (t 2.21); cohorts +13.5 / βˆ’6.9 / +38.4; pooled +15.1 (t 2.22); post Sharpe 0.66 | | Size | largest 1,000: +2.9 β†’ +12.8 (t 2.09); remaining firms: +9.6 β†’ +8.4; size-neutral full-sample +7.2 (t 2.73) | | Placebo break dates | 2022 ranks 8th of 10 candidate first-post-cohorts (best: 2016) | | Event study (IWV market, N = 2,226) | 1-year Hβˆ’L +14.0 pp (Welch 3.94, CDA 2.21); 60 days +0.9; largest 1,000 +19.5 (5.09) vs rest +9.9 (1.55) | | Sector | post-launch sectorΓ—year FE slope +0.10 (t 0.11); full-sample +0.88 (t 2.48); Ξ²_TECH 0.38 | | Form-specific signals | 10-K only: pre +6.9 / post +16.7 (t 2.61), FM +4.66; 8-K only: +1.1 / +6.6; horse race 10-K +6.06 (1.71), 8-K +0.90 | | SPID AI projects | tech-project quintile spread βˆ’1.9 (pre) / βˆ’1.3 (post); FM βˆ’0.22 (t βˆ’0.24) | | Placebo factors (post) | ESG βˆ’15.9, climate βˆ’8.6, macro βˆ’16.3; cybersecurity +13.5, automation +7.8, AI disruption risk +22.8 | ## πŸ—‚ Repository layout ``` ai-disclosure-stock-returns/ β”œβ”€β”€ data/raw_russell3000/ # factor panels, filing_scores, filings, companies, universe.json, spid_firm_year_signals.csv (from the EDGAR DB) β”œβ”€β”€ data/processed_r3k/ # prices (Yahoo), SEC share history, FF factors, merged/analysis panels, LS series, event CARs β”œβ”€β”€ scripts/r3k_00..07_*.py # the v2.0 pipeline, in order (01: Yahoo prices Β· 01c: SEC share counts Β· 02: panel Β· 03: core Β· 04: extended Β· 05: event Β· 06: figures Β· 07: tables + macros) β”œβ”€β”€ results/r3k/ # results.json, results2.json, results_event.json, CSVs β”œβ”€β”€ figures/r3k/ # 14 figures (pdf + png) β”œβ”€β”€ paper/ # main.tex, sections/, appendix/, tables/ (generated, incl. macros.tex), figures_r3k/ β†’ main.pdf β”œβ”€β”€ code/tex2docx/ # LaTeX β†’ Word conversion (prep_tex.py, post_docx.py) └── docs/ # v1.1 archive, review report, changelog ``` ## πŸš€ Quick start (v2.1 review chain β€” Stage D, 2026-11-05) ```bash uv venv .venv-review --python 3.12 && uv pip install --python .venv-review/bin/python -r requirements.lock bash scripts/run_all.sh # 10 (prices, FF daily) β†’ 12 (SEC shares) β†’ 13/13b (FinData checks) β†’ 14…18 (panel, core, extended, event, survivorship) β†’ 19/20 (figures, tables) β†’ latexmk .venv-review/bin/python -I tests/test_regenerate.py --quick # schema / leakage / manifest checks; without --quick: full regeneration + diff at 1e-6 ``` ## πŸš€ Quick start (v2.0 committed chain) ```bash python3 -m pip install -r requirements.txt python3 scripts/r3k_00_factors.py && python3 scripts/r3k_01_download_prices.py && python3 scripts/r3k_01c_sec_shares.py for s in 02_build_panel 03_analysis 04_extended 05_event_study 06_figures 07_tables; do python3 scripts/r3k_$s.py; done cd paper && latexmk # β†’ main.pdf (every number in the text is a macro from tables/macros.tex) ```