harmonisation standard UQO WP (2026-10-17)
WP 17 : main.tex reconstruit sur le gabarit (3 auteurs, cover WP 17, aer), WP/ → paper/, analysis/ → scripts/, data/processed, results/, figures/ (13 figures régénérées), README et .gitignore standard. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
98 changed files +5,630 −0
added
.gitignore
+38 −0
@@ -0,0 +1,38 @@ | ||
| 1 | +# Raw & processed data — never committed (see data/raw/README.md for provenance) | |
| 2 | +data/raw/* | |
| 3 | +!data/raw/README.md | |
| 4 | +data/processed/* | |
| 5 | +!data/processed/.gitkeep | |
| 6 | + | |
| 7 | +# Python | |
| 8 | +__pycache__/ | |
| 9 | +*.pyc | |
| 10 | +.pytest_cache/ | |
| 11 | +.venv/ | |
| 12 | +*.egg-info/ | |
| 13 | + | |
| 14 | +# LaTeX build artifacts (paper/main.pdf IS committed) | |
| 15 | +paper/*.aux | |
| 16 | +paper/*.log | |
| 17 | +paper/*.out | |
| 18 | +paper/*.toc | |
| 19 | +paper/*.lof | |
| 20 | +paper/*.lot | |
| 21 | +paper/*.fls | |
| 22 | +paper/*.fdb_latexmk | |
| 23 | +paper/*.bbl | |
| 24 | +paper/*.blg | |
| 25 | +paper/*.spl | |
| 26 | +paper/*.synctex.gz | |
| 27 | +paper/*.run.xml | |
| 28 | +paper/*.bcf | |
| 29 | + | |
| 30 | +# Logs | |
| 31 | +logs/ | |
| 32 | +*.log | |
| 33 | + | |
| 34 | +# macOS | |
| 35 | +.DS_Store | |
| 36 | + | |
| 37 | +# WP 17: the processed firm-year panel (19 MB) is committed on purpose (see README Notes) | |
| 38 | +!data/processed/*.parquet | |
added
README.md
+179 −0
@@ -0,0 +1,179 @@ | ||
| 1 | +<!-- Authors: Manel Kammoun, Djerrycharli Tandjambianda, Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca --> | |
| 2 | +# 🧠 Does the Language of Artificial Intelligence Move Markets? | |
| 3 | + | |
| 4 | +**UQO Working Paper No. 17** — *A Semantic Analysis of S&P 500 SEC Filings and the Cross-Section of Stock Returns, 2010–2026* | |
| 5 | + | |
| 6 | +[-b31b1b?logo=latex&logoColor=white)](paper/main.pdf) | |
| 7 | +[](requirements.txt) | |
| 8 | +[](data/processed/) | |
| 9 | +[-2e7d32)](scripts/) | |
| 10 | +[](https://uqo.ca) | |
| 11 | +[](mailto:simon-pierre.boucher@uqo.ca) | |
| 12 | + | |
| 13 | +> **TL;DR** — We embed the full text of every S&P 500 annual report (Form 10-K, fiscal years | |
| 14 | +> 2010–2026) with a sentence transformer and score each passage by cosine similarity to curated AI | |
| 15 | +> “anchor” concepts (internal adoption, infrastructure exposure, product-disruption risk). Linked to | |
| 16 | +> look-ahead-free forward returns, the panel of 7,869 firm-years shows a **conditional, economically | |
| 17 | +> large** effect: the top-minus-bottom quintile spread in AI-disclosure intensity rises from | |
| 18 | +> **+2.4 pp/yr before ChatGPT to +14.6 pp/yr after** (long-short Sharpe 0.15 → 1.33), survives | |
| 19 | +> exclusion of the Magnificent 7, is AI-specific in a five-factor placebo (ESG and climate spreads turn | |
| 20 | +> *negative*), and shows up as **+10.1 % cumulative abnormal return** (t = 1.97) for high-AI firms in | |
| 21 | +> the year after the ChatGPT launch. The repricing is cross-sectional and regime-dependent: the | |
| 22 | +> market re-rated *which firms and sectors* are AI-exposed once AI became salient. | |
| 23 | + | |
| 24 | +--- | |
| 25 | + | |
| 26 | +## 📌 Status | |
| 27 | + | |
| 28 | +| 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) | | |
| 34 | + | |
| 35 | +## 🎯 What this paper does | |
| 36 | + | |
| 37 | +Did the *language* of AI in firms' mandatory disclosures carry information about their subsequent | |
| 38 | +stock returns, when did that information begin to be priced, and through which channel? Three | |
| 39 | +ingredients are combined: a machine-readable 10-K corpus (EDGAR Research Database), a semantic | |
| 40 | +measurement technology (sentence embeddings scored against AI anchor concepts, section-weighted), | |
| 41 | +and a clean look-ahead-free mapping from fiscal-year disclosure to tradeable forward returns | |
| 42 | +(July Y+1 → June Y+2). | |
| 43 | + | |
| 44 | +``` | |
| 45 | +r_{i,Y+1} = α + β · AI_{i,Y} + γ' X_{i,Y} + δ · (AI_{i,Y} × Post-ChatGPT) + ε_{i,Y+1} | |
| 46 | +``` | |
| 47 | + | |
| 48 | +Signals: `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, | |
| 50 | +quintile portfolio sorts (EW/VW, raw and market-adjusted) with Newey–West t-statistics, FF5 + | |
| 51 | +momentum alphas, two-way fixed-effects panels with double-clustered errors, Fama–MacBeth, and a | |
| 52 | +post-ChatGPT (30 November 2022) structural-break interaction. | |
| 53 | + | |
| 54 | +## 🏆 Headline results | |
| 55 | + | |
| 56 | +| 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 | | |
| 66 | + | |
| 67 | +## 🗂 Repository layout | |
| 68 | + | |
| 69 | +``` | |
| 70 | +ai-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 order | |
| 73 | +│ ├── 01_download_prices.py # monthly prices (500 tickers), SPY, market caps | |
| 74 | +│ ├── 02_build_panel.py # look-ahead-free forward returns (July formation) + controls | |
| 75 | +│ ├── 03_analysis.py # sorts, FF6 alphas, two-way FE, Fama–MacBeth, post-ChatGPT break | |
| 76 | +│ ├── 04_figures.py # figures 1–5 | |
| 77 | +│ ├── 05_make_tables.py # LaTeX tables (core) | |
| 78 | +│ ├── 06_extended.py # placebo, sector-neutral / double sorts, Mag-7 exclusion, PCA, DiD | |
| 79 | +│ ├── 07_event_study.py # ChatGPT market-model event study | |
| 80 | +│ ├── 08_figures_ext.py # figures 6–13 | |
| 81 | +│ └── 09_make_tables_ext.py # LaTeX tables (extended) | |
| 82 | +├── results/tables/ # results*.json + CSV tables emitted by the scripts | |
| 83 | +├── figures/ # 13 publication figures (PNG, 200 dpi) | |
| 84 | +├── docs/ # original June 2026 report (full + short), analysis README | |
| 85 | +└── paper/ # main.tex + sections/ + tables/ + figures/ + appendix/ + references.bib → main.pdf | |
| 86 | +``` | |
| 87 | + | |
| 88 | +## 🚀 Quick start | |
| 89 | + | |
| 90 | +```bash | |
| 91 | +python3 -m pip install -r requirements.txt | |
| 92 | + | |
| 93 | +# scripts read/write relative to the repository root | |
| 94 | +python3 scripts/01_download_prices.py # needs network (Yahoo Finance) — skip if data/processed/ is present | |
| 95 | +python3 scripts/02_build_panel.py | |
| 96 | +python3 scripts/03_analysis.py | |
| 97 | +python3 scripts/06_extended.py | |
| 98 | +python3 scripts/07_event_study.py | |
| 99 | +python3 scripts/04_figures.py && python3 scripts/08_figures_ext.py # → figures/ | |
| 100 | +python3 scripts/05_make_tables.py && python3 scripts/09_make_tables_ext.py # → paper/tables/ | |
| 101 | + | |
| 102 | +cd paper && make # latexmk → main.pdf | |
| 103 | +``` | |
| 104 | + | |
| 105 | +Runtime ≈ 3 minutes on an Apple-silicon laptop from the processed panel. | |
| 106 | + | |
| 107 | +## 🗃 Data | |
| 108 | + | |
| 109 | +- **Disclosure signals**: section-weighted cosine similarity of 10-K passages to AI anchor concepts, computed in the | |
| 110 | + 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 controls | |
| 116 | + (Table 1 of the paper). | |
| 117 | + | |
| 118 | +## 🔬 Methodology | |
| 119 | + | |
| 120 | +1. **Signal construction** (`02_build_panel.py`): within-year z-scores of the three anchors and the composite; controls (momentum, volatility, log market cap). | |
| 121 | +2. **Portfolio sorts** (`03_analysis.py`): quintiles, EW/VW, raw and market-adjusted, Newey–West inference; long-short spread regressed on FF5 + momentum. | |
| 122 | +3. **Panel and Fama–MacBeth** (`03_analysis.py`): two-way fixed effects with double-clustered errors; year-by-year cross-sectional slopes. | |
| 123 | +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. | |
| 124 | +5. **Placebo** (`06_extended.py`): five non-AI semantic factors (incl. ESG, climate) through the same pipeline. | |
| 125 | +6. **Event study** (`07_event_study.py`): market-model CARs around 30 November 2022, binscatter on pre-event AI intensity. | |
| 126 | + | |
| 127 | +## 🖼 Figures & tables inventory | |
| 128 | + | |
| 129 | +| 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 | | |
| 144 | + | |
| 145 | +Tables (`paper/tables/*.tex`): summary statistics, correlations, top firms, portfolio sorts, alphas, panel, | |
| 146 | +structural break, double sorts, placebo, event study, DiD, robustness. | |
| 147 | + | |
| 148 | +## ⚠️ Limitations | |
| 149 | + | |
| 150 | +- 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. | |
| 154 | + | |
| 155 | +## 📝 Citation | |
| 156 | + | |
| 157 | +```bibtex | |
| 158 | +@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 | +``` | |
| 168 | + | |
| 169 | +## 👤 Authors & contact | |
| 170 | + | |
| 171 | +**Manel Kammoun**, **Djerrycharli Tandjambianda**, **Simon-Pierre Boucher** — Département des sciences administratives, | |
| 172 | +Université 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) | |
| 174 | + | |
| 175 | +## 🗒 Notes | |
| 176 | + | |
| 177 | +- **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`. | |
added
data/processed/analysis_panel.parquet
+0 −0
Binary file not shown.
added
data/processed/event_car.parquet
+0 −0
Binary file not shown.
added
data/processed/event_car_paths.parquet
+0 −0
Binary file not shown.
added
data/processed/ff5_monthly.parquet
+0 −0
Binary file not shown.
added
data/processed/ls_ts_AI_ADOPT.parquet
+0 −0
Binary file not shown.
added
data/processed/ls_ts_AI_COMPOS.parquet
+0 −0
Binary file not shown.
added
data/processed/ls_ts_AI_INFRA.parquet
+0 −0
Binary file not shown.
added
data/processed/ls_ts_AI_RISK.parquet
+0 −0
Binary file not shown.
added
data/processed/marketcap.parquet
+0 −0
Binary file not shown.
added
data/processed/merged_panel.parquet
+0 −0
Binary file not shown.
added
data/processed/mom_monthly.parquet
+0 −0
Binary file not shown.
added
data/processed/monthly_returns.parquet
+0 −0
Binary file not shown.
added
data/processed/prices_daily_event.parquet
+0 −0
Binary file not shown.
added
data/processed/prices_monthly.parquet
+0 −0
Binary file not shown.
added
data/processed/spy_monthly.parquet
+0 −0
Binary file not shown.
added
docs/README-analysis.md
+43 −0
@@ -0,0 +1,43 @@ | ||
| 1 | +# AI Disclosure & S&P 500 Returns — Empirical Study | |
| 2 | + | |
| 3 | +Links the semantic AI-disclosure factors (EDGAR Research Database) to realized stock | |
| 4 | +performance (Yahoo Finance) and tests whether AI language in 10-K filings explains | |
| 5 | +the cross-section of subsequent returns. Full 40-page paper in `report/`. | |
| 6 | + | |
| 7 | +## Pipeline (run in order) | |
| 8 | +| Script | Purpose | Key output | | |
| 9 | +|--------|---------|-----------| | |
| 10 | +| `01_download_prices.py` | Monthly prices (500 tickers), SPY, market caps | `data/prices_monthly.parquet` | | |
| 11 | +| `02_build_panel.py` | Look-ahead-free forward returns (July formation) + controls; merge | `data/merged_panel.parquet` | | |
| 12 | +| `03_analysis.py` | Sorts, FF6 alphas, two-way FE panel, Fama-MacBeth, post-ChatGPT break | `tables/results.json` | | |
| 13 | +| `06_extended.py` | Placebo, sector-neutral/double sorts, Mag-7 exclusion, alt signals/horizons, PCA, DiD, fwd-vol | `tables/results2.json` | | |
| 14 | +| `07_event_study.py` | ChatGPT (Nov 2022) market-model event study, daily CARs | `tables/results_event.json` | | |
| 15 | +| `04_figures.py`, `08_figures_ext.py` | 13 publication figures | `figures/fig1..13_*.png` | | |
| 16 | +| `05_make_tables.py`, `09_make_tables_ext.py` | 12 LaTeX table fragments | `report/tab_*.tex` | | |
| 17 | + | |
| 18 | +FF5 + momentum factors fetched into `data/ff5_monthly.parquet`, `data/mom_monthly.parquet`. | |
| 19 | + | |
| 20 | +## Report | |
| 21 | +**`report/ai_disclosure_returns_full.tex` → `ai_disclosure_returns_full.pdf` (40 pp).** | |
| 22 | +Compile: `cd report && tectonic ai_disclosure_returns_full.tex`. | |
| 23 | +(`ai_disclosure_returns.tex` is the earlier short 6-page version.) | |
| 24 | + | |
| 25 | +## Headline finding | |
| 26 | +AI-disclosure intensity barely predicted returns for a decade, then was sharply | |
| 27 | +rewarded after ChatGPT (Nov 2022). High−low (Q5−Q1) forward-return spread: | |
| 28 | +**+2.4 pp/yr pre-2022 → +14.6 pp/yr post-2022**; long-short Sharpe 0.15 → 1.33. | |
| 29 | +Identified by: (1) a **placebo** — the jump is AI-specific (ESG/climate go *negative*); | |
| 30 | +(2) an **event study** — high-AI firms earned +10.1% higher abnormal return in the | |
| 31 | +year after ChatGPT (t=1.97); (3) it survives **Mag-7 exclusion** (+14.1pp). It is a | |
| 32 | +**cross-sectional, regime-dependent re-rating** (absorbed by firm FE, halved by sector | |
| 33 | +FE), not within-firm news timing. | |
| 34 | + | |
| 35 | +## Design notes | |
| 36 | +- **Signals**: section-weighted cosine similarity to AI anchors (`*_wmean`) for | |
| 37 | + adoption/infrastructure/disruption-risk; standardized cross-sectionally each year. | |
| 38 | +- **Timing**: 10-K(FY=Y) → form June Y+1 → hold July Y+1..June Y+2 (no look-ahead). | |
| 39 | +- **Inference**: Newey-West (sorts, FM, monthly LS), double-clustered SE (panel/DiD), | |
| 40 | + Welch t (event study). | |
| 41 | +- **Caveats**: 3 post-period cohorts (concentrated in 2024); current-membership | |
| 42 | + survivorship; shares-held-constant size proxy; AI signals collinear (ρ=0.75–0.86); | |
| 43 | + effect operates substantially through a sector (tech) channel. | |
added
docs/original_report_full_2026-06.tex
+909 −0
@@ -0,0 +1,909 @@ | ||
| 1 | +\documentclass[11pt]{article} | |
| 2 | +\usepackage[margin=1in]{geometry} | |
| 3 | +\usepackage{graphicx,booktabs,amsmath,amssymb,siunitx,caption,float,multirow} | |
| 4 | +\usepackage[round,authoryear]{natbib} | |
| 5 | +\usepackage[hidelinks]{hyperref} | |
| 6 | +\usepackage{xcolor,sectsty,setspace,enumitem} | |
| 7 | +\usepackage{titling} | |
| 8 | +\definecolor{navy}{HTML}{1b3a6b} | |
| 9 | +\sectionfont{\color{navy}\large}\subsectionfont{\color{navy}\normalsize} | |
| 10 | +\captionsetup{font=small,labelfont={bf,color=navy}} | |
| 11 | +\graphicspath{{../figures/}} | |
| 12 | +\setlength{\parskip}{0.4em} | |
| 13 | +\sisetup{group-minimum-digits=4,group-separator={,}} | |
| 14 | +\newcommand{\tstat}[1]{{\footnotesize(\textit{t}=#1)}} | |
| 15 | +\doublespacing | |
| 16 | +\hypersetup{linkcolor=navy,citecolor=navy} | |
| 17 | + | |
| 18 | +\title{\color{navy}\bfseries Does the Language of Artificial Intelligence Move Markets?\\[3mm] | |
| 19 | +\large A Semantic Analysis of S\&P~500 SEC Filings and the Cross-Section of Stock Returns, 2010--2026} | |
| 20 | +\author{% | |
| 21 | +\begin{tabular}{c} | |
| 22 | +\textbf{Manel Kammoun}\\ | |
| 23 | +\texttt{manel.kammoun@uqo.ca}\\[0.5em] | |
| 24 | +\textbf{Djerrycharli Tandjambianda}\\ | |
| 25 | +\texttt{djerrycharli.tandjambianda@uqo.ca}\\[0.5em] | |
| 26 | +\textbf{Simon-Pierre Boucher}\\ | |
| 27 | +\texttt{simon-pierre.boucher@uqo.ca}\\[0.8em] | |
| 28 | +{\large\textbf{Universit\'e du Qu\'ebec en Outaouais (UQO)}}\\ | |
| 29 | +\end{tabular}% | |
| 30 | +} | |
| 31 | +\date{June 2026} | |
| 32 | + | |
| 33 | +\begin{document} | |
| 34 | +\maketitle | |
| 35 | +\thispagestyle{empty} | |
| 36 | + | |
| 37 | +\begin{abstract} | |
| 38 | +\noindent\normalsize | |
| 39 | +We construct a \emph{semantic} measure of artificial-intelligence (AI) engagement for every | |
| 40 | +S\&P~500 firm by embedding the text of its annual SEC filings (Form~10-K) with a sentence | |
| 41 | +transformer and scoring each passage by cosine similarity to professionally curated AI | |
| 42 | +``anchor'' concepts---internal AI adoption, AI infrastructure exposure, and AI product-disruption | |
| 43 | +risk. Linking these scores to monthly equity prices from Yahoo Finance and to the Fama--French | |
| 44 | +factor data, we assemble a panel of \num{7869} firm-years (500 firms, fiscal years 2010--2026) | |
| 45 | +and ask whether the intensity of AI language predicts the cross-section of subsequent returns. | |
| 46 | +Our central result is \textbf{conditional and economically large}. Over the full sample the | |
| 47 | +relation between AI-disclosure intensity and future returns is positive but modest and only | |
| 48 | +marginally significant; a risk-adjusted long--short portfolio earns an insignificant | |
| 49 | +$\sim$2\%/year. After the public launch of ChatGPT (30 November 2022), however, the relation | |
| 50 | +\emph{more than sextuples}: the spread between the top and bottom quintile of AI disclosure rises | |
| 51 | +from $+2.4$ percentage points per year before 2022 to $+14.6$ points per year afterward. The | |
| 52 | +break survives section-weighting choices, alternative signal definitions and horizons, dimension | |
| 53 | +reduction, and---crucially---the exclusion of the ``Magnificent~7'' mega-caps. A battery of | |
| 54 | +identification tests sharpens the interpretation: (i) a \emph{placebo} across five non-AI | |
| 55 | +semantic factors shows the post-2022 jump is specific to AI-related language (ESG and climate | |
| 56 | +disclosure, by contrast, earn \emph{negative} post-2022 spreads); (ii) a market-model | |
| 57 | +\emph{event study} finds that firms with higher pre-event AI disclosure earned $+10.1\%$ higher | |
| 58 | +cumulative abnormal returns over the year after ChatGPT \tstat{1.97}; and (iii) the effect is | |
| 59 | +absorbed by firm fixed effects and roughly halved by sector fixed effects, indicating a | |
| 60 | +\emph{cross-sectional, regime-dependent re-rating}---the market repriced \emph{which firms and | |
| 61 | +sectors} are AI-exposed once AI became salient, rather than rewarding year-to-year changes in any | |
| 62 | +single firm's wording. The findings provide direct, text-based evidence for an attention- and | |
| 63 | +narrative-driven repricing of AI exposure, and illustrate the value of embedding-based disclosure | |
| 64 | +measurement for asset pricing. | |
| 65 | + | |
| 66 | +\vspace{2mm} | |
| 67 | +\noindent\textbf{Keywords:} textual analysis, sentence embeddings, artificial intelligence, | |
| 68 | +disclosure, cross-section of returns, investor attention, event study, generative AI.\\ | |
| 69 | +\noindent\textbf{JEL:} G12, G14, G17, M41, O33. | |
| 70 | +\end{abstract} | |
| 71 | + | |
| 72 | +\clearpage | |
| 73 | +\setcounter{page}{1} | |
| 74 | +\tableofcontents | |
| 75 | +\clearpage | |
| 76 | + | |
| 77 | +\section{Introduction} | |
| 78 | +The arrival of generative artificial intelligence has been the defining corporate-narrative shift | |
| 79 | +of the 2020s. Between the public launch of ChatGPT in late 2022 and 2025, the market | |
| 80 | +capitalization of AI-linked firms swelled by trillions of dollars, ``AI'' became the most | |
| 81 | +frequently invoked theme on earnings calls, and the language of corporate disclosure filled with | |
| 82 | +references to large language models, generative tools, intelligent automation, and the compute | |
| 83 | +infrastructure that powers them. This paper asks a deceptively simple question: did the | |
| 84 | +\emph{language} of AI in firms' mandatory disclosures carry information about their subsequent | |
| 85 | +stock returns---and if so, when and through what channel? | |
| 86 | + | |
| 87 | +Answering this question well requires three ingredients that have only recently become jointly | |
| 88 | +feasible: a large, machine-readable corpus of corporate disclosure; a measurement technology that | |
| 89 | +captures the \emph{meaning} of text rather than the mere frequency of keywords; and a clean | |
| 90 | +mapping from disclosure to tradeable returns. We bring all three to bear. Our laboratory is the | |
| 91 | +universe of S\&P~500 constituents over fiscal years 2010--2026. Our raw material is the full text | |
| 92 | +of their annual reports (Form~10-K), parsed section by section. Our measurement engine is the | |
| 93 | +EDGAR Research Database, which embeds every text chunk with the \texttt{all-MiniLM-L6-v2} sentence | |
| 94 | +transformer and scores it by cosine similarity to a set of carefully written ``anchor'' passages | |
| 95 | +that define eight economic concepts. Three of these anchors isolate distinct facets of AI | |
| 96 | +engagement: \emph{internal AI adoption} (using AI to run the business), \emph{AI infrastructure | |
| 97 | +exposure} (capital tied to AI compute), and \emph{AI product-disruption risk} (the danger that AI | |
| 98 | +commoditizes the firm's offerings). The result is a continuous, comparable, firm-year measure of | |
| 99 | +how intensively---and in what sense---each firm engages with AI in its own words. | |
| 100 | + | |
| 101 | +We pair these semantic scores with monthly adjusted prices for all 500 tickers from Yahoo Finance | |
| 102 | +and with the Fama--French five factors plus momentum. To avoid look-ahead bias we adopt the | |
| 103 | +standard portfolio-formation convention: because a 10-K covering fiscal year $Y$ is public by | |
| 104 | +early in year $Y{+}1$, we form signals at the end of June of $Y{+}1$ and measure the forward | |
| 105 | +twelve-month return from July of $Y{+}1$ to June of $Y{+}2$. The signal is therefore always known | |
| 106 | +before the holding period begins. This yields \num{6852} firm-years with a strictly tradeable | |
| 107 | +forward return, spanning formation years 2010 through 2024. | |
| 108 | + | |
| 109 | +Our headline finding is that the pricing of AI language is \emph{not} a stable factor premium but | |
| 110 | +a \textbf{regime-dependent re-rating that switched on with the generative-AI boom}. For most of | |
| 111 | +the 2010s, sorting S\&P~500 firms on the intensity of their AI disclosure produced only a faint | |
| 112 | +return pattern: the equal-weighted spread between the highest and lowest quintiles averaged about | |
| 113 | +$+2.4$ percentage points per year, and a risk-adjusted long--short portfolio earned an | |
| 114 | +economically small and statistically insignificant alpha. After the launch of ChatGPT in November | |
| 115 | +2022, the same sort produced a spread of $+14.6$ percentage points per year. The cross-sectional | |
| 116 | +re-rating is visible in every post-2022 formation cohort, in a cumulative long--short wealth | |
| 117 | +curve that inflects sharply upward at the end of 2022, and in a year-by-year Fama--MacBeth slope | |
| 118 | +that jumps from near zero to large and positive. | |
| 119 | + | |
| 120 | +A natural worry is that this pattern simply reflects the well-known rally of a handful of | |
| 121 | +technology mega-caps. We address this concern head-on and reject it. The post-2022 spread is | |
| 122 | +$+14.1$ percentage points (\textit{t}=1.9) when the ``Magnificent~7'' are excluded and $+14.5$ | |
| 123 | +points when the ten largest firms by market capitalization are dropped---the effect is | |
| 124 | +broad-based across the index, not an artifact of Nvidia, Microsoft, or their peers. It is robust | |
| 125 | +to using the simple mean, the section-weighted mean, or the top-5\% tail of similarity scores; to | |
| 126 | +six-, twelve-, and twenty-four-month horizons; and to replacing the three AI signals with their | |
| 127 | +first principal component (which alone explains 87\% of their common variation). | |
| 128 | + | |
| 129 | +We then deploy three complementary tests to pin down what the result is---and is not. First, a | |
| 130 | +\emph{placebo} exercise re-runs the entire design on the five non-AI semantic factors in the | |
| 131 | +database (ESG, climate, cybersecurity, automation/labor, and macro risk). If the post-2022 jump | |
| 132 | +merely reflected a generic ``more disclosure earns more'' phenomenon, or a mechanical artifact of | |
| 133 | +our pipeline, every factor should display it. They do not. The post-2022 spread is large and | |
| 134 | +positive for the AI factors, essentially zero for macro-risk language, and \emph{negative} for | |
| 135 | +ESG and climate disclosure---high-ESG firms \emph{underperformed} after 2022. The post-ChatGPT | |
| 136 | +re-rating is specific to AI-related content. Second, we run a market-model \emph{event study} | |
| 137 | +around the 30 November 2022 ChatGPT launch. Firms in the top tercile of pre-event AI disclosure | |
| 138 | +(measured from their FY2021 10-K, the last report filed before the event) earned cumulative | |
| 139 | +abnormal returns $+10.1$ percentage points higher than the bottom tercile over the following year | |
| 140 | +\tstat{1.97} and $+14.6$ points higher over eighteen months. Because abnormal returns are | |
| 141 | +purged of market-beta exposure, this is a clean cross-sectional response to an unanticipated | |
| 142 | +narrative shock. Third, we use two-way fixed effects and difference-in-differences to localize the | |
| 143 | +mechanism. The premium is absorbed by firm fixed effects and roughly halved by sector fixed | |
| 144 | +effects, telling us that the durable signal is the persistent \emph{level} of a firm's (and its | |
| 145 | +sector's) AI exposure relative to peers, not the year-to-year wiggle in its wording. | |
| 146 | + | |
| 147 | +Taken together, the evidence supports an \textbf{attention- and narrative-driven repricing} | |
| 148 | +interpretation. The textual evidence of firms' AI engagement accumulated quietly for a decade and | |
| 149 | +was barely priced. A salient catalyst---the consumer breakthrough of generative AI---then drew | |
| 150 | +investor attention to that pre-existing information, and capital flowed toward the firms and | |
| 151 | +sectors whose disclosures revealed the greatest AI exposure. This is the asset-pricing signature | |
| 152 | +of limited attention and narrative economics, observed not through a sentiment proxy but directly | |
| 153 | +in the semantic content of mandatory disclosure. | |
| 154 | + | |
| 155 | +\paragraph{Contribution.} We make four contributions. \emph{First}, methodologically, we | |
| 156 | +demonstrate the value of embedding-based semantic measurement of disclosure for asset pricing: a | |
| 157 | +cosine-similarity-to-anchor design captures economically meaningful, multi-faceted exposure | |
| 158 | +(adoption vs.\ infrastructure vs.\ risk) that keyword counts cannot, and it does so at scale across | |
| 159 | +the entire S\&P~500 and a decade and a half of filings. \emph{Second}, substantively, we provide | |
| 160 | +the first text-based, look-ahead-free evidence that the cross-sectional pricing of AI exposure is | |
| 161 | +a post-2022 regime phenomenon rather than a long-standing premium. \emph{Third}, we discipline the | |
| 162 | +finding with a placebo across non-AI factors and an event study, distinguishing a genuine | |
| 163 | +AI-specific repricing from a mechanical or market-wide artifact. \emph{Fourth}, we document the | |
| 164 | +\emph{anatomy} of the effect---its concentration in smaller firms, its operation substantially | |
| 165 | +through a sector channel, and its disappearance under firm fixed effects---which sharpens the | |
| 166 | +economic interpretation and warns against naive trading strategies. | |
| 167 | + | |
| 168 | +The remainder of the paper proceeds as follows. Section~\ref{sec:lit} situates the study in five | |
| 169 | +literatures. Section~\ref{sec:hyp} states our hypotheses. Section~\ref{sec:data} describes the | |
| 170 | +data and the construction of the semantic measures. Section~\ref{sec:method} lays out the | |
| 171 | +empirical methodology. Section~\ref{sec:results} presents the main results, and | |
| 172 | +Section~\ref{sec:robust} the robustness and identification tests. Section~\ref{sec:disc} discusses | |
| 173 | +mechanisms, Section~\ref{sec:limits} the limitations, and Section~\ref{sec:concl} concludes. | |
| 174 | + | |
| 175 | +\section{Related Literature}\label{sec:lit} | |
| 176 | +Our study sits at the intersection of five strands of research: textual analysis in finance, the | |
| 177 | +pricing of corporate disclosure, technology and innovation in asset pricing, investor attention | |
| 178 | +and narrative economics, and the nascent literature on the economics of artificial intelligence. | |
| 179 | + | |
| 180 | +\subsection{Textual analysis and natural language processing in finance} | |
| 181 | +A now-large literature extracts economic signals from financial text. The foundational work of | |
| 182 | +\citet{tetlock2007} showed that the tone of a Wall Street Journal column forecasts aggregate | |
| 183 | +returns, and \citet{tetlock2008} extended this to firm-level news. \citet{lm2011} demonstrated | |
| 184 | +that finance-specific sentiment dictionaries materially outperform general-purpose word lists in | |
| 185 | +10-K analysis, launching a wave of dictionary-based studies and the widely used Loughran--McDonald | |
| 186 | +word lists. \citet{lm2016} survey this field. A second generation moved from counting words to | |
| 187 | +modeling them: \citet{gentzkow2019} review text-as-data methods in economics, while | |
| 188 | +\citet{kelly2019textregression} and \citet{bybee2024narrative} use machine-learning | |
| 189 | +representations of news to construct interpretable factors and a ``state of the economy'' from | |
| 190 | +text. Our paper belongs to the most recent, embedding-based generation. Rather than counting AI | |
| 191 | +keywords---which conflate ``we use no AI'' with ``we are an AI leader'' and miss paraphrase---we | |
| 192 | +measure the \emph{semantic similarity} of disclosure to anchor concepts using a sentence | |
| 193 | +transformer \citep{reimers2019sbert}. This follows a growing practice of using contextual | |
| 194 | +embeddings to quantify disclosure content \citep{cong2022textfactor}, and is closest in spirit to | |
| 195 | +similarity-to-concept designs that score documents against reference passages. | |
| 196 | + | |
| 197 | +\subsection{The pricing of corporate disclosure} | |
| 198 | +A parallel literature asks whether the \emph{content} and \emph{changes} of mandatory disclosure | |
| 199 | +predict returns. \citet{cohen2020lazy} show that firms that change the language of their 10-K | |
| 200 | +relative to the prior year (``lazy prices'' when they do not) experience predictable future | |
| 201 | +returns and operating outcomes. \citet{hoberg2010product} and \citet{hobergphillips2016} use 10-K | |
| 202 | +product descriptions to build text-based industry classifications and measures of product-market | |
| 203 | +fluidity that carry asset-pricing content. \citet{lopezlira2023risk} extract risk exposures from | |
| 204 | +10-K risk-factor sections. The general lesson is that the qualitative portions of filings contain | |
| 205 | +value-relevant information that markets process incompletely and with delay. We contribute a | |
| 206 | +focused, concept-level measure---AI engagement---and show that its pricing is strongly | |
| 207 | +state-dependent, a dimension the disclosure-pricing literature has largely left implicit. | |
| 208 | + | |
| 209 | +\subsection{Technology, innovation, and the cross-section of returns} | |
| 210 | +Asset pricing has long sought to connect technological change to risk and return. | |
| 211 | +\citet{hirshleifer2013innovative} show that innovative efficiency predicts returns; | |
| 212 | +\citet{kogan2017technological} build market-based measures of innovation from patents and link | |
| 213 | +them to growth and reallocation. \citet{koganpapanikolaou2014} show that investment-specific | |
| 214 | +technology shocks shape the cross-section. A more recent literature studies AI exposure directly: | |
| 215 | +\citet{babina2024aiinvestment} measure firm-level AI investment from job-posting and resume data | |
| 216 | +and document faster growth among AI-adopting firms; \citet{eisfeldt2023generative} construct a | |
| 217 | +firm-level measure of \emph{generative}-AI exposure from the task content of occupations and show | |
| 218 | +that a generative-AI factor was priced precisely in the weeks around ChatGPT's release. | |
| 219 | +\citet{acemoglu2020wrong} and \citet{webb2020} study the labor-market exposure of firms to AI and | |
| 220 | +automation. Our contribution relative to this work is to measure AI exposure from the firm's | |
| 221 | +\emph{own disclosure}---a self-reported, narrative signal available for the entire index at annual | |
| 222 | +frequency---and to characterize the full time profile of its pricing across a decade and a half, | |
| 223 | +not only the event window. Where \citet{eisfeldt2023generative} use occupation-task exposure, we | |
| 224 | +use the language firms choose, providing a complementary and highly granular measure. | |
| 225 | + | |
| 226 | +\subsection{Investor attention, salience, and narrative economics} | |
| 227 | +Why might value-relevant disclosure be priced only after a catalyst? The behavioral literature | |
| 228 | +offers a clear mechanism: limited investor attention. \citet{barberodean2008} show that retail | |
| 229 | +investors are drawn to attention-grabbing stocks; \citet{da2011} construct a direct attention | |
| 230 | +proxy from Google search and link it to prices; \citet{dellavigna2009} document under-reaction to | |
| 231 | +information released when attention is low; and \citet{hirshleifer2009driven} show that earnings | |
| 232 | +news is underweighted when investors are distracted. \citet{shiller2017narrative} argues that | |
| 233 | +contagious narratives drive major asset-price movements, and \citet{bakerwurgler2006} show that | |
| 234 | +sentiment differentially affects hard-to-value, speculative stocks. Our results provide a sharp | |
| 235 | +illustration: the information about firms' AI engagement existed in filings for years but was | |
| 236 | +repriced abruptly when a salient consumer event---ChatGPT---focused investor attention on AI. The | |
| 237 | +asymmetry we document (AI rewarded, ESG penalized after 2022) is itself consistent with a shift in | |
| 238 | +the prevailing market narrative. | |
| 239 | + | |
| 240 | +\subsection{ESG and climate disclosure as a comparison case} | |
| 241 | +Finally, our placebo design connects to the literature on the pricing of ESG and climate | |
| 242 | +disclosure. \citet{pastor2021sustainable} model how sustainability preferences depress the | |
| 243 | +expected returns of green assets in equilibrium, and \citet{pastor2022dissecting} show that green | |
| 244 | +stocks' strong \emph{realized} returns through 2021 reflected unexpected increases in climate | |
| 245 | +concern rather than high expected returns. \citet{bolton2021risk} document a carbon premium. | |
| 246 | +Consistent with the post-2021 reversal in this literature, we find that high-ESG and high-climate | |
| 247 | +disclosure earned \emph{negative} spreads after 2022, exactly when AI disclosure began to earn | |
| 248 | +large positive ones---underscoring that the post-2022 re-rating reflects a thematic rotation | |
| 249 | +toward AI rather than a generic disclosure effect. | |
| 250 | + | |
| 251 | +\section{Hypotheses}\label{sec:hyp} | |
| 252 | +Our analysis is organized around four hypotheses. | |
| 253 | + | |
| 254 | +\begin{description}[leftmargin=2.4em,style=nextline] | |
| 255 | +\item[H1 (Unconditional pricing).] If AI exposure carries a stable risk premium or persistent | |
| 256 | +mispricing, then sorting on AI-disclosure intensity yields a positive and significant | |
| 257 | +risk-adjusted return spread over the full 2010--2026 sample. | |
| 258 | +\item[H2 (Regime dependence).] If instead AI exposure is repriced only once AI becomes salient, | |
| 259 | +the return spread is small before and large after the late-2022 generative-AI catalyst, with a | |
| 260 | +detectable structural break. | |
| 261 | +\item[H3 (AI-specificity).] If the post-2022 spread reflects a genuine AI repricing rather than a | |
| 262 | +mechanical or market-wide artifact, it appears for AI-related semantic factors but not for | |
| 263 | +unrelated factors (e.g.\ ESG, climate, macro risk). | |
| 264 | +\item[H4 (Cross-sectional, not within-firm).] If the market repriced \emph{which} firms are | |
| 265 | +AI-exposed rather than rewarding incremental wording, the effect is concentrated in the | |
| 266 | +cross-section and attenuates under firm and sector fixed effects. | |
| 267 | +\end{description} | |
| 268 | + | |
| 269 | +\noindent The data, as we show, decisively favor H2--H4 over H1. | |
| 270 | + | |
| 271 | +\section{Data and Variable Construction}\label{sec:data} | |
| 272 | +\subsection{The semantic factor panel} | |
| 273 | +The backbone of our study is the EDGAR Research Database, an infrastructure that downloads, | |
| 274 | +parses, and semantically scores SEC filings for S\&P~500 firms. For each filing the pipeline | |
| 275 | +(i)~extracts the canonical sections (Risk Factors, MD\&A, legal proceedings, financial statements, | |
| 276 | +and so on); (ii)~splits each section into overlapping text chunks; (iii)~embeds every chunk into a | |
| 277 | +384-dimensional vector with the \texttt{all-MiniLM-L6-v2} sentence transformer; and (iv)~scores | |
| 278 | +each chunk by cosine similarity to a set of \emph{anchor} passages defining eight economic | |
| 279 | +concepts. The anchors are short, deliberately written paragraphs that articulate the concept in | |
| 280 | +natural language; for example, the AI-adoption anchor describes a firm ``internally using | |
| 281 | +artificial intelligence, machine learning, generative AI, large language models, automation, | |
| 282 | +predictive analytics \dots to improve productivity, operations, efficiency, decision-making.'' | |
| 283 | +Cosine similarity to such an anchor measures how closely a passage's \emph{meaning} matches the | |
| 284 | +concept, regardless of the exact words used---capturing paraphrase and context in a way keyword | |
| 285 | +counts cannot. | |
| 286 | + | |
| 287 | +Chunk-level scores are aggregated to the filing level using section weights that emphasize the | |
| 288 | +parts of the document where the concept is most likely to be discussed substantively (e.g.\ MD\&A | |
| 289 | +and Risk Factors), and then to the firm-fiscal-year level. For each concept the database reports | |
| 290 | +the mean, maximum, standard deviation, top-5\% tail, and section-weighted mean (\texttt{wmean}) of | |
| 291 | +chunk similarities, along with first and second differences, percentage changes, and three-year | |
| 292 | +rolling statistics. The eight concepts comprise three AI facets---\emph{AI adoption}, \emph{AI | |
| 293 | +infrastructure}, \emph{AI disruption risk}---and five others used as placebos: \emph{ESG | |
| 294 | +commitment}, \emph{climate risk}, \emph{cybersecurity}, \emph{automation/labor}, and \emph{macro | |
| 295 | +risk}. | |
| 296 | + | |
| 297 | +The resulting panel covers all 500 current S\&P~500 members across fiscal years 2010--2026, a | |
| 298 | +total of \num{7869} firm-years. We take the section-weighted mean (\texttt{wmean}) as our headline | |
| 299 | +signal because it up-weights the forward-looking, strategy-rich sections; we verify robustness to | |
| 300 | +the simple mean and the top-5\% tail in Section~\ref{sec:robust}. Our three primary signals are | |
| 301 | +therefore \texttt{ai\_adoption\_wmean} (\textbf{AI\,Adopt}), \texttt{ai\_infrastructure\_wmean} | |
| 302 | +(\textbf{AI\,Infra}), and \texttt{ai\_disruption\_risk\_wmean} (\textbf{AI\,Risk}); we also form a | |
| 303 | +standardized opportunity composite, $\text{AI\,Compos}=\tfrac12[z(\text{AI\,Adopt})+z(\text{AI\,Infra})]$. | |
| 304 | + | |
| 305 | +\subsection{Price and factor data} | |
| 306 | +We download monthly adjusted-close prices for all 500 tickers from Yahoo Finance over 2009--2026 | |
| 307 | +(handling share-class tickers such as BRK.B and BF.B), the SPDR S\&P~500 ETF (SPY) as the market | |
| 308 | +benchmark, and the Fama--French five factors, the momentum factor, and the risk-free rate from the | |
| 309 | +Kenneth R.\ French data library. Monthly simple returns are computed from adjusted prices, which | |
| 310 | +incorporate dividends and splits. A market-capitalization proxy is formed as shares outstanding | |
| 311 | +(from Yahoo Finance) times the historical price; we use it for value-weighting and as a size | |
| 312 | +control, acknowledging the shares-held-constant approximation. | |
| 313 | + | |
| 314 | +\subsection{Timing and the construction of tradeable returns} | |
| 315 | +The single most important design choice in a disclosure--return study is timing. A 10-K covering | |
| 316 | +fiscal year $Y$ becomes public only when filed, typically in February or March of year $Y{+}1$. To | |
| 317 | +guarantee that our signal is in the public information set before any return is measured, we follow | |
| 318 | +the Fama--French portfolio convention: signals from fiscal year $Y$ are used to form portfolios at | |
| 319 | +the \textbf{end of June of $Y{+}1$}, and we measure the \textbf{forward twelve-month return from | |
| 320 | +July of $Y{+}1$ through June of $Y{+}2$}. The roughly three-month gap between the typical filing | |
| 321 | +date and June~30 ensures no look-ahead bias even for late filers. After requiring a valid forward | |
| 322 | +return with adequate monthly coverage, we obtain \num{6852} firm-years spanning formation years | |
| 323 | +2010--2024, with return realizations extending through mid-2026. | |
| 324 | + | |
| 325 | +\subsection{Controls and standardization} | |
| 326 | +For each formation year we compute cross-sectional $z$-scores of every signal, so that all | |
| 327 | +coefficients are expressed per cross-sectional standard deviation and the powerful secular rise in | |
| 328 | +AI language (documented below) is differenced out---in any given year we compare firms to their | |
| 329 | +contemporaneous peers. We control for the three workhorse return determinants: \emph{size} | |
| 330 | +(log market-cap proxy), \emph{momentum} (the firm's own return over the twelve months ending at | |
| 331 | +formation, skipping the last month), and \emph{idiosyncratic volatility} (the annualized standard | |
| 332 | +deviation of monthly returns over the trailing year). In regressions, returns and continuous | |
| 333 | +controls are winsorized at the 1st and 99th percentiles to limit the influence of outliers; in | |
| 334 | +portfolio sorts we use raw returns. | |
| 335 | + | |
| 336 | +\subsection{Summary statistics} | |
| 337 | +Table~\ref{tab:summ} reports summary statistics for the estimation sample. The average forward | |
| 338 | +twelve-month return is 18.6\% (reflecting the strong 2011--2026 bull market for U.S.\ large caps), | |
| 339 | +with a wide cross-sectional dispersion (standard deviation 41.5\%). The AI signals are small in | |
| 340 | +level---cosine similarities of disclosure to narrow anchors---but exhibit meaningful | |
| 341 | +cross-sectional variation. Table~\ref{tab:corr} reports correlations. Two features stand out. | |
| 342 | +First, the three AI signals are highly collinear (pairwise $\rho$ between 0.75 and 0.86): firms | |
| 343 | +that write more about adopting AI also write more about AI infrastructure and AI risk. They are | |
| 344 | +best understood as three lenses on a single latent construct---\emph{AI salience}---a point we | |
| 345 | +formalize with principal-components analysis in Section~\ref{sec:robust}. Second, the raw | |
| 346 | +(unconditional) correlation between each AI signal and the forward return is positive but small | |
| 347 | +($\approx 0.04$), foreshadowing that the unconditional relation is weak and that the action lies in | |
| 348 | +its time variation. | |
| 349 | + | |
| 350 | +\input{tab_summary} | |
| 351 | +\input{tab_corr} | |
| 352 | + | |
| 353 | +\subsection{The secular rise of AI language} | |
| 354 | +Before turning to returns, Figure~\ref{fig:trend} documents the raw phenomenon that motivates our | |
| 355 | +within-year design. The cross-sectional mean similarity to all three AI concepts trended steadily | |
| 356 | +upward through the 2010s and inflected sharply after 2022; by 2025--2026 AI language saturates | |
| 357 | +S\&P~500 disclosure. This is precisely why our tests rely on within-year cross-sectional ranking: | |
| 358 | +the interesting question is not whether the index as a whole talks more about AI over time (it | |
| 359 | +emphatically does), but whether, \emph{in a given year}, firms that talk about AI more than their | |
| 360 | +peers subsequently earn different returns. Figure~\ref{fig:sectorbox} shows that AI disclosure is | |
| 361 | +also unevenly distributed across sectors, concentrated in Information Technology, Communication | |
| 362 | +Services, and Industrials---a fact that will matter for interpreting the sector channel. | |
| 363 | + | |
| 364 | +\begin{figure}[H]\centering | |
| 365 | +\includegraphics[width=0.9\textwidth]{fig4_ai_language_trend.png} | |
| 366 | +\caption{Cross-sectional mean of section-weighted cosine similarity to each AI anchor, by fiscal | |
| 367 | +year. All three measures trend upward and inflect after the 2022 launch of ChatGPT (dashed | |
| 368 | +line).}\label{fig:trend} | |
| 369 | +\end{figure} | |
| 370 | + | |
| 371 | +\begin{figure}[H]\centering | |
| 372 | +\includegraphics[width=0.9\textwidth]{fig12_sector_box.png} | |
| 373 | +\caption{Distribution of the AI-adoption score by GICS sector (box plots, outliers suppressed; red | |
| 374 | +line = median). AI disclosure is concentrated in technology-intensive sectors.}\label{fig:sectorbox} | |
| 375 | +\end{figure} | |
| 376 | + | |
| 377 | +\subsection{Which firms disclose the most AI? Descriptive evidence} | |
| 378 | +Table~\ref{tab:topfirms} lists the ten most AI-intensive S\&P~500 firms by average AI-adoption | |
| 379 | +score over the full sample. The list is instructive in two ways. First, it has strong face | |
| 380 | +validity: it features enterprise-technology and software firms (Hewlett Packard Enterprise, Intel, | |
| 381 | +IBM, Tyler Technologies, Autodesk), an algorithm-centric platform (Uber), and data-intensive | |
| 382 | +financials (BNY Mellon, Berkshire Hathaway), exactly the kinds of firms one would expect to write | |
| 383 | +substantively about deploying AI. Second, the list is \emph{not} confined to the technology sector: | |
| 384 | +industrials (Cummins) and energy (EOG Resources) appear, confirming that intensive AI disclosure | |
| 385 | +cuts across the GICS taxonomy and that our continuous, text-based measure captures within- and | |
| 386 | +cross-sector variation that a sector dummy would miss. | |
| 387 | + | |
| 388 | +A further descriptive fact is central to our interpretation: the AI signal is highly | |
| 389 | +\emph{persistent}. The year-over-year cross-sectional rank autocorrelation of the AI composite is | |
| 390 | +0.88, and even at a five-year horizon it remains 0.73. Firms that are AI-intensive disclosers stay | |
| 391 | +AI-intensive; the measure captures a slow-moving structural characteristic of the firm rather than | |
| 392 | +transient wording. This persistence has two implications we exploit later: it explains why firm | |
| 393 | +fixed effects absorb most of the signal (there is little within-firm variation to identify), and it | |
| 394 | +underpins the difference-in-differences design, in which we fix each firm's exposure at its | |
| 395 | +pre-event level precisely because that level is stable. | |
| 396 | + | |
| 397 | +\input{tab_topfirms} | |
| 398 | + | |
| 399 | +\section{Methodology}\label{sec:method} | |
| 400 | +We bring six complementary research designs to bear, ranging from simple portfolio sorts to a | |
| 401 | +market-model event study. Using multiple designs with different identifying assumptions guards | |
| 402 | +against any single method's weaknesses and lets us triangulate the economic interpretation. | |
| 403 | + | |
| 404 | +\subsection{Portfolio sorts} | |
| 405 | +Each formation year we sort firms into quintiles on a given (within-year standardized) AI signal | |
| 406 | +and compute the equal-weighted (EW) and value-weighted (VW) forward return of each quintile, plus | |
| 407 | +the high-minus-low (Q5$-$Q1) spread. We report the time-series average of the annual spreads and | |
| 408 | +test its significance with Newey--West \citep{neweywest1987} standard errors (three lags) to | |
| 409 | +account for any serial correlation in the overlapping return windows. Sorts are model-free and | |
| 410 | +transparent, and the EW--VW comparison reveals whether an effect is concentrated in larger or | |
| 411 | +smaller firms. | |
| 412 | + | |
| 413 | +\subsection{Factor-model spanning of a long--short portfolio} | |
| 414 | +To ask whether the AI spread survives risk adjustment, we build an annually rebalanced, | |
| 415 | +equal-weighted, self-financing long--short portfolio (top minus bottom quintile), record its | |
| 416 | +monthly return, and regress it on (i)~the CAPM market factor and (ii)~the Fama--French five | |
| 417 | +factors plus momentum (FF6). The intercept (alpha) measures the average return unexplained by | |
| 418 | +known risk factors; we use heteroskedasticity- and autocorrelation-consistent (HAC) standard | |
| 419 | +errors. A significant alpha would indicate pricing beyond standard exposures. | |
| 420 | + | |
| 421 | +\subsection{Two-way fixed-effects panel regressions} | |
| 422 | +We estimate | |
| 423 | +\begin{equation} | |
| 424 | +r_{i,t\to t+12} = \beta\, \text{AI}_{i,t} + \gamma' X_{i,t} + \alpha_i + \delta_t + \varepsilon_{i,t}, | |
| 425 | +\end{equation} | |
| 426 | +where $r$ is the winsorized forward return, $\text{AI}_{i,t}$ the standardized signal, $X$ the | |
| 427 | +controls, and $\alpha_i,\delta_t$ firm and year fixed effects. Standard errors are double-clustered | |
| 428 | +by firm and year \citep{petersen2009,cameron2011}. Firm fixed effects absorb all | |
| 429 | +time-invariant cross-firm differences, so $\beta$ identifies whether \emph{within-firm} changes in | |
| 430 | +AI language predict returns; year fixed effects absorb common shocks. Contrasting this estimate | |
| 431 | +with the cross-sectional ones isolates whether the signal lives across or within firms (H4). | |
| 432 | + | |
| 433 | +\subsection{Fama--MacBeth regressions} | |
| 434 | +We also run annual cross-sectional regressions of the forward return on the AI signal and controls | |
| 435 | +and average the slopes \`a la \citet{famamacbeth1973}, with Newey--West errors on the time series of | |
| 436 | +coefficients. This estimator weights each year equally and yields an interpretable | |
| 437 | +per-standard-deviation premium; plotting the annual slopes reveals the time profile of the premium | |
| 438 | +directly. | |
| 439 | + | |
| 440 | +\subsection{Structural-break and difference-in-differences designs} | |
| 441 | +To test regime dependence (H2) we split the sample at the 30~November 2022 ChatGPT launch and | |
| 442 | +compare sub-period spreads, and we estimate pooled interaction models of the form | |
| 443 | +$r = \beta_1 \text{AI} + \beta_2 (\text{AI}\times \text{Post}) + \gamma' X + \varepsilon$, where | |
| 444 | +$\text{Post}=\mathbb{1}[\text{formation year}\ge 2022]$ and $\beta_2$ captures the change in the | |
| 445 | +premium. We complement this with a difference-in-differences design in which treatment is the | |
| 446 | +firm's \emph{pre-determined} AI exposure---fixed at its 2019--2021 average so it cannot respond to | |
| 447 | +the event---interacted with Post, within firm and year fixed effects. An event-time version | |
| 448 | +interacts pre-determined exposure with each year dummy (relative to 2021) to trace the dynamic | |
| 449 | +response. | |
| 450 | + | |
| 451 | +\subsection{Market-model event study} | |
| 452 | +Finally, we run a classic event study \citep{mackinlay1997} around the ChatGPT launch. For each | |
| 453 | +stock we estimate a market model ($r_{i,d}=a_i+b_i r^{m}_{d}+e_{i,d}$) over the estimation window | |
| 454 | +January--October 2022 and compute daily abnormal returns $\text{AR}_{i,d}=r_{i,d}-(\hat a_i+\hat | |
| 455 | +b_i r^m_d)$ over the event window November 2022--June 2024. Cumulative abnormal returns (CAR) are | |
| 456 | +compared across terciles of \emph{pre-event} AI disclosure (from the FY2021 10-K), and we regress | |
| 457 | +firm-level CAR on pre-event exposure with size, beta, and sector controls. Because abnormal | |
| 458 | +returns net out market-beta exposure, the event study isolates the cross-sectional response to the | |
| 459 | +AI-narrative shock from the contemporaneous (and initially negative) market drift of 2022--2023. | |
| 460 | + | |
| 461 | +\section{Results}\label{sec:results} | |
| 462 | +\subsection{Portfolio sorts: a weak unconditional relation} | |
| 463 | +Table~\ref{tab:sorts} reports the quintile sorts over the full sample. The relation between AI | |
| 464 | +disclosure and future returns is positive and broadly monotone but economically modest. The | |
| 465 | +equal-weighted Q5$-$Q1 spread is $+4.6$ percentage points per year for AI adoption \tstat{1.83}, | |
| 466 | +$+3.9$ for AI infrastructure \tstat{1.58}, $+5.3$ for AI disruption risk \tstat{2.27}, and $+4.9$ | |
| 467 | +for the composite \tstat{1.88}. Value-weighting attenuates the adoption and composite spreads, | |
| 468 | +indicating the effect is stronger among smaller index members. The left panel of | |
| 469 | +Figure~\ref{fig:quint} displays the full-sample pattern: returns rise gently from the lowest to | |
| 470 | +the highest AI quintile. On its own, this is suggestive but far from decisive evidence---and, as | |
| 471 | +we now show, it averages over two very different regimes. | |
| 472 | + | |
| 473 | +\input{tab_sorts} | |
| 474 | + | |
| 475 | +\subsection{Does AI disclosure earn risk-adjusted alpha unconditionally? (H1)} | |
| 476 | +Table~\ref{tab:alpha} reports CAPM and FF6 alphas of the long--short portfolios. The | |
| 477 | +AI-opportunity composite earns a raw spread of about $+2.3\%$ per year, of which the FF6 alpha is | |
| 478 | +$+1.9\%$---but statistically insignificant \tstat{1.24}. The AI-adoption and AI-infrastructure | |
| 479 | +long--shorts are similarly insignificant after risk adjustment. The one exception is the | |
| 480 | +AI-disruption-risk spread, whose FF6 alpha of $+2.8\%$ per year is marginally significant | |
| 481 | +\tstat{2.10}, hinting at a small risk premium for firms that flag AI as a competitive threat. The | |
| 482 | +factor loadings (not the focus here) show the AI long--short is roughly market-neutral with modest | |
| 483 | +negative profitability (RMW) and investment (CMA) tilts, consistent with a growth-oriented long | |
| 484 | +leg. The verdict on H1 is clear: \textbf{unconditionally, AI disclosure is at best weakly | |
| 485 | +priced.} This is not the end of the story but the beginning of it. | |
| 486 | + | |
| 487 | +\input{tab_alpha} | |
| 488 | + | |
| 489 | +\subsection{Panel and Fama--MacBeth estimates} | |
| 490 | +Table~\ref{tab:panel} juxtaposes the two-way fixed-effects panel with the Fama--MacBeth estimator. | |
| 491 | +The contrast is instructive. In the Fama--MacBeth (cross-sectional) regressions, the AI-adoption | |
| 492 | +and AI-infrastructure premia are positive---$+1.3$ and $+1.6$ percentage points per | |
| 493 | +standard-deviation---with \textit{t}-statistics near 1.6--1.7, indicating a weak but positive | |
| 494 | +cross-sectional premium on average. In the two-way fixed-effects panel, however, every AI | |
| 495 | +coefficient collapses to essentially zero. Because firm fixed effects remove all permanent | |
| 496 | +cross-firm differences, this tells us the signal lives \emph{across} firms, not \emph{within} | |
| 497 | +them: a given firm writing relatively more about AI from one year to the next does not predict its | |
| 498 | +own subsequent return (anticipating H4). Throughout, size carries the familiar negative premium | |
| 499 | +($t\approx-8$) and volatility a positive one, consistent with the broader cross-sectional | |
| 500 | +literature in this large-cap universe. | |
| 501 | + | |
| 502 | +\input{tab_panel} | |
| 503 | + | |
| 504 | +\subsection{The structural break: AI pricing switched on after ChatGPT (H2)} | |
| 505 | +The full-sample averages mask a sharp regime change that is the paper's central result. Splitting | |
| 506 | +the sample at the November 2022 ChatGPT launch, the center and right panels of | |
| 507 | +Figure~\ref{fig:quint} reveal a striking transformation: the quintile pattern is nearly flat | |
| 508 | +before 2022 and steeply increasing afterward. The high-minus-low composite spread is $+2.4$ | |
| 509 | +percentage points per year pre-ChatGPT but $+14.6$ points per year post-ChatGPT---a more than | |
| 510 | +sixfold increase. | |
| 511 | + | |
| 512 | +\begin{figure}[H]\centering | |
| 513 | +\includegraphics[width=\textwidth]{fig1_quintile_returns.png} | |
| 514 | +\caption{Mean forward twelve-month return by AI-disclosure composite quintile, full sample and by | |
| 515 | +sub-period. The high-minus-low spread is $+2.4$ percentage points before ChatGPT and $+14.6$ points | |
| 516 | +after.}\label{fig:quint} | |
| 517 | +\end{figure} | |
| 518 | + | |
| 519 | +Table~\ref{tab:break} quantifies the break two ways. In sub-period sorts, the AI-adoption Q5$-$Q1 | |
| 520 | +spread rises from $+2.2\%$ per year \tstat{2.04} pre-2022 to $+14.3\%$ \tstat{2.15} post-2022; the | |
| 521 | +composite rises from $+2.5\%$ to $+14.6\%$; AI infrastructure from $+1.4\%$ to $+13.6\%$. In the | |
| 522 | +pooled interaction regressions, the post-2022 incremental slope is positive for all three signals | |
| 523 | +and statistically significant for AI infrastructure \tstat{2.63}---the facet most directly tied to | |
| 524 | +the chip, cloud, data-center, and power firms that led the 2023--2025 rally. Figure~\ref{fig:spread} | |
| 525 | +shows the annual spreads: small and mixed-sign through 2021, uniformly large and positive for every | |
| 526 | +post-2022 cohort. | |
| 527 | + | |
| 528 | +\input{tab_break} | |
| 529 | + | |
| 530 | +\begin{figure}[H]\centering | |
| 531 | +\includegraphics[width=0.9\textwidth]{fig3_annual_spread.png} | |
| 532 | +\caption{Annual high-minus-low (Q5$-$Q1) forward-return spread on the AI-disclosure composite, by | |
| 533 | +10-K fiscal year. Post-ChatGPT cohorts (red) are uniformly and substantially positive.}\label{fig:spread} | |
| 534 | +\end{figure} | |
| 535 | + | |
| 536 | +The same regime change is visible in two further lenses. Figure~\ref{fig:cum} plots the cumulative | |
| 537 | +value of one dollar invested in the equal-weighted, annually rebalanced, self-financing | |
| 538 | +high-minus-low portfolio: it drifts sideways-to-up for a decade and then inflects upward after the | |
| 539 | +dashed ChatGPT line. Figure~\ref{fig:fmyear} plots the year-by-year Fama--MacBeth slope on the AI | |
| 540 | +composite (with controls): it hovers near zero for the entire 2010s and then turns sharply | |
| 541 | +positive, peaking in the 2024 cohort. The latter figure also delivers an important nuance: the | |
| 542 | +size-controlled premium is largest in the most recent cohort, consistent with the AI | |
| 543 | +\emph{infrastructure} super-cycle of 2024--2025 (the build-out of data centers and accelerated | |
| 544 | +compute). We return to this concentration when discussing limitations. | |
| 545 | + | |
| 546 | +\begin{figure}[H]\centering | |
| 547 | +\includegraphics[width=0.86\textwidth]{fig2_cumulative_ls.png} | |
| 548 | +\caption{Cumulative value of \$1 invested in the equal-weighted, annually rebalanced, self-financing | |
| 549 | +high-minus-low AI-disclosure portfolio (AI opportunity composite and AI disruption-risk).}\label{fig:cum} | |
| 550 | +\end{figure} | |
| 551 | + | |
| 552 | +\begin{figure}[H]\centering | |
| 553 | +\includegraphics[width=0.9\textwidth]{fig6_fm_byyear.png} | |
| 554 | +\caption{Year-by-year Fama--MacBeth slope on the AI-disclosure composite (forward return per | |
| 555 | +cross-sectional standard deviation), controlling for size, momentum, and volatility. Bars are | |
| 556 | +$\pm1$ standard error.}\label{fig:fmyear} | |
| 557 | +\end{figure} | |
| 558 | + | |
| 559 | +Finally, Figure~\ref{fig:bin} confirms the pattern is not an artifact of a few influential | |
| 560 | +observations: the binned relation between the AI composite and forward returns is essentially flat | |
| 561 | +in the pre-ChatGPT sub-period and distinctly upward-sloping afterward, across the entire | |
| 562 | +distribution of AI disclosure rather than only at the extreme quintiles. | |
| 563 | + | |
| 564 | +\begin{figure}[H]\centering | |
| 565 | +\includegraphics[width=\textwidth]{fig5_binscatter.png} | |
| 566 | +\caption{Binned scatter of forward twelve-month return against the AI-disclosure composite, by | |
| 567 | +sub-period. Each point is a portfolio of firms in a bin of the AI signal; the line is an OLS fit. | |
| 568 | +The conditional slope steepens markedly after ChatGPT.}\label{fig:bin} | |
| 569 | +\end{figure} | |
| 570 | + | |
| 571 | +\subsection{The anatomy of the premium: size and sector} | |
| 572 | +Where in the cross-section does the post-2022 premium concentrate? Table~\ref{tab:doublesort} and | |
| 573 | +Figure~\ref{fig:double} report an AI~$\times$~size double sort. Before 2022 the AI gradient is flat | |
| 574 | +within both size halves. After 2022 it is steep, and dramatically so among smaller firms: small, | |
| 575 | +high-AI firms earned a mean forward return of 34.6\%, versus 19.5\% for small, low-AI firms---a | |
| 576 | +15-point gap---while the corresponding gap among large firms is 7 points. The premium is thus | |
| 577 | +\emph{not} merely a mega-cap phenomenon (a point we reinforce in Section~\ref{sec:robust}); if | |
| 578 | +anything it is strongest among the smaller, less-followed names, consistent with an | |
| 579 | +attention-based mechanism in which information diffuses more slowly into smaller stocks. | |
| 580 | + | |
| 581 | +\input{tab_doublesort} | |
| 582 | + | |
| 583 | +\begin{figure}[H]\centering | |
| 584 | +\includegraphics[width=\textwidth]{fig9_double_sort.png} | |
| 585 | +\caption{AI-disclosure $\times$ firm-size double sort: mean forward twelve-month return by AI | |
| 586 | +tercile within small and large firms, pre- and post-ChatGPT.}\label{fig:double} | |
| 587 | +\end{figure} | |
| 588 | + | |
| 589 | +\subsection{Economic significance} | |
| 590 | +The statistical break is matched by an economic one. The Sharpe ratio of the equal-weighted | |
| 591 | +AI-composite long--short portfolio---a direct gauge of risk-adjusted attractiveness---rises from | |
| 592 | +0.15 in the pre-ChatGPT decade to 1.33 afterward; for the AI-disruption-risk spread it rises from | |
| 593 | +0.33 to 1.15. A Sharpe ratio above one is exceptional for a single-characteristic, self-financing | |
| 594 | +equity strategy, and its emergence precisely at the ChatGPT boundary is hard to reconcile with a | |
| 595 | +constant risk premium. The point estimates in the quintile sorts are equally vivid: a 14-point | |
| 596 | +annual spread between the top and bottom AI quintiles is roughly three times the unconditional | |
| 597 | +equity risk premium and an order of magnitude larger than the pre-2022 spread. Even acknowledging | |
| 598 | +that a portion of this reflects the higher realized volatility of AI-exposed firms (documented in | |
| 599 | +Section~\ref{sec:robust}) and the broad technology rally, the magnitude of the post-2022 re-rating | |
| 600 | +is among the largest single-theme cross-sectional effects in the recent asset-pricing record. The | |
| 601 | +contrast between an essentially flat pre-period and a near-vertical post-period is, to us, the most | |
| 602 | +compelling single piece of evidence that a genuine regime change occurred. | |
| 603 | + | |
| 604 | +\section{Robustness and Identification}\label{sec:robust} | |
| 605 | +The structural break is economically large; this section asks how much we should believe it. We | |
| 606 | +subject it to a placebo across non-AI factors, an event study, a difference-in-differences design, | |
| 607 | +and a battery of construction and universe robustness checks. | |
| 608 | + | |
| 609 | +\subsection{Placebo: is the effect specific to AI? (H3)} | |
| 610 | +If the post-2022 spread were a mechanical artifact of our pipeline---or a generic ``high-disclosure | |
| 611 | +firms did well'' phenomenon---it should appear for any semantic factor. Table~\ref{tab:placebo} and | |
| 612 | +Figure~\ref{fig:placebo} re-run the entire sub-period and interaction design on all eight factors. | |
| 613 | +The result strongly supports AI-specificity. The three AI factors show large positive post-2022 | |
| 614 | +spreads ($+13.6$ to $+14.3$ points). Macro-risk language shows essentially no spread ($-0.5$, | |
| 615 | +$t=-0.1$). And, strikingly, ESG-commitment and climate-risk disclosure earn \emph{negative} | |
| 616 | +post-2022 spreads ($-8.8$ and $-5.0$ points, both significant)---high-ESG firms \emph{underperformed} | |
| 617 | +after 2022, in line with the post-2021 reversal in the sustainable-investing literature | |
| 618 | +\citep{pastor2022dissecting}. The one non-AI factor that does show a large positive post-2022 | |
| 619 | +spread is cybersecurity ($+13.5$); we read this not as a violation but as confirmation, since | |
| 620 | +cybersecurity disclosure is tightly bundled with technology exposure and is itself increasingly | |
| 621 | +AI-related. The cleanest contrast---AI rewarded, ESG and climate penalized---makes a powerful case | |
| 622 | +that the post-ChatGPT re-rating reflects a thematic rotation \emph{toward AI}, not a generic | |
| 623 | +disclosure effect. | |
| 624 | + | |
| 625 | +\input{tab_placebo} | |
| 626 | + | |
| 627 | +\begin{figure}[H]\centering | |
| 628 | +\includegraphics[width=0.92\textwidth]{fig7_placebo.png} | |
| 629 | +\caption{Placebo test: post-ChatGPT high-minus-low return spread for each of the eight semantic | |
| 630 | +factors. AI-related factors (red) cluster at the top; ESG and climate disclosure earn negative | |
| 631 | +spreads.}\label{fig:placebo} | |
| 632 | +\end{figure} | |
| 633 | + | |
| 634 | +\subsection{Event study around ChatGPT} | |
| 635 | +The portfolio results use annual formation and forward returns; the event study provides a | |
| 636 | +higher-frequency, cleanly identified complement. Table~\ref{tab:event} and Figure~\ref{fig:event} | |
| 637 | +report market-model cumulative abnormal returns by pre-event AI tercile. The ordering is monotone | |
| 638 | +at every horizon and widens steadily over time. The High-minus-Low CAR difference is $+2.9$ points | |
| 639 | +at 60 trading days \tstat{1.77}, $+10.1$ points at one year \tstat{1.97}, and $+14.6$ points at | |
| 640 | +eighteen months \tstat{1.89}. Because these are abnormal returns---purged of each firm's market | |
| 641 | +beta---the spread cannot be attributed to high-AI firms simply being higher-beta in a recovering | |
| 642 | +market. A cross-sectional regression of one-year CAR on pre-event AI exposure yields $+3.1$ points | |
| 643 | +per standard deviation \tstat{1.39}; adding sector fixed effects halves it to $+2.1$ points | |
| 644 | +\tstat{0.99}, again locating much---but not all---of the effect in a sector channel. | |
| 645 | +Figure~\ref{fig:eventbin} shows the relation is smooth across the exposure distribution, not driven | |
| 646 | +by a few outliers. | |
| 647 | + | |
| 648 | +\input{tab_event} | |
| 649 | + | |
| 650 | +\begin{figure}[H]\centering | |
| 651 | +\includegraphics[width=\textwidth]{fig8_event_car.png} | |
| 652 | +\caption{ChatGPT event study. Left: mean cumulative abnormal return (market model) by pre-event AI | |
| 653 | +tercile. Right: the High$-$Low CAR spread.}\label{fig:event} | |
| 654 | +\end{figure} | |
| 655 | + | |
| 656 | +\begin{figure}[H]\centering | |
| 657 | +\includegraphics[width=0.66\textwidth]{fig13_event_binscatter.png} | |
| 658 | +\caption{One-year cumulative abnormal return after ChatGPT versus pre-event AI exposure (binned | |
| 659 | +scatter with fitted line).}\label{fig:eventbin} | |
| 660 | +\end{figure} | |
| 661 | + | |
| 662 | +\subsection{Difference-in-differences and the cross-sectional nature of the effect (H4)} | |
| 663 | +Table~\ref{tab:did} reports difference-in-differences estimates in which treatment is the firm's | |
| 664 | +pre-determined (2019--2021) AI exposure interacted with the post-2022 indicator, within firm and | |
| 665 | +year fixed effects. The continuous-exposure DiD coefficient is $+2.7$ percentage points per | |
| 666 | +standard deviation \tstat{1.51}; the binary version is $+1.7$ points \tstat{0.78}. These are | |
| 667 | +positive and economically meaningful but weaker than the cross-sectional estimates---exactly the | |
| 668 | +pattern predicted by H4. Once firm fixed effects absorb the permanent component of AI exposure, | |
| 669 | +only the residual within-firm variation identifies the effect, and that variation is small. The | |
| 670 | +event-time profile in Figure~\ref{fig:eventtime} reinforces this reading: the return premium on a | |
| 671 | +firm's \emph{fixed} pre-event AI exposure is flat and near zero through 2021 and jumps after 2022, | |
| 672 | +peaking in 2024. The market did not reward firms for adding AI sentences to their filings; it | |
| 673 | +repriced the firms whose pre-existing, persistent exposure made them AI winners once the narrative | |
| 674 | +turned. | |
| 675 | + | |
| 676 | +\input{tab_did} | |
| 677 | + | |
| 678 | +\begin{figure}[H]\centering | |
| 679 | +\includegraphics[width=0.82\textwidth]{fig11_eventtime.png} | |
| 680 | +\caption{Event-study coefficients: the return premium on pre-determined (2019--2021) AI exposure by | |
| 681 | +year (95\% confidence intervals), relative to 2021. The premium activates after ChatGPT.}\label{fig:eventtime} | |
| 682 | +\end{figure} | |
| 683 | + | |
| 684 | +\subsection{Construction, horizon, and universe robustness} | |
| 685 | +Table~\ref{tab:robust} collects the remaining checks. The post-2022 spread is essentially unchanged | |
| 686 | +whether the signal is the section-weighted mean (base, $+14.6$), the simple mean ($+13.4$), or the | |
| 687 | +top-5\% tail ($+14.9$). It holds at six-, twelve-, and twenty-four-month horizons (growing with the | |
| 688 | +horizon, as a persistent premium should). It survives replacing the three AI signals with their | |
| 689 | +first principal component---which alone explains 86.8\% of their common variance, confirming the | |
| 690 | +``single latent AI construct'' interpretation---yielding a post-2022 PC1 spread of $+13.4$ points | |
| 691 | +\tstat{1.97}. Most importantly for the mega-cap concern, the spread is $+14.1$ points \tstat{1.92} | |
| 692 | +when the Magnificent~7 are excluded and $+14.5$ points \tstat{1.93} when the ten largest firms are | |
| 693 | +dropped (Figure~\ref{fig:mag7}). The AI re-rating is a broad-based feature of the index, not the | |
| 694 | +mechanical footprint of a handful of trillion-dollar winners. Finally, the sector-neutral | |
| 695 | +composite---which compares firms only to others \emph{within} their GICS sector---produces a much | |
| 696 | +smaller and insignificant post-2022 spread ($+3.8$ points, $t=0.84$). This is not a failure of the | |
| 697 | +result but a sharpening of it: a large share of the AI premium operates through a | |
| 698 | +\emph{between-sector} channel, as the market re-rated AI-exposed sectors (technology above all) | |
| 699 | +relative to others, with a smaller within-sector residual. | |
| 700 | + | |
| 701 | +\input{tab_robust} | |
| 702 | + | |
| 703 | +\begin{figure}[H]\centering | |
| 704 | +\includegraphics[width=0.78\textwidth]{fig10_mag7.png} | |
| 705 | +\caption{Robustness of the AI return spread to excluding mega-cap winners. The post-2022 composite | |
| 706 | +spread is stable when the Magnificent~7 or the ten largest firms are removed.}\label{fig:mag7} | |
| 707 | +\end{figure} | |
| 708 | + | |
| 709 | +\subsection{An alternative performance outcome: risk} | |
| 710 | +Performance is not only about mean returns. We also relate AI disclosure to subsequent realized | |
| 711 | +volatility. High-AI firms exhibit modestly higher forward volatility, and the gap widens after | |
| 712 | +2022 (a Q5$-$Q1 difference of about 2.9 annualized volatility points, $t=3.1$). The post-2022 AI | |
| 713 | +premium therefore came bundled with somewhat higher risk---part, though by no means all, of the | |
| 714 | +elevated returns is compensation for the greater volatility of AI-exposed firms during a period of | |
| 715 | +rapid technological repricing. | |
| 716 | + | |
| 717 | +\section{Discussion: Mechanism and Interpretation}\label{sec:disc} | |
| 718 | +What economic mechanism best fits this constellation of facts? We find an \emph{attention- and | |
| 719 | +narrative-driven repricing} the most parsimonious explanation, and we read the evidence as follows. | |
| 720 | + | |
| 721 | +\paragraph{The information pre-existed; the attention did not.} Firms disclosed their AI engagement | |
| 722 | +for years before it was priced. The semantic content of those disclosures was, in cross-section, | |
| 723 | +only faintly related to returns through 2021. What changed in late 2022 was not the information but | |
| 724 | +its \emph{salience}: a consumer breakthrough (ChatGPT) made AI the dominant market narrative | |
| 725 | +\citep{shiller2017narrative}, drawing investor attention \citep{da2011,barberodean2008} to a body | |
| 726 | +of disclosure that had been hiding in plain sight. The abrupt, near-simultaneous repricing across | |
| 727 | +the cross-section---visible in the event study within months of the launch---is the signature of an | |
| 728 | +attention shock rather than the gradual accrual of a risk premium. | |
| 729 | + | |
| 730 | +\paragraph{It is a re-rating of levels, not of changes.} The disappearance of the effect under firm | |
| 731 | +fixed effects, the muted difference-in-differences estimates, and the event-time profile all point | |
| 732 | +the same way: the market repriced the persistent \emph{level} of a firm's AI exposure, not the | |
| 733 | +year-to-year change in its wording. This has a clear practical corollary---firms cannot | |
| 734 | +mechanically earn the premium by adding AI boilerplate to their filings (and our top-5\% and | |
| 735 | +simple-mean robustness suggests the measure is not easily gamed)---and a clear methodological one: | |
| 736 | +studies that difference out firm effects will understate the cross-sectional importance of | |
| 737 | +disclosure content. | |
| 738 | + | |
| 739 | +\paragraph{It operates substantially, but not entirely, through sectors.} The sector-neutral and | |
| 740 | +sector-fixed-effects results show that much of the AI premium reflects the re-rating of AI-exposed | |
| 741 | +\emph{sectors}---technology, communication services, and the industrial firms supplying the AI | |
| 742 | +build-out---relative to the rest of the index. This is economically sensible: the generative-AI | |
| 743 | +boom was, to first order, a sectoral reallocation of expected cash flows and valuations. Yet a | |
| 744 | +positive within-sector residual remains in the event study, indicating that the firm's own | |
| 745 | +disclosure carried incremental information even among industry peers. | |
| 746 | + | |
| 747 | +\paragraph{The thematic asymmetry is telling.} Perhaps the most revealing single fact is the | |
| 748 | +placebo: in the very same post-2022 window, high-AI firms were rewarded while high-ESG and | |
| 749 | +high-climate firms were penalized. Markets did not simply reward verbose or virtuous-sounding | |
| 750 | +disclosure; they rotated toward one theme (AI) and away from another (sustainability). This is | |
| 751 | +difficult to reconcile with a purely mechanical or risk-based account and natural under a | |
| 752 | +narrative-rotation view of investor attention. | |
| 753 | + | |
| 754 | +\paragraph{Relation to the AI-asset-pricing literature.} Our findings complement | |
| 755 | +\citet{eisfeldt2023generative}, who show that an occupation-task measure of generative-AI exposure | |
| 756 | +was priced around ChatGPT. We reach a convergent conclusion from an entirely different | |
| 757 | +measurement---firms' own disclosure language---and extend it along the time dimension, showing that | |
| 758 | +the same exposure was \emph{un}priced for a decade beforehand. The agreement of two independent | |
| 759 | +measures on the timing and sign of the effect strengthens confidence that a real AI repricing | |
| 760 | +occurred. | |
| 761 | + | |
| 762 | +\subsection{Implications} | |
| 763 | +Our findings carry distinct implications for three audiences. \emph{For investors and quantitative | |
| 764 | +strategists}, the results are a caution as much as an opportunity. The AI-disclosure signal | |
| 765 | +delivered a striking post-2022 Sharpe ratio, but the same signal was nearly inert for the preceding | |
| 766 | +decade, and the effect is absorbed by firm fixed effects---so a strategy that traded on | |
| 767 | +year-to-year changes in AI verbosity would have captured little. The tradeable content lies in the | |
| 768 | +persistent cross-sectional \emph{level} of AI exposure, and even that is partly a sector bet whose | |
| 769 | +durability is unproven. The honest reading is that disclosure-based AI signals are best viewed as a | |
| 770 | +lens on a regime-dependent theme rather than as a stable alpha source. \emph{For corporate managers | |
| 771 | +and disclosure policy}, the asymmetry between AI (rewarded) and ESG/climate (penalized) after 2022 | |
| 772 | +illustrates how powerfully the prevailing market narrative conditions the valuation consequences of | |
| 773 | +what firms choose to emphasize. Because the premium attaches to persistent, hard-to-fake exposure | |
| 774 | +rather than to boilerplate, the result does not invite cheap disclosure manipulation; but it does | |
| 775 | +suggest that the market reads filings for genuine strategic content and reprices it when attention | |
| 776 | +turns. \emph{For researchers}, the study demonstrates that embedding-based semantic measurement | |
| 777 | +uncovers pricing dynamics invisible to both keyword counts (which cannot distinguish meaning) and | |
| 778 | +firm-differenced panels (which discard the persistent cross-sectional variation that turns out to | |
| 779 | +matter). The broader agenda---measuring multi-faceted, concept-level exposure from disclosure at | |
| 780 | +scale and studying its state-dependent pricing---appears fertile. | |
| 781 | + | |
| 782 | +\subsection{Summary of the evidence across designs} | |
| 783 | +It is worth stepping back to see how the designs corroborate one another, since each has different | |
| 784 | +weaknesses. The portfolio sorts establish the raw magnitude and its post-2022 timing but are | |
| 785 | +model-free and could in principle reflect risk; the factor-model spanning regressions show the | |
| 786 | +unconditional spread is not explained by standard factors yet is statistically weak over the full | |
| 787 | +sample; the sub-period and interaction tests localize the effect to the post-ChatGPT regime; the | |
| 788 | +placebo rules out a mechanical or generic-disclosure explanation by showing the opposite sign for | |
| 789 | +ESG and climate; the event study, using daily abnormal returns purged of beta, provides | |
| 790 | +cleanly-timed, cross-sectional confirmation within months of the catalyst; and the fixed-effects | |
| 791 | +and difference-in-differences estimates pin down that the priced object is persistent firm- and | |
| 792 | +sector-level exposure, not incremental wording. No single design is decisive, but their | |
| 793 | +convergence---on the same sign, the same timing, and a consistent economic story---is what gives us | |
| 794 | +confidence in the conclusion. A spurious result would have to survive all six designs | |
| 795 | +simultaneously while also producing the precise ESG/climate sign reversal, which strains credulity. | |
| 796 | + | |
| 797 | +\section{Limitations}\label{sec:limits} | |
| 798 | +Several caveats temper our conclusions. \emph{First}, the post-2022 window contains only three | |
| 799 | +formation cohorts, and the size-controlled premium is concentrated in the most recent (2024) | |
| 800 | +cohort, which captures the 2024--2025 AI-infrastructure capital-expenditure boom. The regime result | |
| 801 | +is economically large and consistent across designs (sorts, event study, DiD), but its post-period | |
| 802 | +rests on a short sample and could in principle reflect a single extraordinary episode rather than a | |
| 803 | +durable new regime; only future data can settle this. \emph{Second}, our universe is current | |
| 804 | +S\&P~500 membership, which introduces survivorship and look-ahead-at-the-index-level bias: firms | |
| 805 | +that exited the index are absent, and current members were selected partly on past success. This | |
| 806 | +biases the level of returns upward but is less likely to drive the \emph{cross-sectional} | |
| 807 | +AI--return relation that is our focus. \emph{Third}, the market-capitalization proxy holds shares | |
| 808 | +outstanding at their latest value, approximating historical size with error. \emph{Fourth}, the | |
| 809 | +semantic anchors, though carefully written, embed the authors' definitional choices; different | |
| 810 | +anchor wording would yield somewhat different scores, although the robustness to mean/tail | |
| 811 | +aggregations and to PCA mitigates this concern. \emph{Fifth}, disclosure intensity is correlated | |
| 812 | +with sector, and while our within-year, size-, momentum-, and volatility-controlled tests and the | |
| 813 | +sector-FE event study address this, we cannot fully separate ``AI exposure'' from ``technology | |
| 814 | +sector'' as the priced characteristic---indeed, our sector-channel results suggest the two are | |
| 815 | +deeply intertwined. \emph{Finally}, our designs establish a robust association and an | |
| 816 | +event-study-based timing argument, but not strict causality; the attention-repricing interpretation | |
| 817 | +is the most consistent with the evidence rather than the only logically possible one. | |
| 818 | + | |
| 819 | +\section{Conclusion}\label{sec:concl} | |
| 820 | +Using a semantic, embedding-based measure of artificial-intelligence language in the SEC filings of | |
| 821 | +S\&P~500 firms, linked to Yahoo Finance returns and standard factor data, we have shown that the | |
| 822 | +pricing of AI disclosure is a \emph{conditional, regime-dependent} phenomenon. For most of the | |
| 823 | +2010s, how intensively a firm wrote about adopting, building, or being threatened by AI bore only a | |
| 824 | +faint relation to its subsequent returns, and a risk-adjusted long--short strategy earned no | |
| 825 | +reliable alpha. After the launch of ChatGPT in late 2022, the same disclosure became strongly | |
| 826 | +priced: the high-minus-low AI-disclosure return spread jumped from roughly $+2$ to roughly $+15$ | |
| 827 | +percentage points per year. The break is robust to signal definition, horizon, dimension reduction, | |
| 828 | +and the exclusion of mega-cap winners; it is specific to AI-related language (ESG and climate | |
| 829 | +disclosure, tested identically, were \emph{penalized} in the same window); it is corroborated by a | |
| 830 | +market-model event study in which high-AI firms earned $+10$ points of additional abnormal return | |
| 831 | +in the year after ChatGPT; and it operates as a cross-sectional re-rating of persistent firm- and | |
| 832 | +sector-level exposure rather than a reward for year-to-year wording, fading under firm fixed | |
| 833 | +effects. | |
| 834 | + | |
| 835 | +The economic message is that markets price the \emph{language} of AI---but only once AI commands | |
| 836 | +their attention. The methodological message is that embedding-based measurement of disclosure | |
| 837 | +content opens a productive avenue for asset pricing, capturing economically meaningful, multi-faceted | |
| 838 | +exposures at scale and revealing pricing dynamics that keyword counts and firm-differenced designs | |
| 839 | +would miss. As generative AI continues to reshape the corporate landscape, the semantic footprint | |
| 840 | +it leaves in mandatory disclosure offers a rich, and now demonstrably value-relevant, signal. | |
| 841 | + | |
| 842 | +\clearpage | |
| 843 | +\begin{thebibliography}{99}\small | |
| 844 | +\setlength{\itemsep}{2pt} | |
| 845 | +\bibitem[Acemoglu and Restrepo(2020)]{acemoglu2020wrong} Acemoglu, D., and P.\ Restrepo (2020). Robots and Jobs: Evidence from US Labor Markets. \textit{Journal of Political Economy} 128(6), 2188--2244. | |
| 846 | +\bibitem[Babina et al.(2024)]{babina2024aiinvestment} Babina, T., A.\ Fedyk, A.\ He, and J.\ Hodson (2024). Artificial Intelligence, Firm Growth, and Product Innovation. \textit{Journal of Financial Economics} 151, 103745. | |
| 847 | +\bibitem[Baker and Wurgler(2006)]{bakerwurgler2006} Baker, M., and J.\ Wurgler (2006). Investor Sentiment and the Cross-Section of Stock Returns. \textit{Journal of Finance} 61(4), 1645--1680. | |
| 848 | +\bibitem[Barber and Odean(2008)]{barberodean2008} Barber, B.\ M., and T.\ Odean (2008). All That Glitters: The Effect of Attention and News on the Buying Behavior of Individual and Institutional Investors. \textit{Review of Financial Studies} 21(2), 785--818. | |
| 849 | +\bibitem[Bolton and Kacperczyk(2021)]{bolton2021risk} Bolton, P., and M.\ Kacperczyk (2021). Do Investors Care about Carbon Risk? \textit{Journal of Financial Economics} 142(2), 517--549. | |
| 850 | +\bibitem[Bybee et al.(2024)]{bybee2024narrative} Bybee, L., B.\ Kelly, A.\ Manela, and D.\ Xiu (2024). Business News and Business Cycles. \textit{Journal of Finance} 79(5), 3105--3147. | |
| 851 | +\bibitem[Cameron et al.(2011)]{cameron2011} Cameron, A.\ C., J.\ B.\ Gelbach, and D.\ L.\ Miller (2011). Robust Inference with Multiway Clustering. \textit{Journal of Business \& Economic Statistics} 29(2), 238--249. | |
| 852 | +\bibitem[Cohen et al.(2020)]{cohen2020lazy} Cohen, L., C.\ Malloy, and Q.\ Nguyen (2020). Lazy Prices. \textit{Journal of Finance} 75(3), 1371--1415. | |
| 853 | +\bibitem[Cong et al.(2022)]{cong2022textfactor} Cong, L.\ W., T.\ Liang, and X.\ Zhang (2022). Textual Factors: A Scalable, Interpretable, and Data-Driven Approach to Analyzing Unstructured Information. Working paper. | |
| 854 | +\bibitem[Da et al.(2011)]{da2011} Da, Z., J.\ Engelberg, and P.\ Gao (2011). In Search of Attention. \textit{Journal of Finance} 66(5), 1461--1499. | |
| 855 | +\bibitem[DellaVigna and Pollet(2009)]{dellavigna2009} DellaVigna, S., and J.\ M.\ Pollet (2009). Investor Inattention and Friday Earnings Announcements. \textit{Journal of Finance} 64(2), 709--749. | |
| 856 | +\bibitem[Eisfeldt et al.(2023)]{eisfeldt2023generative} Eisfeldt, A.\ L., G.\ Schubert, and M.\ B.\ Zhang (2023). Generative AI and Firm Values. NBER Working Paper 31222. | |
| 857 | +\bibitem[Fama and French(2015)]{famafrench2015} Fama, E.\ F., and K.\ R.\ French (2015). A Five-Factor Asset Pricing Model. \textit{Journal of Financial Economics} 116(1), 1--22. | |
| 858 | +\bibitem[Fama and MacBeth(1973)]{famamacbeth1973} Fama, E.\ F., and J.\ D.\ MacBeth (1973). Risk, Return, and Equilibrium: Empirical Tests. \textit{Journal of Political Economy} 81(3), 607--636. | |
| 859 | +\bibitem[Gentzkow et al.(2019)]{gentzkow2019} Gentzkow, M., B.\ Kelly, and M.\ Taddy (2019). Text as Data. \textit{Journal of Economic Literature} 57(3), 535--574. | |
| 860 | +\bibitem[Hirshleifer et al.(2009)]{hirshleifer2009driven} Hirshleifer, D., S.\ S.\ Lim, and S.\ H.\ Teoh (2009). Driven to Distraction: Extraneous Events and Underreaction to Earnings News. \textit{Journal of Finance} 64(5), 2289--2325. | |
| 861 | +\bibitem[Hirshleifer et al.(2013)]{hirshleifer2013innovative} Hirshleifer, D., P.-H.\ Hsu, and D.\ Li (2013). Innovative Efficiency and Stock Returns. \textit{Journal of Financial Economics} 107(3), 632--654. | |
| 862 | +\bibitem[Hoberg and Phillips(2010)]{hoberg2010product} Hoberg, G., and G.\ Phillips (2010). Product Market Synergies and Competition in Mergers and Acquisitions: A Text-Based Analysis. \textit{Review of Financial Studies} 23(10), 3773--3811. | |
| 863 | +\bibitem[Hoberg and Phillips(2016)]{hobergphillips2016} Hoberg, G., and G.\ Phillips (2016). Text-Based Network Industries and Endogenous Product Differentiation. \textit{Journal of Political Economy} 124(5), 1423--1465. | |
| 864 | +\bibitem[Kelly et al.(2019)]{kelly2019textregression} Kelly, B., A.\ Manela, and A.\ Moreira (2019). Text Selection. Working paper / \textit{Journal of Business \& Economic Statistics} (2021). | |
| 865 | +\bibitem[Kogan and Papanikolaou(2014)]{koganpapanikolaou2014} Kogan, L., and D.\ Papanikolaou (2014). Growth Opportunities, Technology Shocks, and Asset Prices. \textit{Journal of Finance} 69(2), 675--718. | |
| 866 | +\bibitem[Kogan et al.(2017)]{kogan2017technological} Kogan, L., D.\ Papanikolaou, A.\ Seru, and N.\ Stoffman (2017). Technological Innovation, Resource Allocation, and Growth. \textit{Quarterly Journal of Economics} 132(2), 665--712. | |
| 867 | +\bibitem[Lopez-Lira(2023)]{lopezlira2023risk} Lopez-Lira, A. (2023). Risk Factors That Matter: Textual Analysis of Risk Disclosures for the Cross-Section of Returns. Working paper. | |
| 868 | +\bibitem[Loughran and McDonald(2011)]{lm2011} Loughran, T., and B.\ McDonald (2011). When Is a Liability Not a Liability? Textual Analysis, Dictionaries, and 10-Ks. \textit{Journal of Finance} 66(1), 35--65. | |
| 869 | +\bibitem[Loughran and McDonald(2016)]{lm2016} Loughran, T., and B.\ McDonald (2016). Textual Analysis in Accounting and Finance: A Survey. \textit{Journal of Accounting Research} 54(4), 1187--1230. | |
| 870 | +\bibitem[MacKinlay(1997)]{mackinlay1997} MacKinlay, A.\ C. (1997). Event Studies in Economics and Finance. \textit{Journal of Economic Literature} 35(1), 13--39. | |
| 871 | +\bibitem[Newey and West(1987)]{neweywest1987} Newey, W.\ K., and K.\ D.\ West (1987). A Simple, Positive Semi-Definite, Heteroskedasticity and Autocorrelation Consistent Covariance Matrix. \textit{Econometrica} 55(3), 703--708. | |
| 872 | +\bibitem[P\'astor et al.(2021)]{pastor2021sustainable} P\'astor, \v{L}., R.\ F.\ Stambaugh, and L.\ A.\ Taylor (2021). Sustainable Investing in Equilibrium. \textit{Journal of Financial Economics} 142(2), 550--571. | |
| 873 | +\bibitem[P\'astor et al.(2022)]{pastor2022dissecting} P\'astor, \v{L}., R.\ F.\ Stambaugh, and L.\ A.\ Taylor (2022). Dissecting Green Returns. \textit{Journal of Financial Economics} 146(2), 403--424. | |
| 874 | +\bibitem[Petersen(2009)]{petersen2009} Petersen, M.\ A. (2009). Estimating Standard Errors in Finance Panel Data Sets: Comparing Approaches. \textit{Review of Financial Studies} 22(1), 435--480. | |
| 875 | +\bibitem[Reimers and Gurevych(2019)]{reimers2019sbert} Reimers, N., and I.\ Gurevych (2019). Sentence-BERT: Sentence Embeddings Using Siamese BERT-Networks. \textit{EMNLP}. | |
| 876 | +\bibitem[Shiller(2017)]{shiller2017narrative} Shiller, R.\ J. (2017). Narrative Economics. \textit{American Economic Review} 107(4), 967--1004. | |
| 877 | +\bibitem[Tetlock(2007)]{tetlock2007} Tetlock, P.\ C. (2007). Giving Content to Investor Sentiment: The Role of Media in the Stock Market. \textit{Journal of Finance} 62(3), 1139--1168. | |
| 878 | +\bibitem[Tetlock et al.(2008)]{tetlock2008} Tetlock, P.\ C., M.\ Saar-Tsechansky, and S.\ Macskassy (2008). More Than Words: Quantifying Language to Measure Firms' Fundamentals. \textit{Journal of Finance} 63(3), 1437--1467. | |
| 879 | +\bibitem[Webb(2020)]{webb2020} Webb, M. (2020). The Impact of Artificial Intelligence on the Labor Market. Working paper, Stanford University. | |
| 880 | +\end{thebibliography} | |
| 881 | + | |
| 882 | +\clearpage | |
| 883 | +\appendix | |
| 884 | +\section*{Appendix A. Variable Definitions} | |
| 885 | +\addcontentsline{toc}{section}{Appendix A. Variable Definitions} | |
| 886 | +\begin{description}[leftmargin=1.5em,style=nextline,itemsep=2pt] | |
| 887 | +\item[AI\,Adopt (\texttt{ai\_adoption\_wmean}).] Section-weighted mean cosine similarity of a firm's 10-K chunks to the AI-internal-adoption anchor in fiscal year $Y$. | |
| 888 | +\item[AI\,Infra (\texttt{ai\_infrastructure\_wmean}).] Section-weighted mean similarity to the AI-compute-infrastructure anchor. | |
| 889 | +\item[AI\,Risk (\texttt{ai\_disruption\_risk\_wmean}).] Section-weighted mean similarity to the AI-product-disruption-risk anchor. | |
| 890 | +\item[AI\,Compos.] $\tfrac12[z(\text{AI\,Adopt})+z(\text{AI\,Infra})]$, with $z$ the within-year cross-sectional standardization. | |
| 891 | +\item[Forward return.] Buy-and-hold simple return from July of $Y{+}1$ to June of $Y{+}2$ (adjusted close, dividends reinvested). | |
| 892 | +\item[Market-adjusted return.] Forward return minus the contemporaneous SPY return. | |
| 893 | +\item[Size.] Natural log of the market-cap proxy (latest shares outstanding $\times$ price) at formation. | |
| 894 | +\item[Momentum.] Own return over the 12 months ending at formation, skipping the last month. | |
| 895 | +\item[Volatility.] Annualized standard deviation of monthly returns over the trailing 12 months. | |
| 896 | +\item[Post.] Indicator equal to one for formation (fiscal) years $\ge 2022$. | |
| 897 | +\item[CAR.] Cumulative market-model abnormal return; market model estimated Jan--Oct 2022, event window Nov 2022--Jun 2024. | |
| 898 | +\end{description} | |
| 899 | + | |
| 900 | +\section*{Appendix B. Data and Reproducibility} | |
| 901 | +\addcontentsline{toc}{section}{Appendix B. Data and Reproducibility} | |
| 902 | +\noindent Semantic factors are from the EDGAR Research Database (UQO). Equity prices (monthly and | |
| 903 | +daily) are from Yahoo Finance; the Fama--French five factors, momentum, and the risk-free rate are | |
| 904 | +from the Kenneth R.\ French data library. All return tests use look-ahead-free July-formation | |
| 905 | +forward returns. The analysis pipeline (\texttt{analysis/01--09}) downloads prices, builds the | |
| 906 | +merged panel, runs the sorts/regressions/event study, and emits all figures and tables; results are | |
| 907 | +serialized to \texttt{results.json}, \texttt{results2.json}, and \texttt{results\_event.json}. | |
| 908 | + | |
| 909 | +\end{document} | |
added
docs/original_report_short_2026-06.tex
+269 −0
@@ -0,0 +1,269 @@ | ||
| 1 | +\documentclass[11pt]{article} | |
| 2 | +\usepackage[margin=1in]{geometry} | |
| 3 | +\usepackage{graphicx,booktabs,amsmath,amssymb,siunitx,caption,float} | |
| 4 | +\usepackage[hidelinks]{hyperref} | |
| 5 | +\usepackage{xcolor,sectsty,setspace} | |
| 6 | +\usepackage{titling} | |
| 7 | +\definecolor{navy}{HTML}{1b3a6b} | |
| 8 | +\sectionfont{\color{navy}}\subsectionfont{\color{navy}} | |
| 9 | +\captionsetup{font=small,labelfont={bf,color=navy}} | |
| 10 | +\graphicspath{{../figures/}} | |
| 11 | +\setlength{\parskip}{0.45em}\setlength{\parindent}{0pt} | |
| 12 | +\sisetup{group-minimum-digits=4,group-separator={,}} | |
| 13 | +\newcommand{\tstat}[1]{{\footnotesize(\textit{t}=#1)}} | |
| 14 | + | |
| 15 | +\title{\color{navy}\bfseries Does the Language of Artificial Intelligence Move Markets?\\[2mm] | |
| 16 | +\large A Semantic Analysis of S\&P~500 SEC Filings and Subsequent Stock Returns, 2010--2026} | |
| 17 | +\author{EDGAR Research Database Project\\ | |
| 18 | +\small Manel Kammoun \quad Djerrycharli Tandjambianda \quad Simon-Pierre Boucher\\ | |
| 19 | +\small Universit\'e du Qu\'ebec en Outaouais (UQO)} | |
| 20 | +\date{June 2026} | |
| 21 | + | |
| 22 | +\begin{document} | |
| 23 | +\maketitle | |
| 24 | + | |
| 25 | +\begin{abstract} | |
| 26 | +\noindent We measure the \emph{semantic intensity} of artificial-intelligence (AI) language in the | |
| 27 | +annual SEC filings (10-K) of S\&P~500 constituents using sentence-embedding cosine | |
| 28 | +similarity to curated AI ``anchor'' concepts, and ask whether this disclosure | |
| 29 | +intensity is related to the cross-section of subsequent stock returns. Combining a | |
| 30 | +panel of 7{,}869 firm-years (500 firms, fiscal years 2010--2026) with monthly | |
| 31 | +prices from Yahoo Finance and the Fama--French factor data, we form strictly | |
| 32 | +tradeable forward 12-month returns and study them with portfolio sorts, | |
| 33 | +factor-model spanning regressions, two-way fixed-effects panels, Fama--MacBeth | |
| 34 | +regressions, and a structural-break test around the launch of ChatGPT | |
| 35 | +(November~2022). Our central finding is \textbf{conditional}: over the full sample | |
| 36 | +the relation between AI-disclosure intensity and future returns is positive but | |
| 37 | +economically modest and only marginally significant; however, it \emph{more than | |
| 38 | +sextuples} after 2022. Firms in the top quintile of AI-disclosure intensity | |
| 39 | +outperformed the bottom quintile by \textbf{+2.4 percentage points} per year before | |
| 40 | +ChatGPT but by \textbf{+14.6 percentage points} per year afterward. The effect is a | |
| 41 | +\emph{cross-sectional, regime-dependent re-rating}---it is absorbed by firm fixed | |
| 42 | +effects, indicating the market repriced which \emph{firms} were AI-exposed rather | |
| 43 | +than rewarding year-to-year changes in any single firm's wording. | |
| 44 | +\end{abstract} | |
| 45 | + | |
| 46 | +\section{Introduction} | |
| 47 | +The diffusion of generative AI has been the defining corporate-narrative shift of | |
| 48 | +the 2020s. A natural question for investors and researchers is whether the | |
| 49 | +\emph{disclosure} of AI engagement---how intensively a firm writes about adopting, | |
| 50 | +building, or being threatened by AI in its mandatory filings---carries information | |
| 51 | +about future equity performance. This study answers that question for the S\&P~500 | |
| 52 | +using a purpose-built semantic measurement of filing text rather than naive keyword | |
| 53 | +counts. | |
| 54 | + | |
| 55 | +We exploit the EDGAR Research Database, which parses every 10-K/10-Q/8-K filing into | |
| 56 | +sections, embeds each text chunk with the \texttt{all-MiniLM-L6-v2} sentence | |
| 57 | +transformer, and scores it by cosine similarity to professionally curated anchor | |
| 58 | +passages describing eight economic concepts. Three of these capture distinct facets | |
| 59 | +of AI exposure: | |
| 60 | +\begin{itemize}\setlength\itemsep{0.1em} | |
| 61 | + \item \textbf{AI~adoption} --- internal use of AI/ML to improve operations; | |
| 62 | + \item \textbf{AI~infrastructure} --- capital exposure to AI compute (GPUs, data centers, cloud); | |
| 63 | + \item \textbf{AI~disruption risk} --- the risk that AI commoditizes the firm's products. | |
| 64 | +\end{itemize} | |
| 65 | +We aggregate chunk scores to a section-weighted annual firm score, link them to | |
| 66 | +realized returns, and subject the relation to a battery of asset-pricing tests. | |
| 67 | + | |
| 68 | +Our contribution is threefold. First, we move beyond keyword dictionaries to a | |
| 69 | +\emph{semantic} measure of AI exposure that captures meaning, not just term | |
| 70 | +frequency. Second, we provide a clean, look-ahead-free mapping from disclosure to | |
| 71 | +\emph{tradeable} forward returns. Third, and most importantly, we document that the | |
| 72 | +pricing of AI language is \emph{not} a stable factor premium but a | |
| 73 | +\textbf{regime-dependent re-rating} that switched on with the generative-AI boom. | |
| 74 | + | |
| 75 | +\section{Data} | |
| 76 | +\paragraph{Semantic factors.} The firm-year panel contains 7{,}869 | |
| 77 | +observations covering all 500 current S\&P~500 members across fiscal years | |
| 78 | +2010--2026. For each of the eight anchor concepts the database reports the mean, | |
| 79 | +maximum, standard deviation, top-5\% tail, and section-weighted mean | |
| 80 | +(\texttt{wmean}) of chunk-level cosine similarities, together with first/second | |
| 81 | +differences and rolling statistics. We use the section-weighted mean as our | |
| 82 | +headline signal because it up-weights the Risk-Factors and MD\&A sections where | |
| 83 | +forward-looking strategic content concentrates. | |
| 84 | + | |
| 85 | +\paragraph{Prices and factors.} We download monthly adjusted close prices for all | |
| 86 | +500 tickers from Yahoo Finance (2009--2026), the SPDR S\&P~500 ETF (SPY) as the | |
| 87 | +market benchmark, and the Fama--French five factors plus momentum and the risk-free | |
| 88 | +rate from the Kenneth French data library. | |
| 89 | + | |
| 90 | +\paragraph{Timing.} A 10-K covering fiscal year $Y$ is public by roughly | |
| 91 | +February--March of $Y{+}1$. To eliminate look-ahead bias we form signals at the | |
| 92 | +\textbf{end of June of $Y{+}1$} and measure the \textbf{forward 12-month return over | |
| 93 | +July~$Y{+}1$ to June~$Y{+}2$}---the Fama--French portfolio convention. The signal is | |
| 94 | +therefore always known before the holding period begins. This yields 6{,}852 | |
| 95 | +firm-years with a tradeable forward return spanning formation years 2010--2024 | |
| 96 | +(return realizations through mid-2026). | |
| 97 | + | |
| 98 | +\paragraph{Variables and treatment.} For each formation year we compute | |
| 99 | +cross-sectional $z$-scores of every signal (so coefficients are per-standard-deviation | |
| 100 | +and the secular rise in AI language is differenced out), plus controls for size | |
| 101 | +(log market-cap proxy), 12-month momentum, and trailing volatility. Returns and | |
| 102 | +controls are winsorized at the 1st/99th percentiles in regressions. Table~\ref{tab:summ} | |
| 103 | +reports summary statistics. | |
| 104 | + | |
| 105 | +\input{tab_summary} | |
| 106 | + | |
| 107 | +A first caveat is visible in the correlation structure: the three AI signals are | |
| 108 | +highly collinear ($\rho = 0.75$--$0.86$). They are best read as three lenses on a | |
| 109 | +single latent construct---\emph{AI salience} in corporate disclosure---rather than as | |
| 110 | +independent factors. This collinearity matters for interpreting multivariate | |
| 111 | +specifications below. | |
| 112 | + | |
| 113 | +\section{The Rise of AI Language} | |
| 114 | +Before turning to returns we document the raw phenomenon. Figure~\ref{fig:trend} | |
| 115 | +shows that the cross-sectional mean similarity to all three AI concepts rose | |
| 116 | +steadily over the decade and accelerated sharply after 2022: by 2025--2026, AI | |
| 117 | +language saturates S\&P~500 disclosure. This secular trend is precisely why our | |
| 118 | +tests rely on \emph{within-year cross-sectional} ranking---in any given year we ask | |
| 119 | +which firms talk about AI \emph{more than their peers}, not whether the index as a | |
| 120 | +whole talks about AI more than it used to. | |
| 121 | + | |
| 122 | +\begin{figure}[H]\centering | |
| 123 | +\includegraphics[width=0.92\textwidth]{fig4_ai_language_trend.png} | |
| 124 | +\caption{Cross-sectional mean of section-weighted cosine similarity to each AI anchor, | |
| 125 | +by fiscal year. All three measures trend upward and inflect after the 2022 launch of | |
| 126 | +ChatGPT (dashed line).}\label{fig:trend} | |
| 127 | +\end{figure} | |
| 128 | + | |
| 129 | +\section{Results} | |
| 130 | +\subsection{Portfolio sorts} | |
| 131 | +Each formation year we sort firms into quintiles on each AI signal and compute the | |
| 132 | +equal-weighted (EW) and value-weighted (VW) forward return of each quintile, plus | |
| 133 | +the high-minus-low (Q5$-$Q1) spread. Statistical significance uses Newey--West | |
| 134 | +(3-lag) $t$-statistics on the annual spread series. Table~\ref{tab:sorts} summarizes. | |
| 135 | + | |
| 136 | +\input{tab_sorts} | |
| 137 | + | |
| 138 | +Over the full sample the relation is monotone-ish and positive but economically | |
| 139 | +modest: the EW Q5$-$Q1 spread is +4.6~pp/yr for AI~adoption \tstat{1.83}, | |
| 140 | ++3.9~pp/yr for AI~infrastructure \tstat{1.58}, and +5.3~pp/yr for AI~disruption | |
| 141 | +risk \tstat{2.27}. Value-weighting attenuates the adoption and composite spreads, | |
| 142 | +indicating the effect is stronger among smaller index members. The left panel of | |
| 143 | +Figure~\ref{fig:quint} shows the full-sample quintile pattern. | |
| 144 | + | |
| 145 | +\subsection{Does AI disclosure earn risk-adjusted alpha?} | |
| 146 | +We next build an annually rebalanced, equal-weighted, self-financing long-short | |
| 147 | +portfolio (top minus bottom quintile) and regress its monthly return on the CAPM and | |
| 148 | +on the Fama--French five-factor-plus-momentum (FF6) model. Table~\ref{tab:alpha} | |
| 149 | +reports intercepts (alphas). | |
| 150 | + | |
| 151 | +\input{tab_alpha} | |
| 152 | + | |
| 153 | +Unconditionally, the AI-opportunity long-short earns about +2.3\%/yr, of which the | |
| 154 | +FF6 alpha is +1.9\%/yr but statistically insignificant \tstat{1.24}: most of the raw | |
| 155 | +spread is compensation for known factors and noise. The one exception is the | |
| 156 | +\emph{AI-disruption-risk} spread, whose FF6 alpha of +2.8\%/yr is marginally | |
| 157 | +significant \tstat{2.10}---firms that flag AI as a competitive threat earned a small | |
| 158 | +premium, consistent with a risk-premium interpretation. The headline message of the | |
| 159 | +full-sample tests is therefore one of \emph{weak, mostly-not-significant} pricing. | |
| 160 | + | |
| 161 | +\subsection{Panel regressions and Fama--MacBeth} | |
| 162 | +Table~\ref{tab:panel} reports two-way (firm $\times$ year) fixed-effects panel | |
| 163 | +regressions of forward returns on the AI $z$-scores and controls, with standard | |
| 164 | +errors double-clustered by firm and year, alongside Fama--MacBeth estimates. | |
| 165 | + | |
| 166 | +\input{tab_panel} | |
| 167 | + | |
| 168 | +The two contrasting columns are instructive. In the \textbf{Fama--MacBeth} | |
| 169 | +cross-sectional regressions the AI-adoption and AI-infrastructure premia are positive | |
| 170 | +(+1.3 and +1.6~pp per standard deviation) with $t$-statistics near 1.6--1.7---weakly | |
| 171 | +positive pricing in the cross-section. In the \textbf{two-way fixed-effects} panel, | |
| 172 | +however, every AI coefficient collapses to essentially zero. Because firm fixed | |
| 173 | +effects remove all permanent cross-firm differences, this tells us the signal lives | |
| 174 | +\emph{across} firms, not \emph{within} them: a given firm writing relatively more | |
| 175 | +about AI from one year to the next does not predict its own subsequent return. The | |
| 176 | +market priced \emph{which firms are AI-exposed}, not the annual wording wiggle. (Size | |
| 177 | +carries the familiar negative premium throughout, $t\approx-8$.) | |
| 178 | + | |
| 179 | +\subsection{The structural break: AI pricing switched on after ChatGPT} | |
| 180 | +The full-sample averages mask a sharp regime change. Splitting at the November~2022 | |
| 181 | +launch of ChatGPT, Figure~\ref{fig:quint} (center vs.\ right panel) shows the | |
| 182 | +quintile pattern is nearly flat before 2022 and steeply increasing afterward. The | |
| 183 | +annual Q5$-$Q1 spreads in Figure~\ref{fig:spread} are small and mixed-sign through | |
| 184 | +2021, then large and positive for every post-2022 formation year. | |
| 185 | + | |
| 186 | +\begin{figure}[H]\centering | |
| 187 | +\includegraphics[width=\textwidth]{fig1_quintile_returns.png} | |
| 188 | +\caption{Mean forward 12-month return by AI-disclosure composite quintile. The | |
| 189 | +high-minus-low spread is +2.4~pp before ChatGPT and +14.6~pp after.}\label{fig:quint} | |
| 190 | +\end{figure} | |
| 191 | + | |
| 192 | +\begin{figure}[H]\centering | |
| 193 | +\includegraphics[width=0.92\textwidth]{fig3_annual_spread.png} | |
| 194 | +\caption{Annual high-minus-low (Q5$-$Q1) forward-return spread on the AI-disclosure | |
| 195 | +composite, by 10-K fiscal year. Post-ChatGPT formation years (red) are uniformly and | |
| 196 | +substantially positive.}\label{fig:spread} | |
| 197 | +\end{figure} | |
| 198 | + | |
| 199 | +Table~\ref{tab:break} quantifies the break two ways: sub-period quintile spreads and | |
| 200 | +a pooled interaction of the AI $z$-score with a post-2022 indicator. | |
| 201 | + | |
| 202 | +\input{tab_break} | |
| 203 | + | |
| 204 | +The numbers are striking. The AI-adoption Q5$-$Q1 spread rises from +2.2\%/yr | |
| 205 | +\tstat{2.04} pre-2022 to \textbf{+14.3\%/yr} \tstat{2.15} post-2022; the composite | |
| 206 | +rises from +2.5\% to +14.6\%/yr. In the interaction regressions the post-2022 | |
| 207 | +incremental slope is positive for all three signals and statistically significant for | |
| 208 | +AI~infrastructure \tstat{2.63}, the facet most directly tied to the firms (chipmakers, | |
| 209 | +cloud, data-center, and power names) that led the 2023--2025 rally. The cumulative | |
| 210 | +long-short wealth curve in Figure~\ref{fig:cum} makes the timing visible: the AI | |
| 211 | +portfolios drift sideways-to-up for a decade, then inflect upward after the dashed | |
| 212 | +ChatGPT line. | |
| 213 | + | |
| 214 | +\begin{figure}[H]\centering | |
| 215 | +\includegraphics[width=0.92\textwidth]{fig2_cumulative_ls.png} | |
| 216 | +\caption{Cumulative value of \$1 invested in the equal-weighted, annually | |
| 217 | +rebalanced, self-financing high-minus-low AI-disclosure portfolio.}\label{fig:cum} | |
| 218 | +\end{figure} | |
| 219 | + | |
| 220 | +Figure~\ref{fig:bin} confirms the pattern is not driven by outliers: the binned | |
| 221 | +relation between the AI composite and forward returns is flat pre-2022 and clearly | |
| 222 | +upward-sloping post-2022. | |
| 223 | + | |
| 224 | +\begin{figure}[H]\centering | |
| 225 | +\includegraphics[width=\textwidth]{fig5_binscatter.png} | |
| 226 | +\caption{Binned scatter of forward return against the AI-disclosure composite, by | |
| 227 | +sub-period. The conditional slope steepens markedly after ChatGPT.}\label{fig:bin} | |
| 228 | +\end{figure} | |
| 229 | + | |
| 230 | +\section{Discussion} | |
| 231 | +Three conclusions follow. \textbf{(1) AI disclosure is informative, but | |
| 232 | +conditionally.} It is not a stable, decade-long return factor; it is a signal that | |
| 233 | +the market began to price only once generative AI became salient. This is consistent | |
| 234 | +with an \emph{attention} or \emph{re-rating} mechanism: the textual evidence of AI | |
| 235 | +engagement existed for years, but capital flowed toward AI-exposed firms only after a | |
| 236 | +narrative catalyst. \textbf{(2) The effect is cross-sectional, not within-firm.} The | |
| 237 | +disappearance of the coefficient under firm fixed effects warns against trading | |
| 238 | +year-to-year changes in a single firm's AI verbosity; the durable signal is the | |
| 239 | +persistent \emph{level} of a firm's AI exposure relative to peers. \textbf{(3) The | |
| 240 | +three AI lenses largely coincide.} Their high collinearity means one should not | |
| 241 | +over-interpret which specific facet (adoption vs.\ infrastructure vs.\ risk) | |
| 242 | +``wins''; they jointly proxy a single AI-salience construct, and the infrastructure | |
| 243 | +lens simply loads most heavily on the firms that led the boom. | |
| 244 | + | |
| 245 | +\section{Limitations} | |
| 246 | +The post-2022 window contains only three formation years, so the regime result, while | |
| 247 | +economically large and robust across signals and specifications, rests on a short | |
| 248 | +post-period and should be read as suggestive rather than definitive. The market-cap | |
| 249 | +proxy holds shares outstanding at their latest value; survivorship is present because | |
| 250 | +we use current index membership; and the semantic anchors, though carefully curated, | |
| 251 | +embed the authors' definitional choices. Finally, disclosure intensity is correlated | |
| 252 | +with sector (Information Technology firms naturally score higher), so part of the | |
| 253 | +post-2022 premium reflects a sector tilt toward technology---though the within-year, | |
| 254 | +size- and momentum-controlled tests mitigate this. | |
| 255 | + | |
| 256 | +\section{Conclusion} | |
| 257 | +Using a semantic, embedding-based measure of AI language in S\&P~500 filings linked | |
| 258 | +to Yahoo Finance returns, we find that AI disclosure carried little pricing power for | |
| 259 | +most of the 2010s and then became strongly rewarded after the launch of ChatGPT. The | |
| 260 | +high-minus-low AI-disclosure return spread jumped from roughly +2~pp to roughly | |
| 261 | ++15~pp per year. The pattern is a regime-dependent, cross-sectional re-rating rather | |
| 262 | +than a persistent factor premium---evidence that markets price the \emph{language} of | |
| 263 | +AI, but only once AI commands their attention. | |
| 264 | + | |
| 265 | +\vspace{1em}\hrule\vspace{0.4em} | |
| 266 | +{\footnotesize\textit{Data:} EDGAR Research Database (UQO); prices from Yahoo Finance; | |
| 267 | +factors from the Kenneth R.\ French data library. All return tests use look-ahead-free | |
| 268 | +July-formation forward returns. Code and tables: \texttt{analysis/}.} | |
| 269 | +\end{document} | |
added
figures/fig10_mag7.png
+0 −0
Binary file not shown.
added
figures/fig11_eventtime.png
+0 −0
Binary file not shown.
added
figures/fig12_sector_box.png
+0 −0
Binary file not shown.
added
figures/fig13_event_binscatter.png
+0 −0
Binary file not shown.
added
figures/fig1_quintile_returns.png
+0 −0
Binary file not shown.
added
figures/fig2_cumulative_ls.png
+0 −0
Binary file not shown.
added
figures/fig3_annual_spread.png
+0 −0
Binary file not shown.
added
figures/fig4_ai_language_trend.png
+0 −0
Binary file not shown.
added
figures/fig5_binscatter.png
+0 −0
Binary file not shown.
added
figures/fig6_fm_byyear.png
+0 −0
Binary file not shown.
added
figures/fig7_placebo.png
+0 −0
Binary file not shown.
added
figures/fig8_event_car.png
+0 −0
Binary file not shown.
added
figures/fig9_double_sort.png
+0 −0
Binary file not shown.
added
paper/.latexmkrc
+5 −0
@@ -0,0 +1,5 @@ | ||
| 1 | +$pdf_mode = 1; | |
| 2 | +$pdflatex = 'pdflatex -interaction=nonstopmode -halt-on-error -synctex=1 %O %S'; | |
| 3 | +$bibtex_use = 2; | |
| 4 | +$clean_ext = 'synctex.gz run.xml bbl bcf fdb_latexmk fls log aux out toc lof lot blg'; | |
| 5 | +@default_files = ('main.tex'); | |
added
paper/Makefile
+11 −0
@@ -0,0 +1,11 @@ | ||
| 1 | +.PHONY: all clean distclean | |
| 2 | + | |
| 3 | +all: | |
| 4 | + latexmk | |
| 5 | + | |
| 6 | +clean: | |
| 7 | + latexmk -c | |
| 8 | + | |
| 9 | +distclean: | |
| 10 | + latexmk -C | |
| 11 | + rm -f *.synctex.gz *.run.xml *.bbl *.bcf | |
added
paper/appendix/appendix.tex
+53 −0
@@ -0,0 +1,53 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +% Appendix | |
| 3 | +% ============================================================================ | |
| 4 | +\newpage | |
| 5 | +\begin{appendices} | |
| 6 | + | |
| 7 | +\renewcommand{\thetable}{A\arabic{table}} | |
| 8 | +\renewcommand{\thefigure}{A\arabic{figure}} | |
| 9 | +\setcounter{table}{0} | |
| 10 | +\setcounter{figure}{0} | |
| 11 | + | |
| 12 | +\section{Variable Definitions} | |
| 13 | +\label{app:variables} | |
| 14 | + | |
| 15 | +\begin{table}[htbp] | |
| 16 | + \centering | |
| 17 | + \caption{Variable Definitions} | |
| 18 | + \label{tab:app_variables} | |
| 19 | + \small | |
| 20 | + \begin{tabular}{@{}p{4.2cm}p{10.5cm}@{}} | |
| 21 | + \toprule | |
| 22 | + Variable & Definition \\ | |
| 23 | + \midrule | |
| 24 | + AI\,Adopt (\texttt{ai\_adoption\_wmean}) & Section-weighted mean cosine similarity of a firm's 10-K text chunks to the AI-internal-adoption anchor in fiscal year $Y$. \\[4pt] | |
| 25 | + AI\,Infra (\texttt{ai\_infrastructure\_wmean}) & Section-weighted mean similarity to the AI-compute-infrastructure anchor. \\[4pt] | |
| 26 | + AI\,Risk (\texttt{ai\_disruption\_risk\_wmean}) & Section-weighted mean similarity to the AI-product-disruption-risk anchor. \\[4pt] | |
| 27 | + AI\,Compos & $\tfrac12[z(\text{AI\,Adopt})+z(\text{AI\,Infra})]$, with $z$ the within-year cross-sectional standardization. \\[4pt] | |
| 28 | + Forward return & Buy-and-hold simple return from July of $Y{+}1$ to June of $Y{+}2$ (adjusted close, dividends reinvested). \\[4pt] | |
| 29 | + Market-adjusted return & Forward return minus the contemporaneous SPY return. \\[4pt] | |
| 30 | + Size & Natural logarithm of the market-cap proxy (latest shares outstanding $\times$ price) at formation. \\[4pt] | |
| 31 | + Momentum & Own return over the 12 months ending at formation, skipping the last month. \\[4pt] | |
| 32 | + Volatility & Annualized standard deviation of monthly returns over the trailing 12 months. \\[4pt] | |
| 33 | + Post & Indicator equal to one for formation (fiscal) years $\ge 2022$. \\[4pt] | |
| 34 | + CAR & Cumulative market-model abnormal return; market model estimated Jan--Oct 2022, event window Nov 2022--Jun 2024. \\ | |
| 35 | + \bottomrule | |
| 36 | + \end{tabular} | |
| 37 | +\end{table} | |
| 38 | + | |
| 39 | +\section{Data Sources and Reproducibility} | |
| 40 | +\label{app:repro} | |
| 41 | + | |
| 42 | +Semantic factors are from the EDGAR Research Database (UQO), which embeds 10-K text with the | |
| 43 | +\texttt{all-MiniLM-L6-v2} sentence transformer and scores each chunk by cosine similarity to curated | |
| 44 | +anchor passages. Equity prices (monthly and daily) are from Yahoo Finance; the Fama--French five | |
| 45 | +factors, the momentum factor, and the risk-free rate are from the Kenneth R.\ French data library. All | |
| 46 | +return tests use look-ahead-free July-formation forward returns, with signals taken from the 10-K of | |
| 47 | +the preceding fiscal year. The analysis pipeline downloads prices, builds the merged firm-year panel, | |
| 48 | +runs the portfolio sorts, factor regressions, panel and Fama--MacBeth estimators, the | |
| 49 | +difference-in-differences specifications, and the market-model event study, and emits all figures and | |
| 50 | +tables programmatically; numerical results are serialized to machine-readable result files so that | |
| 51 | +every number reported in the paper is reproducible from source. | |
| 52 | + | |
| 53 | +\end{appendices} | |
added
paper/figures/fig10_mag7.png
+0 −0
Binary file not shown.
added
paper/figures/fig11_eventtime.png
+0 −0
Binary file not shown.
added
paper/figures/fig12_sector_box.png
+0 −0
Binary file not shown.
added
paper/figures/fig13_event_binscatter.png
+0 −0
Binary file not shown.
added
paper/figures/fig1_quintile_returns.png
+0 −0
Binary file not shown.
added
paper/figures/fig2_cumulative_ls.png
+0 −0
Binary file not shown.
added
paper/figures/fig3_annual_spread.png
+0 −0
Binary file not shown.
added
paper/figures/fig4_ai_language_trend.png
+0 −0
Binary file not shown.
added
paper/figures/fig5_binscatter.png
+0 −0
Binary file not shown.
added
paper/figures/fig6_fm_byyear.png
+0 −0
Binary file not shown.
added
paper/figures/fig7_placebo.png
+0 −0
Binary file not shown.
added
paper/figures/fig8_event_car.png
+0 −0
Binary file not shown.
added
paper/figures/fig9_double_sort.png
+0 −0
Binary file not shown.
added
paper/main.pdf
+0 −0
Binary file not shown.
added
paper/main.tex
+183 −0
@@ -0,0 +1,183 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +% UQO Working Paper Template — Economics / Finance | |
| 3 | +% ============================================================================ | |
| 4 | +\documentclass[12pt,letterpaper]{article} | |
| 5 | + | |
| 6 | +% --- Encoding & Language --- | |
| 7 | +\usepackage[utf8]{inputenc} | |
| 8 | +\usepackage[T1]{fontenc} | |
| 9 | +\usepackage[english]{babel} | |
| 10 | + | |
| 11 | +% --- Page Layout --- | |
| 12 | +\usepackage[ | |
| 13 | + letterpaper, | |
| 14 | + top=1in, | |
| 15 | + bottom=1in, | |
| 16 | + left=1in, | |
| 17 | + right=1in | |
| 18 | +]{geometry} | |
| 19 | + | |
| 20 | +% --- Typography --- | |
| 21 | +\usepackage{mathptmx} % Times-like font (text + math) | |
| 22 | +\usepackage{microtype} % Improved typographic refinements | |
| 23 | +\usepackage{setspace} | |
| 24 | +\onehalfspacing % 1.5 line spacing | |
| 25 | + | |
| 26 | +% --- Math --- | |
| 27 | +\usepackage{amsmath,amssymb,amsthm} | |
| 28 | + | |
| 29 | +% --- Tables --- | |
| 30 | +\usepackage{booktabs} | |
| 31 | +\usepackage{tabularx} | |
| 32 | +\usepackage{multirow} | |
| 33 | +\usepackage{threeparttable} | |
| 34 | +\usepackage{siunitx} | |
| 35 | +\sisetup{ | |
| 36 | + input-symbols = {()}, | |
| 37 | + table-format = -1.3, | |
| 38 | + parse-numbers = false | |
| 39 | +} | |
| 40 | + | |
| 41 | +% --- Figures --- | |
| 42 | +\usepackage{graphicx} | |
| 43 | +\usepackage{subcaption} | |
| 44 | +\usepackage{float} | |
| 45 | + | |
| 46 | +% --- Colors & Links --- | |
| 47 | +\usepackage[dvipsnames]{xcolor} | |
| 48 | +\usepackage[ | |
| 49 | + colorlinks = true, | |
| 50 | + linkcolor = NavyBlue, | |
| 51 | + citecolor = NavyBlue, | |
| 52 | + urlcolor = NavyBlue, | |
| 53 | + breaklinks = true | |
| 54 | +]{hyperref} | |
| 55 | +\hypersetup{ | |
| 56 | + pdftitle = {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}, | |
| 57 | + pdfauthor = {Manel Kammoun, Djerrycharli Tandjambianda, Simon-Pierre Boucher} | |
| 58 | +} | |
| 59 | + | |
| 60 | +% --- Bibliography --- | |
| 61 | +\usepackage[authoryear,round,semicolon]{natbib} | |
| 62 | +\bibliographystyle{aer} | |
| 63 | + | |
| 64 | +% --- Captions --- | |
| 65 | +\usepackage[ | |
| 66 | + font = small, | |
| 67 | + labelfont = bf, | |
| 68 | + labelsep = period, | |
| 69 | + justification = justified, | |
| 70 | + singlelinecheck = false | |
| 71 | +]{caption} | |
| 72 | + | |
| 73 | +% --- Headers & Footers --- | |
| 74 | +\usepackage{fancyhdr} | |
| 75 | +\pagestyle{fancy} | |
| 76 | +\fancyhf{} | |
| 77 | +\renewcommand{\headrulewidth}{0pt} | |
| 78 | +\fancyfoot[C]{\thepage} | |
| 79 | + | |
| 80 | +% --- Section Formatting --- | |
| 81 | +\usepackage{titlesec} | |
| 82 | +\titleformat{\section}{\large\bfseries}{\thesection.}{0.5em}{} | |
| 83 | +\titleformat{\subsection}{\normalsize\bfseries}{\thesubsection.}{0.5em}{} | |
| 84 | +\titleformat{\subsubsection}{\normalsize\itshape}{\thesubsubsection.}{0.5em}{} | |
| 85 | + | |
| 86 | +% --- Appendix Support --- | |
| 87 | +\usepackage[toc,page]{appendix} | |
| 88 | + | |
| 89 | +% --- Paper-specific --- | |
| 90 | +\sisetup{group-minimum-digits=4, group-separator={,}} | |
| 91 | +\newcommand{\tstat}[1]{{\footnotesize(\textit{t}=#1)}} | |
| 92 | +\newcommand{\tablelegend}[1]{\par\vspace{0.25em}\begin{minipage}{\linewidth}\footnotesize\textit{Notes:} #1\end{minipage}} | |
| 93 | +\graphicspath{{figures/}} | |
| 94 | + | |
| 95 | +% --- Misc --- | |
| 96 | +\usepackage{enumitem} | |
| 97 | +\setlist{nosep,leftmargin=*} | |
| 98 | + | |
| 99 | +% ============================================================================ | |
| 100 | +% METADATA | |
| 101 | +% ============================================================================ | |
| 102 | +\newcommand{\WPnumber}{17} | |
| 103 | +\newcommand{\WPtitle}{Does the Language of Artificial Intelligence Move Markets?} | |
| 104 | +\newcommand{\WPsubtitle}{A Semantic Analysis of S\&P~500 SEC Filings and the Cross-Section of Stock Returns, 2010--2026} | |
| 105 | +\newcommand{\WPdate}{June 2026} | |
| 106 | +\newcommand{\WPversion}{1.0} | |
| 107 | +\newcommand{\WPabstract}{% | |
| 108 | +\begingroup\singlespacing % long abstract: single spacing so that Keywords and JEL stay on page 2 | |
| 109 | +We construct a \emph{semantic} measure of artificial-intelligence (AI) engagement for every | |
| 110 | +S\&P~500 firm by embedding the text of its annual SEC filings (Form~10-K) with a sentence | |
| 111 | +transformer and scoring each passage by cosine similarity to professionally curated AI | |
| 112 | +``anchor'' concepts---internal AI adoption, AI infrastructure exposure, and AI product-disruption | |
| 113 | +risk. Linking these scores to monthly equity prices from Yahoo Finance and to the Fama--French | |
| 114 | +factor data, we assemble a panel of \num{7869} firm-years (500 firms, fiscal years 2010--2026) | |
| 115 | +and ask whether the intensity of AI language predicts the cross-section of subsequent returns. | |
| 116 | +Our central result is \textbf{conditional and economically large}. Over the full sample the | |
| 117 | +relation between AI-disclosure intensity and future returns is positive but modest and only | |
| 118 | +marginally significant; a risk-adjusted long--short portfolio earns an insignificant | |
| 119 | +$\sim$2\%/year. After the public launch of ChatGPT (30 November 2022), however, the relation | |
| 120 | +\emph{more than sextuples}: the spread between the top and bottom quintile of AI disclosure rises | |
| 121 | +from $+2.4$ percentage points per year before 2022 to $+14.6$ points per year afterward. The | |
| 122 | +break survives section-weighting choices, alternative signal definitions and horizons, dimension | |
| 123 | +reduction, and---crucially---the exclusion of the ``Magnificent~7'' mega-caps. A battery of | |
| 124 | +identification tests sharpens the interpretation: (i) a \emph{placebo} across five non-AI | |
| 125 | +semantic factors shows the post-2022 jump is specific to AI-related language (ESG and climate | |
| 126 | +disclosure, by contrast, earn \emph{negative} post-2022 spreads); (ii) a market-model | |
| 127 | +\emph{event study} finds that firms with higher pre-event AI disclosure earned $+10.1\%$ higher | |
| 128 | +cumulative abnormal returns over the year after ChatGPT \tstat{1.97}; and (iii) the effect is | |
| 129 | +absorbed by firm fixed effects and roughly halved by sector fixed effects, indicating a | |
| 130 | +\emph{cross-sectional, regime-dependent re-rating}---the market repriced \emph{which firms and | |
| 131 | +sectors} are AI-exposed once AI became salient, rather than rewarding year-to-year changes in any | |
| 132 | +single firm's wording. The findings provide direct, text-based evidence for an attention- and | |
| 133 | +narrative-driven repricing of AI exposure, and illustrate the value of embedding-based disclosure | |
| 134 | +measurement for asset pricing. | |
| 135 | + | |
| 136 | +\par\endgroup | |
| 137 | +} | |
| 138 | +\newcommand{\WPkeywords}{textual analysis, sentence embeddings, artificial intelligence, disclosure, cross-section of returns, investor attention, event study, generative AI} | |
| 139 | +\newcommand{\WPjel}{G12, G14, G17, M41, O33} | |
| 140 | + | |
| 141 | +% --- Authors --- | |
| 142 | +\newcommand{\WPauthor}{Manel Kammoun \quad Djerrycharli Tandjambianda \quad Simon-Pierre Boucher} | |
| 143 | +\newcommand{\WPaffiliation}{% | |
| 144 | + Département des sciences administratives\\ | |
| 145 | + Université du Québec en Outaouais% | |
| 146 | +} | |
| 147 | +\newcommand{\WPemail}{% | |
| 148 | + \href{mailto:manel.kammoun@uqo.ca}{manel.kammoun@uqo.ca} \,\textperiodcentered\, | |
| 149 | + \href{mailto:djerrycharli.tandjambianda@uqo.ca}{djerrycharli.tandjambianda@uqo.ca} \,\textperiodcentered\, | |
| 150 | + \href{mailto:simon-pierre.boucher@uqo.ca}{simon-pierre.boucher@uqo.ca}% | |
| 151 | +} | |
| 152 | +\newcommand{\WPaddress}{% | |
| 153 | + Gatineau -- Pavillon Alexandre-Taché\\ | |
| 154 | + 283, boulevard Alexandre-Taché\\ | |
| 155 | + Gatineau, Québec, Canada J9A 1L8% | |
| 156 | +} | |
| 157 | + | |
| 158 | +% ============================================================================ | |
| 159 | +% DOCUMENT | |
| 160 | +% ============================================================================ | |
| 161 | +\begin{document} | |
| 162 | + | |
| 163 | +% --- Title Page --- | |
| 164 | +\input{sections/titlepage} | |
| 165 | + | |
| 166 | +% --- Main Body --- | |
| 167 | +\input{sections/introduction} | |
| 168 | +\input{sections/literature} | |
| 169 | +\input{sections/data} | |
| 170 | +\input{sections/methodology} | |
| 171 | +\input{sections/results} | |
| 172 | +\input{sections/robustness} | |
| 173 | +\input{sections/discussion} | |
| 174 | +\input{sections/conclusion} | |
| 175 | + | |
| 176 | +% --- References --- | |
| 177 | +\newpage | |
| 178 | +\bibliography{references} | |
| 179 | + | |
| 180 | +% --- Appendix --- | |
| 181 | +\input{appendix/appendix} | |
| 182 | + | |
| 183 | +\end{document} | |
added
paper/references.bib
+340 −0
@@ -0,0 +1,340 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +% References — BibTeX Database | |
| 3 | +% "Does the Language of Artificial Intelligence Move Markets?" | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +@article{acemoglu2020wrong, | |
| 7 | + author = {Acemoglu, Daron and Restrepo, Pascual}, | |
| 8 | + title = {Robots and Jobs: Evidence from {US} Labor Markets}, | |
| 9 | + journal = {Journal of Political Economy}, | |
| 10 | + volume = {128}, | |
| 11 | + number = {6}, | |
| 12 | + pages = {2188--2244}, | |
| 13 | + year = {2020} | |
| 14 | +} | |
| 15 | + | |
| 16 | +@article{babina2024aiinvestment, | |
| 17 | + author = {Babina, Tania and Fedyk, Anastassia and He, Alex and Hodson, James}, | |
| 18 | + title = {Artificial Intelligence, Firm Growth, and Product Innovation}, | |
| 19 | + journal = {Journal of Financial Economics}, | |
| 20 | + volume = {151}, | |
| 21 | + pages = {103745}, | |
| 22 | + year = {2024} | |
| 23 | +} | |
| 24 | + | |
| 25 | +@article{bakerwurgler2006, | |
| 26 | + author = {Baker, Malcolm and Wurgler, Jeffrey}, | |
| 27 | + title = {Investor Sentiment and the Cross-Section of Stock Returns}, | |
| 28 | + journal = {Journal of Finance}, | |
| 29 | + volume = {61}, | |
| 30 | + number = {4}, | |
| 31 | + pages = {1645--1680}, | |
| 32 | + year = {2006} | |
| 33 | +} | |
| 34 | + | |
| 35 | +@article{barberodean2008, | |
| 36 | + author = {Barber, Brad M. and Odean, Terrance}, | |
| 37 | + title = {All That Glitters: The Effect of Attention and News on the Buying Behavior of Individual and Institutional Investors}, | |
| 38 | + journal = {Review of Financial Studies}, | |
| 39 | + volume = {21}, | |
| 40 | + number = {2}, | |
| 41 | + pages = {785--818}, | |
| 42 | + year = {2008} | |
| 43 | +} | |
| 44 | + | |
| 45 | +@article{bolton2021risk, | |
| 46 | + author = {Bolton, Patrick and Kacperczyk, Marcin}, | |
| 47 | + title = {Do Investors Care about Carbon Risk?}, | |
| 48 | + journal = {Journal of Financial Economics}, | |
| 49 | + volume = {142}, | |
| 50 | + number = {2}, | |
| 51 | + pages = {517--549}, | |
| 52 | + year = {2021} | |
| 53 | +} | |
| 54 | + | |
| 55 | +@article{bybee2024narrative, | |
| 56 | + author = {Bybee, Leland and Kelly, Bryan and Manela, Asaf and Xiu, Dacheng}, | |
| 57 | + title = {Business News and Business Cycles}, | |
| 58 | + journal = {Journal of Finance}, | |
| 59 | + volume = {79}, | |
| 60 | + number = {5}, | |
| 61 | + pages = {3105--3147}, | |
| 62 | + year = {2024} | |
| 63 | +} | |
| 64 | + | |
| 65 | +@article{cameron2011, | |
| 66 | + author = {Cameron, A. Colin and Gelbach, Jonah B. and Miller, Douglas L.}, | |
| 67 | + title = {Robust Inference with Multiway Clustering}, | |
| 68 | + journal = {Journal of Business \& Economic Statistics}, | |
| 69 | + volume = {29}, | |
| 70 | + number = {2}, | |
| 71 | + pages = {238--249}, | |
| 72 | + year = {2011} | |
| 73 | +} | |
| 74 | + | |
| 75 | +@article{cohen2020lazy, | |
| 76 | + author = {Cohen, Lauren and Malloy, Christopher and Nguyen, Quoc}, | |
| 77 | + title = {Lazy Prices}, | |
| 78 | + journal = {Journal of Finance}, | |
| 79 | + volume = {75}, | |
| 80 | + number = {3}, | |
| 81 | + pages = {1371--1415}, | |
| 82 | + year = {2020} | |
| 83 | +} | |
| 84 | + | |
| 85 | +@techreport{cong2022textfactor, | |
| 86 | + author = {Cong, Lin William and Liang, Tengyuan and Zhang, Xiao}, | |
| 87 | + title = {Textual Factors: A Scalable, Interpretable, and Data-Driven Approach to Analyzing Unstructured Information}, | |
| 88 | + institution = {Working Paper}, | |
| 89 | + year = {2022} | |
| 90 | +} | |
| 91 | + | |
| 92 | +@article{da2011, | |
| 93 | + author = {Da, Zhi and Engelberg, Joseph and Gao, Pengjie}, | |
| 94 | + title = {In Search of Attention}, | |
| 95 | + journal = {Journal of Finance}, | |
| 96 | + volume = {66}, | |
| 97 | + number = {5}, | |
| 98 | + pages = {1461--1499}, | |
| 99 | + year = {2011} | |
| 100 | +} | |
| 101 | + | |
| 102 | +@article{dellavigna2009, | |
| 103 | + author = {DellaVigna, Stefano and Pollet, Joshua M.}, | |
| 104 | + title = {Investor Inattention and {Friday} Earnings Announcements}, | |
| 105 | + journal = {Journal of Finance}, | |
| 106 | + volume = {64}, | |
| 107 | + number = {2}, | |
| 108 | + pages = {709--749}, | |
| 109 | + year = {2009} | |
| 110 | +} | |
| 111 | + | |
| 112 | +@techreport{eisfeldt2023generative, | |
| 113 | + author = {Eisfeldt, Andrea L. and Schubert, Gregor and Zhang, Miao Ben}, | |
| 114 | + title = {Generative {AI} and Firm Values}, | |
| 115 | + institution = {National Bureau of Economic Research}, | |
| 116 | + type = {NBER Working Paper}, | |
| 117 | + number = {31222}, | |
| 118 | + year = {2023} | |
| 119 | +} | |
| 120 | + | |
| 121 | +@article{famafrench2015, | |
| 122 | + author = {Fama, Eugene F. and French, Kenneth R.}, | |
| 123 | + title = {A Five-Factor Asset Pricing Model}, | |
| 124 | + journal = {Journal of Financial Economics}, | |
| 125 | + volume = {116}, | |
| 126 | + number = {1}, | |
| 127 | + pages = {1--22}, | |
| 128 | + year = {2015} | |
| 129 | +} | |
| 130 | + | |
| 131 | +@article{famamacbeth1973, | |
| 132 | + author = {Fama, Eugene F. and MacBeth, James D.}, | |
| 133 | + title = {Risk, Return, and Equilibrium: Empirical Tests}, | |
| 134 | + journal = {Journal of Political Economy}, | |
| 135 | + volume = {81}, | |
| 136 | + number = {3}, | |
| 137 | + pages = {607--636}, | |
| 138 | + year = {1973} | |
| 139 | +} | |
| 140 | + | |
| 141 | +@article{gentzkow2019, | |
| 142 | + author = {Gentzkow, Matthew and Kelly, Bryan and Taddy, Matt}, | |
| 143 | + title = {Text as Data}, | |
| 144 | + journal = {Journal of Economic Literature}, | |
| 145 | + volume = {57}, | |
| 146 | + number = {3}, | |
| 147 | + pages = {535--574}, | |
| 148 | + year = {2019} | |
| 149 | +} | |
| 150 | + | |
| 151 | +@article{hirshleifer2009driven, | |
| 152 | + author = {Hirshleifer, David and Lim, Sonya S. and Teoh, Siew Hong}, | |
| 153 | + title = {Driven to Distraction: Extraneous Events and Underreaction to Earnings News}, | |
| 154 | + journal = {Journal of Finance}, | |
| 155 | + volume = {64}, | |
| 156 | + number = {5}, | |
| 157 | + pages = {2289--2325}, | |
| 158 | + year = {2009} | |
| 159 | +} | |
| 160 | + | |
| 161 | +@article{hirshleifer2013innovative, | |
| 162 | + author = {Hirshleifer, David and Hsu, Po-Hsuan and Li, Dongmei}, | |
| 163 | + title = {Innovative Efficiency and Stock Returns}, | |
| 164 | + journal = {Journal of Financial Economics}, | |
| 165 | + volume = {107}, | |
| 166 | + number = {3}, | |
| 167 | + pages = {632--654}, | |
| 168 | + year = {2013} | |
| 169 | +} | |
| 170 | + | |
| 171 | +@article{hoberg2010product, | |
| 172 | + author = {Hoberg, Gerard and Phillips, Gordon}, | |
| 173 | + title = {Product Market Synergies and Competition in Mergers and Acquisitions: A Text-Based Analysis}, | |
| 174 | + journal = {Review of Financial Studies}, | |
| 175 | + volume = {23}, | |
| 176 | + number = {10}, | |
| 177 | + pages = {3773--3811}, | |
| 178 | + year = {2010} | |
| 179 | +} | |
| 180 | + | |
| 181 | +@article{hobergphillips2016, | |
| 182 | + author = {Hoberg, Gerard and Phillips, Gordon}, | |
| 183 | + title = {Text-Based Network Industries and Endogenous Product Differentiation}, | |
| 184 | + journal = {Journal of Political Economy}, | |
| 185 | + volume = {124}, | |
| 186 | + number = {5}, | |
| 187 | + pages = {1423--1465}, | |
| 188 | + year = {2016} | |
| 189 | +} | |
| 190 | + | |
| 191 | +@article{kelly2019textregression, | |
| 192 | + author = {Kelly, Bryan and Manela, Asaf and Moreira, Alan}, | |
| 193 | + title = {Text Selection}, | |
| 194 | + journal = {Journal of Business \& Economic Statistics}, | |
| 195 | + volume = {39}, | |
| 196 | + number = {4}, | |
| 197 | + pages = {859--879}, | |
| 198 | + year = {2021} | |
| 199 | +} | |
| 200 | + | |
| 201 | +@article{kogan2017technological, | |
| 202 | + author = {Kogan, Leonid and Papanikolaou, Dimitris and Seru, Amit and Stoffman, Noah}, | |
| 203 | + title = {Technological Innovation, Resource Allocation, and Growth}, | |
| 204 | + journal = {Quarterly Journal of Economics}, | |
| 205 | + volume = {132}, | |
| 206 | + number = {2}, | |
| 207 | + pages = {665--712}, | |
| 208 | + year = {2017} | |
| 209 | +} | |
| 210 | + | |
| 211 | +@article{koganpapanikolaou2014, | |
| 212 | + author = {Kogan, Leonid and Papanikolaou, Dimitris}, | |
| 213 | + title = {Growth Opportunities, Technology Shocks, and Asset Prices}, | |
| 214 | + journal = {Journal of Finance}, | |
| 215 | + volume = {69}, | |
| 216 | + number = {2}, | |
| 217 | + pages = {675--718}, | |
| 218 | + year = {2014} | |
| 219 | +} | |
| 220 | + | |
| 221 | +@techreport{lopezlira2023risk, | |
| 222 | + author = {Lopez-Lira, Alejandro}, | |
| 223 | + title = {Risk Factors That Matter: Textual Analysis of Risk Disclosures for the Cross-Section of Returns}, | |
| 224 | + institution = {Working Paper}, | |
| 225 | + year = {2023} | |
| 226 | +} | |
| 227 | + | |
| 228 | +@article{lm2011, | |
| 229 | + author = {Loughran, Tim and McDonald, Bill}, | |
| 230 | + title = {When Is a Liability Not a Liability? Textual Analysis, Dictionaries, and 10-Ks}, | |
| 231 | + journal = {Journal of Finance}, | |
| 232 | + volume = {66}, | |
| 233 | + number = {1}, | |
| 234 | + pages = {35--65}, | |
| 235 | + year = {2011} | |
| 236 | +} | |
| 237 | + | |
| 238 | +@article{lm2016, | |
| 239 | + author = {Loughran, Tim and McDonald, Bill}, | |
| 240 | + title = {Textual Analysis in Accounting and Finance: A Survey}, | |
| 241 | + journal = {Journal of Accounting Research}, | |
| 242 | + volume = {54}, | |
| 243 | + number = {4}, | |
| 244 | + pages = {1187--1230}, | |
| 245 | + year = {2016} | |
| 246 | +} | |
| 247 | + | |
| 248 | +@article{mackinlay1997, | |
| 249 | + author = {MacKinlay, A. Craig}, | |
| 250 | + title = {Event Studies in Economics and Finance}, | |
| 251 | + journal = {Journal of Economic Literature}, | |
| 252 | + volume = {35}, | |
| 253 | + number = {1}, | |
| 254 | + pages = {13--39}, | |
| 255 | + year = {1997} | |
| 256 | +} | |
| 257 | + | |
| 258 | +@article{neweywest1987, | |
| 259 | + author = {Newey, Whitney K. and West, Kenneth D.}, | |
| 260 | + title = {A Simple, Positive Semi-Definite, Heteroskedasticity and Autocorrelation Consistent Covariance Matrix}, | |
| 261 | + journal = {Econometrica}, | |
| 262 | + volume = {55}, | |
| 263 | + number = {3}, | |
| 264 | + pages = {703--708}, | |
| 265 | + year = {1987} | |
| 266 | +} | |
| 267 | + | |
| 268 | +@article{pastor2021sustainable, | |
| 269 | + author = {P{\'a}stor, {\v{L}}ubo{\v{s}} and Stambaugh, Robert F. and Taylor, Lucian A.}, | |
| 270 | + title = {Sustainable Investing in Equilibrium}, | |
| 271 | + journal = {Journal of Financial Economics}, | |
| 272 | + volume = {142}, | |
| 273 | + number = {2}, | |
| 274 | + pages = {550--571}, | |
| 275 | + year = {2021} | |
| 276 | +} | |
| 277 | + | |
| 278 | +@article{pastor2022dissecting, | |
| 279 | + author = {P{\'a}stor, {\v{L}}ubo{\v{s}} and Stambaugh, Robert F. and Taylor, Lucian A.}, | |
| 280 | + title = {Dissecting Green Returns}, | |
| 281 | + journal = {Journal of Financial Economics}, | |
| 282 | + volume = {146}, | |
| 283 | + number = {2}, | |
| 284 | + pages = {403--424}, | |
| 285 | + year = {2022} | |
| 286 | +} | |
| 287 | + | |
| 288 | +@article{petersen2009, | |
| 289 | + author = {Petersen, Mitchell A.}, | |
| 290 | + title = {Estimating Standard Errors in Finance Panel Data Sets: Comparing Approaches}, | |
| 291 | + journal = {Review of Financial Studies}, | |
| 292 | + volume = {22}, | |
| 293 | + number = {1}, | |
| 294 | + pages = {435--480}, | |
| 295 | + year = {2009} | |
| 296 | +} | |
| 297 | + | |
| 298 | +@inproceedings{reimers2019sbert, | |
| 299 | + author = {Reimers, Nils and Gurevych, Iryna}, | |
| 300 | + title = {Sentence-{BERT}: Sentence Embeddings Using {Siamese} {BERT}-Networks}, | |
| 301 | + booktitle = {Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing (EMNLP)}, | |
| 302 | + year = {2019} | |
| 303 | +} | |
| 304 | + | |
| 305 | +@article{shiller2017narrative, | |
| 306 | + author = {Shiller, Robert J.}, | |
| 307 | + title = {Narrative Economics}, | |
| 308 | + journal = {American Economic Review}, | |
| 309 | + volume = {107}, | |
| 310 | + number = {4}, | |
| 311 | + pages = {967--1004}, | |
| 312 | + year = {2017} | |
| 313 | +} | |
| 314 | + | |
| 315 | +@article{tetlock2007, | |
| 316 | + author = {Tetlock, Paul C.}, | |
| 317 | + title = {Giving Content to Investor Sentiment: The Role of Media in the Stock Market}, | |
| 318 | + journal = {Journal of Finance}, | |
| 319 | + volume = {62}, | |
| 320 | + number = {3}, | |
| 321 | + pages = {1139--1168}, | |
| 322 | + year = {2007} | |
| 323 | +} | |
| 324 | + | |
| 325 | +@article{tetlock2008, | |
| 326 | + author = {Tetlock, Paul C. and Saar-Tsechansky, Maytal and Macskassy, Sofus}, | |
| 327 | + title = {More Than Words: Quantifying Language to Measure Firms' Fundamentals}, | |
| 328 | + journal = {Journal of Finance}, | |
| 329 | + volume = {63}, | |
| 330 | + number = {3}, | |
| 331 | + pages = {1437--1467}, | |
| 332 | + year = {2008} | |
| 333 | +} | |
| 334 | + | |
| 335 | +@techreport{webb2020, | |
| 336 | + author = {Webb, Michael}, | |
| 337 | + title = {The Impact of Artificial Intelligence on the Labor Market}, | |
| 338 | + institution = {Stanford University Working Paper}, | |
| 339 | + year = {2020} | |
| 340 | +} | |
added
paper/sections/conclusion.tex
+36 −0
@@ -0,0 +1,36 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +\section{Conclusion} | |
| 3 | +\label{sec:conclusion} | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +Using a semantic, embedding-based measure of artificial-intelligence language in the SEC filings of | |
| 7 | +S\&P~500 firms, linked to Yahoo Finance returns and standard factor data, we have shown that the | |
| 8 | +pricing of AI disclosure is a \emph{conditional, regime-dependent} phenomenon. For most of the 2010s, | |
| 9 | +how intensively a firm wrote about adopting, building, or being threatened by AI bore only a faint | |
| 10 | +relation to its subsequent returns, and a risk-adjusted long--short strategy earned no reliable | |
| 11 | +alpha. After the launch of ChatGPT in late 2022, the same disclosure became strongly priced: the | |
| 12 | +high-minus-low AI-disclosure return spread jumped from roughly $+2$ to roughly $+15$ percentage points | |
| 13 | +per year, and the long--short Sharpe ratio rose from 0.15 to 1.33. | |
| 14 | + | |
| 15 | +The break is robust to signal definition, horizon, dimension reduction, and the exclusion of mega-cap | |
| 16 | +winners; it is specific to AI-related language (ESG and climate disclosure, tested identically, were | |
| 17 | +\emph{penalized} in the same window); it is corroborated by a market-model event study in which | |
| 18 | +high-AI firms earned $+10$ points of additional abnormal return in the year after ChatGPT; and it | |
| 19 | +operates as a cross-sectional re-rating of persistent firm- and sector-level exposure rather than a | |
| 20 | +reward for year-to-year wording, fading under firm fixed effects. | |
| 21 | + | |
| 22 | +Two messages emerge, one economic and one methodological. The economic message is that markets price | |
| 23 | +the \emph{language} of AI---but only once AI commands their attention; value-relevant information can | |
| 24 | +sit unpriced in plain sight for years until a salient catalyst turns the market's gaze toward it, | |
| 25 | +after which the repricing is abrupt rather than gradual. The methodological message is that | |
| 26 | +embedding-based measurement of disclosure content opens a productive avenue for asset pricing, | |
| 27 | +capturing economically meaningful, multi-faceted exposures at scale and revealing pricing dynamics | |
| 28 | +that keyword counts (which cannot read meaning) and firm-differenced designs (which discard the | |
| 29 | +persistent cross-sectional variation that turns out to matter) would both miss. As generative AI | |
| 30 | +continues to reshape the corporate landscape, the semantic footprint it leaves in mandatory disclosure | |
| 31 | +offers a rich, and now demonstrably value-relevant, signal. Several next steps follow naturally: | |
| 32 | +extending the panel beyond the S\&P~500 to the mid- and small-cap firms where attention frictions are | |
| 33 | +larger and the effect may be stronger; incorporating earnings-call transcripts and patent text as | |
| 34 | +complementary, higher-frequency AI-exposure measures; and---perhaps most consequentially for | |
| 35 | +investors---tracking whether the post-2022 premium persists, decays, or reverses as the AI narrative | |
| 36 | +matures and the market's attention becomes fully impounded in prices. | |
added
paper/sections/data.tex
+152 −0
@@ -0,0 +1,152 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +\section{Data and Variable Construction} | |
| 3 | +\label{sec:data} | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +\subsection{The semantic factor panel} | |
| 7 | +\label{subsec:semantic} | |
| 8 | +The backbone of our study is the EDGAR Research Database, an infrastructure that downloads, parses, | |
| 9 | +and semantically scores SEC filings for S\&P~500 firms. For each filing the pipeline proceeds in four | |
| 10 | +steps. It (i)~extracts the canonical sections of the 10-K---Risk Factors, Management's Discussion and | |
| 11 | +Analysis (MD\&A), legal proceedings, the financial statements, and so on---so that the location as | |
| 12 | +well as the content of each passage is known; (ii)~splits each section into overlapping text chunks of | |
| 13 | +a few sentences, the overlap ensuring that a thought spanning a chunk boundary is not lost; | |
| 14 | +(iii)~embeds every chunk into a 384-dimensional vector with the \texttt{all-MiniLM-L6-v2} sentence | |
| 15 | +transformer, a compact and widely validated model that maps semantically similar passages to nearby | |
| 16 | +points in the embedding space; and (iv)~scores each chunk by its cosine similarity to a set of | |
| 17 | +\emph{anchor} passages that define eight economic concepts. The anchors are short, deliberately | |
| 18 | +written paragraphs that articulate each concept in natural language. The AI-adoption anchor, for | |
| 19 | +instance, describes a firm ``internally using artificial intelligence, machine learning, generative | |
| 20 | +AI, large language models, automation, predictive analytics \dots\ to improve productivity, | |
| 21 | +operations, efficiency, decision-making.'' Cosine similarity to such an anchor measures how closely a | |
| 22 | +passage's \emph{meaning} matches the concept, on a scale from $-1$ to $1$, regardless of the exact | |
| 23 | +words used---so that a sentence on ``deploying neural networks to forecast demand'' scores highly on | |
| 24 | +AI adoption even though it shares no keyword with the anchor. This is precisely the paraphrase- and | |
| 25 | +context-sensitivity that keyword counts lack. | |
| 26 | + | |
| 27 | +Chunk-level scores are aggregated to the filing level using section weights that emphasize the parts | |
| 28 | +of the document where the concept is most likely to be discussed substantively (e.g.\ MD\&A and Risk | |
| 29 | +Factors), and then to the firm-fiscal-year level. For each concept the database reports the mean, | |
| 30 | +maximum, standard deviation, top-5\% tail, and section-weighted mean (\texttt{wmean}) of chunk | |
| 31 | +similarities, along with first and second differences, percentage changes, and three-year rolling | |
| 32 | +statistics. The eight concepts comprise three AI facets---\emph{AI adoption}, \emph{AI | |
| 33 | +infrastructure}, \emph{AI disruption risk}---and five others used as placebos: \emph{ESG commitment}, | |
| 34 | +\emph{climate risk}, \emph{cybersecurity}, \emph{automation/labor}, and \emph{macro risk}. | |
| 35 | + | |
| 36 | +The resulting panel covers all 500 current S\&P~500 members across fiscal years 2010--2026, a total | |
| 37 | +of 7{,}869 firm-years. We take the section-weighted mean (\texttt{wmean}) as our headline signal | |
| 38 | +because it up-weights the forward-looking, strategy-rich sections; we verify robustness to the | |
| 39 | +simple mean and the top-5\% tail in Section~\ref{sec:robustness}. Our three primary signals are | |
| 40 | +therefore \texttt{ai\_adoption\_wmean} (\textbf{AI\,Adopt}), \texttt{ai\_infrastructure\_wmean} | |
| 41 | +(\textbf{AI\,Infra}), and \texttt{ai\_disruption\_risk\_wmean} (\textbf{AI\,Risk}); we also form a | |
| 42 | +standardized opportunity composite, $\text{AI\,Compos}=\tfrac12[z(\text{AI\,Adopt})+z(\text{AI\,Infra})]$. | |
| 43 | + | |
| 44 | +\subsection{Price and factor data} | |
| 45 | +\label{subsec:price} | |
| 46 | +We download monthly adjusted-close prices for all 500 tickers from Yahoo Finance over 2009--2026 | |
| 47 | +(handling share-class tickers such as BRK.B and BF.B), the SPDR S\&P~500 ETF (SPY) as the market | |
| 48 | +benchmark, and the Fama--French five factors \citep{famafrench2015}, the momentum factor, and the | |
| 49 | +risk-free rate from the Kenneth R.\ French data library. Monthly simple returns are computed from | |
| 50 | +adjusted prices, which incorporate dividends and splits. A market-capitalization proxy is formed as | |
| 51 | +shares outstanding (from Yahoo Finance) times the historical price; we use it for value-weighting and | |
| 52 | +as a size control, acknowledging the shares-held-constant approximation. | |
| 53 | + | |
| 54 | +\subsection{Timing and the construction of tradeable returns} | |
| 55 | +\label{subsec:timing} | |
| 56 | +The single most important design choice in a disclosure--return study is timing, because a signal | |
| 57 | +that inadvertently peeks at information unavailable in real time can manufacture predictability that | |
| 58 | +no investor could have traded on. A 10-K covering fiscal year $Y$ becomes public only when filed, | |
| 59 | +typically in February or March of year $Y{+}1$. To guarantee that our signal is in the public | |
| 60 | +information set before any return is measured, we follow the Fama--French portfolio convention: | |
| 61 | +signals from fiscal year $Y$ are used to form portfolios at the end of June of $Y{+}1$, and we measure | |
| 62 | +the forward twelve-month return from July of $Y{+}1$ through June of $Y{+}2$. The roughly three-month | |
| 63 | +gap between the typical filing date and June~30 builds in a margin that rules out look-ahead bias even | |
| 64 | +for late filers, while the July-to-June holding window is the standard one in the cross-sectional | |
| 65 | +literature and so keeps our estimates comparable to it. After requiring a valid forward return with | |
| 66 | +adequate monthly coverage, we obtain 6{,}852 firm-years spanning formation years 2010--2024, with | |
| 67 | +return realizations extending through mid-2026. | |
| 68 | + | |
| 69 | +\subsection{Controls and standardization} | |
| 70 | +\label{subsec:controls} | |
| 71 | +For each formation year we compute cross-sectional $z$-scores of every signal, so that all | |
| 72 | +coefficients are expressed per cross-sectional standard deviation and the powerful secular rise in AI | |
| 73 | +language (documented below) is differenced out---in any given year we compare firms to their | |
| 74 | +contemporaneous peers. We control for the three workhorse return determinants: \emph{size} (log | |
| 75 | +market-cap proxy), \emph{momentum} (the firm's own return over the twelve months ending at formation, | |
| 76 | +skipping the last month), and \emph{idiosyncratic volatility} (the annualized standard deviation of | |
| 77 | +monthly returns over the trailing year). In regressions, returns and continuous controls are | |
| 78 | +winsorized at the 1st and 99th percentiles to limit the influence of outliers; in portfolio sorts we | |
| 79 | +use raw returns. Appendix~\ref{app:variables} gives precise definitions. | |
| 80 | + | |
| 81 | +\subsection{Summary statistics} | |
| 82 | +\label{subsec:summary} | |
| 83 | +Table~\ref{tab:summ} reports summary statistics for the estimation sample. The average forward | |
| 84 | +twelve-month return is 18.6\% (reflecting the strong 2011--2026 bull market for U.S.\ large caps), | |
| 85 | +with a wide cross-sectional dispersion (standard deviation 41.5\%). The AI signals are small in | |
| 86 | +level---cosine similarities of disclosure to narrow anchors---but exhibit meaningful cross-sectional | |
| 87 | +variation. Table~\ref{tab:corr} reports correlations. Two features stand out. First, the three AI | |
| 88 | +signals are highly collinear (pairwise $\rho$ between 0.75 and 0.86): firms that write more about | |
| 89 | +adopting AI also write more about AI infrastructure and AI risk. They are best understood as three | |
| 90 | +lenses on a single latent construct---\emph{AI salience}---a point we formalize with | |
| 91 | +principal-components analysis in Section~\ref{sec:robustness}. Second, the raw (unconditional) | |
| 92 | +correlation between each AI signal and the forward return is positive but small ($\approx 0.04$), | |
| 93 | +foreshadowing that the unconditional relation is weak and that the action lies in its time variation. | |
| 94 | + | |
| 95 | +\input{tables/tab_summary} | |
| 96 | +\input{tables/tab_corr} | |
| 97 | + | |
| 98 | +\subsection{The secular rise of AI language} | |
| 99 | +\label{subsec:trend} | |
| 100 | +Before turning to returns, Figure~\ref{fig:trend} documents the raw phenomenon that motivates our | |
| 101 | +within-year design. The cross-sectional mean similarity to all three AI concepts trended steadily | |
| 102 | +upward through the 2010s and inflected sharply after 2022; by 2025--2026 AI language saturates | |
| 103 | +S\&P~500 disclosure. This is precisely why our tests rely on within-year cross-sectional ranking: the | |
| 104 | +interesting question is not whether the index as a whole talks more about AI over time (it | |
| 105 | +emphatically does), but whether, \emph{in a given year}, firms that talk about AI more than their | |
| 106 | +peers subsequently earn different returns. Figure~\ref{fig:sectorbox} shows that AI disclosure is | |
| 107 | +also unevenly distributed across sectors, concentrated in Information Technology, Communication | |
| 108 | +Services, and Industrials---a fact that will matter for interpreting the sector channel. | |
| 109 | + | |
| 110 | +\begin{figure}[htbp]\centering | |
| 111 | +\includegraphics[width=0.9\textwidth]{fig4_ai_language_trend.png} | |
| 112 | +\caption{\textbf{The secular rise of AI language in S\&P~500 disclosure.} The figure plots the | |
| 113 | +cross-sectional mean of the section-weighted cosine similarity of 10-K text to each of the three AI | |
| 114 | +anchors (adoption, infrastructure, and disruption risk), by fiscal year over 2010--2026. All three | |
| 115 | +measures trend steadily upward through the 2010s and inflect sharply after the November 2022 launch of | |
| 116 | +ChatGPT (dashed vertical line), by which point AI language saturates index disclosure. This secular | |
| 117 | +trend motivates the within-year cross-sectional design used throughout the paper.} | |
| 118 | +\label{fig:trend} | |
| 119 | +\end{figure} | |
| 120 | + | |
| 121 | +\begin{figure}[htbp]\centering | |
| 122 | +\includegraphics[width=0.9\textwidth]{fig12_sector_box.png} | |
| 123 | +\caption{\textbf{AI disclosure across GICS sectors.} The figure shows box plots of the firm-level | |
| 124 | +AI-adoption score within each GICS sector (boxes span the interquartile range, the red line marks the | |
| 125 | +sector median, and outliers are suppressed for legibility). AI disclosure is concentrated in | |
| 126 | +technology-intensive sectors---Information Technology, Communication Services, and Industrials---a | |
| 127 | +concentration that motivates the sector-channel analysis and the sector-neutral robustness checks | |
| 128 | +reported later.} | |
| 129 | +\label{fig:sectorbox} | |
| 130 | +\end{figure} | |
| 131 | + | |
| 132 | +\subsection{Which firms disclose the most AI? Descriptive evidence} | |
| 133 | +\label{subsec:topfirms} | |
| 134 | +Table~\ref{tab:topfirms} lists the ten most AI-intensive S\&P~500 firms by average AI-adoption score | |
| 135 | +over the full sample. The list is instructive in two ways. First, it has strong face validity: it | |
| 136 | +features enterprise-technology and software firms (Hewlett Packard Enterprise, Intel, IBM, Tyler | |
| 137 | +Technologies, Autodesk), an algorithm-centric platform (Uber), and data-intensive financials (BNY | |
| 138 | +Mellon, Berkshire Hathaway), exactly the kinds of firms one would expect to write substantively about | |
| 139 | +deploying AI. Second, the list is \emph{not} confined to the technology sector: industrials (Cummins) | |
| 140 | +and energy (EOG Resources) appear, confirming that intensive AI disclosure cuts across the GICS | |
| 141 | +taxonomy and that our continuous, text-based measure captures variation a sector dummy would miss. | |
| 142 | + | |
| 143 | +A further descriptive fact is central to our interpretation: the AI signal is highly | |
| 144 | +\emph{persistent}. The year-over-year cross-sectional rank autocorrelation of the AI composite is | |
| 145 | +0.88, and even at a five-year horizon it remains 0.73. Firms that are AI-intensive disclosers stay | |
| 146 | +AI-intensive; the measure captures a slow-moving structural characteristic of the firm rather than | |
| 147 | +transient wording. This persistence has two implications we exploit later: it explains why firm fixed | |
| 148 | +effects absorb most of the signal (there is little within-firm variation to identify), and it | |
| 149 | +underpins the difference-in-differences design, in which we fix each firm's exposure at its pre-event | |
| 150 | +level precisely because that level is stable. | |
| 151 | + | |
| 152 | +\input{tables/tab_topfirms} | |
added
paper/sections/discussion.tex
+99 −0
@@ -0,0 +1,99 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +\section{Discussion: Mechanism and Interpretation} | |
| 3 | +\label{sec:discussion} | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +What economic mechanism best fits this constellation of facts? We find an attention- and | |
| 7 | +narrative-driven repricing the most parsimonious explanation, and we read the evidence as follows. | |
| 8 | + | |
| 9 | +\paragraph{The information pre-existed; the attention did not.} Firms disclosed their AI engagement | |
| 10 | +for years before it was priced. The semantic content of those disclosures was, in cross-section, only | |
| 11 | +faintly related to returns through 2021. What changed in late 2022 was not the information but its | |
| 12 | +\emph{salience}: a consumer breakthrough (ChatGPT) made AI the dominant market narrative | |
| 13 | +\citep{shiller2017narrative}, drawing investor attention \citep{da2011,barberodean2008} to a body of | |
| 14 | +disclosure that had been hiding in plain sight. The abrupt, near-simultaneous repricing across the | |
| 15 | +cross-section---visible in the event study within months of the launch---is the signature of an | |
| 16 | +attention shock rather than the gradual accrual of a risk premium. | |
| 17 | + | |
| 18 | +\paragraph{It is a re-rating of levels, not of changes.} The disappearance of the effect under firm | |
| 19 | +fixed effects, the muted difference-in-differences estimates, and the event-time profile all point the | |
| 20 | +same way: the market repriced the persistent \emph{level} of a firm's AI exposure, not the | |
| 21 | +year-to-year change in its wording. This has a clear practical corollary---firms cannot mechanically | |
| 22 | +earn the premium by adding AI boilerplate to their filings (and our top-5\% and simple-mean | |
| 23 | +robustness suggests the measure is not easily gamed)---and a clear methodological one: studies that | |
| 24 | +difference out firm effects will understate the cross-sectional importance of disclosure content. | |
| 25 | + | |
| 26 | +\paragraph{It operates substantially, but not entirely, through sectors.} The sector-neutral and | |
| 27 | +sector-fixed-effects results show that much of the AI premium reflects the re-rating of AI-exposed | |
| 28 | +\emph{sectors}---technology, communication services, and the industrial firms supplying the AI | |
| 29 | +build-out---relative to the rest of the index. This is economically sensible: the generative-AI boom | |
| 30 | +was, to first order, a sectoral reallocation of expected cash flows and valuations. Yet a positive | |
| 31 | +within-sector residual remains in the event study, indicating that the firm's own disclosure carried | |
| 32 | +incremental information even among industry peers. | |
| 33 | + | |
| 34 | +\paragraph{The thematic asymmetry is telling.} Perhaps the most revealing single fact is the placebo: | |
| 35 | +in the very same post-2022 window, high-AI firms were rewarded while high-ESG and high-climate firms | |
| 36 | +were penalized. Markets did not simply reward verbose or virtuous-sounding disclosure; they rotated | |
| 37 | +toward one theme (AI) and away from another (sustainability). This is difficult to reconcile with a | |
| 38 | +purely mechanical or risk-based account and natural under a narrative-rotation view of investor | |
| 39 | +attention. | |
| 40 | + | |
| 41 | +\paragraph{Relation to the AI-asset-pricing literature.} Our findings complement | |
| 42 | +\citet{eisfeldt2023generative}, who show that an occupation-task measure of generative-AI exposure was | |
| 43 | +priced around ChatGPT. We reach a convergent conclusion from an entirely different measurement---firms' | |
| 44 | +own disclosure language---and extend it along the time dimension, showing that the same exposure was | |
| 45 | +\emph{un}priced for a decade beforehand. The agreement of two independent measures on the timing and | |
| 46 | +sign of the effect strengthens confidence that a real AI repricing occurred. | |
| 47 | + | |
| 48 | +\subsection{Implications} | |
| 49 | +Our findings carry distinct implications for three audiences. \emph{For investors and quantitative | |
| 50 | +strategists}, the results are a caution as much as an opportunity. The AI-disclosure signal delivered | |
| 51 | +a striking post-2022 Sharpe ratio, but the same signal was nearly inert for the preceding decade, and | |
| 52 | +the effect is absorbed by firm fixed effects---so a strategy that traded on year-to-year changes in AI | |
| 53 | +verbosity would have captured little. The tradeable content lies in the persistent cross-sectional | |
| 54 | +\emph{level} of AI exposure, and even that is partly a sector bet whose durability is unproven. The | |
| 55 | +honest reading is that disclosure-based AI signals are best viewed as a lens on a regime-dependent | |
| 56 | +theme rather than as a stable alpha source. \emph{For corporate managers and disclosure policy}, the | |
| 57 | +asymmetry between AI (rewarded) and ESG/climate (penalized) after 2022 illustrates how powerfully the | |
| 58 | +prevailing market narrative conditions the valuation consequences of what firms choose to emphasize. | |
| 59 | +Because the premium attaches to persistent, hard-to-fake exposure rather than to boilerplate, the | |
| 60 | +result does not invite cheap disclosure manipulation; but it does suggest that the market reads | |
| 61 | +filings for genuine strategic content and reprices it when attention turns. \emph{For researchers}, | |
| 62 | +the study demonstrates that embedding-based semantic measurement uncovers pricing dynamics invisible | |
| 63 | +to both keyword counts (which cannot distinguish meaning) and firm-differenced panels (which discard | |
| 64 | +the persistent cross-sectional variation that turns out to matter). | |
| 65 | + | |
| 66 | +\subsection{Summary of the evidence across designs} | |
| 67 | +It is worth stepping back to see how the designs corroborate one another, since each has different | |
| 68 | +weaknesses. The portfolio sorts establish the raw magnitude and its post-2022 timing but are | |
| 69 | +model-free and could in principle reflect risk; the factor-model spanning regressions show the | |
| 70 | +unconditional spread is not explained by standard factors yet is statistically weak over the full | |
| 71 | +sample; the sub-period and interaction tests localize the effect to the post-ChatGPT regime; the | |
| 72 | +placebo rules out a mechanical or generic-disclosure explanation by showing the opposite sign for ESG | |
| 73 | +and climate; the event study, using daily abnormal returns purged of beta, provides cleanly-timed, | |
| 74 | +cross-sectional confirmation within months of the catalyst; and the fixed-effects and | |
| 75 | +difference-in-differences estimates pin down that the priced object is persistent firm- and | |
| 76 | +sector-level exposure, not incremental wording. No single design is decisive, but their | |
| 77 | +convergence---on the same sign, the same timing, and a consistent economic story---is what gives us | |
| 78 | +confidence in the conclusion. | |
| 79 | + | |
| 80 | +\subsection{Limitations} | |
| 81 | +\label{subsec:limits} | |
| 82 | +Several caveats temper our conclusions. \emph{First}, the post-2022 window contains only three | |
| 83 | +formation cohorts, and the size-controlled premium is concentrated in the most recent (2024) cohort, | |
| 84 | +which captures the 2024--2025 AI-infrastructure capital-expenditure boom. The regime result is | |
| 85 | +economically large and consistent across designs, but its post-period rests on a short sample and | |
| 86 | +could in principle reflect a single extraordinary episode rather than a durable new regime; only | |
| 87 | +future data can settle this. \emph{Second}, our universe is current S\&P~500 membership, which | |
| 88 | +introduces survivorship and look-ahead-at-the-index-level bias. This biases the level of returns | |
| 89 | +upward but is less likely to drive the \emph{cross-sectional} AI--return relation that is our focus. | |
| 90 | +\emph{Third}, the market-capitalization proxy holds shares outstanding at their latest value, | |
| 91 | +approximating historical size with error. \emph{Fourth}, the semantic anchors, though carefully | |
| 92 | +written, embed the authors' definitional choices; different anchor wording would yield somewhat | |
| 93 | +different scores, although the robustness to mean/tail aggregations and to PCA mitigates this concern. | |
| 94 | +\emph{Fifth}, disclosure intensity is correlated with sector, and while our within-year, size-, | |
| 95 | +momentum-, and volatility-controlled tests and the sector-FE event study address this, we cannot fully | |
| 96 | +separate ``AI exposure'' from ``technology sector'' as the priced characteristic. \emph{Finally}, our | |
| 97 | +designs establish a robust association and an event-study-based timing argument, but not strict | |
| 98 | +causality; the attention-repricing interpretation is the most consistent with the evidence rather than | |
| 99 | +the only logically possible one. | |
added
paper/sections/introduction.tex
+121 −0
@@ -0,0 +1,121 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +\section{Introduction} | |
| 3 | +\label{sec:introduction} | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +The arrival of generative artificial intelligence has been the defining corporate-narrative shift | |
| 7 | +of the 2020s. In the span of barely three years following the public launch of ChatGPT in late | |
| 8 | +2022, the market capitalization of AI-linked firms swelled by trillions of dollars, ``AI'' vaulted | |
| 9 | +past every other theme in frequency on earnings calls, and the language of corporate disclosure | |
| 10 | +filled with references to large language models, generative tools, intelligent automation, and the | |
| 11 | +compute infrastructure that powers them. A technology that had been the preserve of research labs | |
| 12 | +and back-office analytics suddenly became the organizing story of public equity markets. This paper | |
| 13 | +asks a question that is simple to state but surprisingly demanding to answer well: did the | |
| 14 | +\emph{language} of AI in firms' mandatory disclosures carry information about their subsequent stock | |
| 15 | +returns---and if so, when did that information begin to be priced, and through what economic channel? | |
| 16 | + | |
| 17 | +Answering the question convincingly requires three ingredients that have only recently become jointly | |
| 18 | +feasible. The first is a large, machine-readable corpus of corporate disclosure. The second is a | |
| 19 | +measurement technology that captures the \emph{meaning} of text rather than the mere frequency of | |
| 20 | +keywords---one that recognizes that a firm describing how it ``deploys machine-learning models to | |
| 21 | +optimize its supply chain'' is talking about AI even when the three-letter acronym never appears. The | |
| 22 | +third is a clean, look-ahead-free mapping from disclosure to tradeable returns. We bring all three to | |
| 23 | +bear. Our laboratory is the universe of S\&P~500 constituents over fiscal years 2010--2026. Our raw | |
| 24 | +material is the full text of their annual reports (Form~10-K), parsed section by section. Our | |
| 25 | +measurement engine is the EDGAR Research Database, which embeds every text chunk with the | |
| 26 | +\texttt{all-MiniLM-L6-v2} sentence transformer and scores it by cosine similarity to a set of | |
| 27 | +carefully written ``anchor'' passages that define eight economic concepts. Three of these anchors | |
| 28 | +isolate distinct facets of AI engagement, each corresponding to a different way the technology bears | |
| 29 | +on firm value: \emph{internal AI adoption} (using AI to run the business more productively), | |
| 30 | +\emph{AI infrastructure exposure} (capital and revenue tied to the compute build-out), and \emph{AI | |
| 31 | +product-disruption risk} (the danger that AI commoditizes or displaces the firm's own offerings). The | |
| 32 | +result is a continuous, comparable, firm-year measure of how intensively---and in what sense---each | |
| 33 | +firm engages with AI in its own words, available for the entire index and spanning a decade and a | |
| 34 | +half. | |
| 35 | + | |
| 36 | +We pair these semantic scores with monthly adjusted prices for all 500 tickers from Yahoo Finance | |
| 37 | +and with the Fama--French five factors plus momentum. To avoid look-ahead bias we adopt the standard | |
| 38 | +portfolio-formation convention. Because a 10-K covering fiscal year $Y$ is filed and public by early | |
| 39 | +in year $Y{+}1$, we form signals at the end of June of $Y{+}1$ and measure the forward twelve-month | |
| 40 | +return from July of $Y{+}1$ to June of $Y{+}2$. The roughly three-month cushion between the typical | |
| 41 | +filing date and portfolio formation guarantees that the signal is in the public information set | |
| 42 | +before the holding period begins, even for late filers. This yields 6{,}852 firm-years with a | |
| 43 | +strictly tradeable forward return, spanning formation years 2010 through 2024. | |
| 44 | + | |
| 45 | +Our headline finding is that the pricing of AI language is \emph{not} a stable factor premium but a | |
| 46 | +regime-dependent re-rating that switched on with the generative-AI boom. For most of the 2010s, | |
| 47 | +sorting S\&P~500 firms on the intensity of their AI disclosure produced only a faint return pattern: | |
| 48 | +the equal-weighted spread between the highest and lowest quintiles averaged about $+2.4$ percentage | |
| 49 | +points per year---economically modest and statistically fragile---and a risk-adjusted long--short | |
| 50 | +portfolio earned an alpha that was both small and statistically insignificant. The information was | |
| 51 | +there in the filings, but the market was not paying for it. After the launch of ChatGPT in November | |
| 52 | +2022, the very same sort produced a spread of $+14.6$ percentage points per year, a more than sixfold | |
| 53 | +jump. This is not a subtle tilt buried in a long-run average; it is a sharp, datable change in how | |
| 54 | +the cross-section prices a fixed characteristic. The re-rating is visible from three independent | |
| 55 | +angles: it appears in every post-2022 formation cohort taken on its own, in a cumulative long--short | |
| 56 | +wealth curve that drifts sideways for a decade and then inflects sharply upward at the end of 2022, | |
| 57 | +and in a year-by-year Fama--MacBeth slope that hovers near zero through 2021 before turning large and | |
| 58 | +positive. | |
| 59 | + | |
| 60 | +A natural worry is that this pattern simply reflects the well-known rally of a handful of technology | |
| 61 | +mega-caps---that we have rediscovered the Magnificent~7 dressed in textual clothing. We confront this | |
| 62 | +concern head-on and reject it. The post-2022 spread is $+14.1$ percentage points \tstat{1.9} when the | |
| 63 | +``Magnificent~7'' are excluded and $+14.5$ points when the ten largest firms by market capitalization | |
| 64 | +are dropped: removing the very names that dominate the headline rally barely moves the estimate, so | |
| 65 | +the effect is broad-based across the index rather than an artifact of Nvidia, Microsoft, or their | |
| 66 | +peers. It is equally robust to how the signal is built and measured---to using the simple mean, the | |
| 67 | +section-weighted mean, or the top-5\% tail of similarity scores; to six-, twelve-, and twenty-four-month | |
| 68 | +holding horizons; and to replacing the three correlated AI signals with their first principal | |
| 69 | +component, a single index that alone explains 87\% of their common variation. | |
| 70 | + | |
| 71 | +Establishing that the spread is large and well-timed is only half the task; we then deploy three | |
| 72 | +complementary tests to pin down what the result is---and, equally important, what it is not. The | |
| 73 | +first is a \emph{placebo} exercise that re-runs the entire research design on the five non-AI semantic | |
| 74 | +factors in the database (ESG, climate, cybersecurity, automation/labor, and macro risk). The logic is | |
| 75 | +simple: if the post-2022 jump merely reflected a generic ``more disclosure earns more'' phenomenon, or | |
| 76 | +a mechanical artifact of our embedding-and-sorting pipeline, every factor should display the same break. | |
| 77 | +They do not. The post-2022 spread is large and positive for the AI factors, essentially zero for | |
| 78 | +macro-risk language, and---most tellingly---\emph{negative} for ESG and climate disclosure, meaning | |
| 79 | +high-ESG firms \emph{under}performed after 2022. The post-ChatGPT re-rating is specific to AI-related | |
| 80 | +content, not a property of disclosure intensity in general. The second test is a market-model | |
| 81 | +\emph{event study} around the 30~November 2022 ChatGPT launch. Firms in the top tercile of pre-event | |
| 82 | +AI disclosure---measured from their FY2021 10-K, the last report filed before anyone could have | |
| 83 | +anticipated the event---earned cumulative abnormal returns $+10.1$ percentage points higher than the | |
| 84 | +bottom tercile over the following year \tstat{1.97} and $+14.6$ points higher over eighteen months. | |
| 85 | +Because abnormal returns are purged of each firm's market-beta exposure, this is a clean | |
| 86 | +cross-sectional response to an unanticipated narrative shock rather than a reflection of high-AI firms | |
| 87 | +simply being higher-beta in a recovering market. The third test uses two-way fixed effects and | |
| 88 | +difference-in-differences to localize the mechanism within the cross-section. The premium is fully | |
| 89 | +absorbed by firm fixed effects and roughly halved by sector fixed effects, which tells us that the | |
| 90 | +durable, priced signal is the persistent \emph{level} of a firm's (and its sector's) AI exposure | |
| 91 | +relative to peers, not the year-to-year wiggle in its wording. | |
| 92 | + | |
| 93 | +Taken together, the four pieces of evidence---the datable break, the AI-specific placebo, the | |
| 94 | +event-study timing, and the fixed-effects anatomy---converge on a single interpretation: an | |
| 95 | +attention- and narrative-driven repricing. The textual evidence of firms' AI engagement accumulated | |
| 96 | +quietly in their filings for a decade and was barely priced. A salient catalyst---the consumer | |
| 97 | +breakthrough of generative AI---then drew investor attention to that pre-existing information, and | |
| 98 | +capital flowed toward the firms and sectors whose disclosures had already revealed the greatest AI | |
| 99 | +exposure. What looks like new information was in large part old information newly attended to. This is | |
| 100 | +the asset-pricing signature of limited attention and narrative economics, observed here not through an | |
| 101 | +indirect sentiment proxy but directly in the semantic content of mandatory disclosure. | |
| 102 | + | |
| 103 | +\paragraph{Contribution.} We make four contributions. \emph{First}, methodologically, we | |
| 104 | +demonstrate the value of embedding-based semantic measurement of disclosure for asset pricing: a | |
| 105 | +cosine-similarity-to-anchor design captures economically meaningful, multi-faceted exposure | |
| 106 | +(adoption vs.\ infrastructure vs.\ risk) that keyword counts cannot, and it does so at scale across | |
| 107 | +the entire S\&P~500 and a decade and a half of filings. \emph{Second}, substantively, we provide | |
| 108 | +text-based, look-ahead-free evidence that the cross-sectional pricing of AI exposure is a post-2022 | |
| 109 | +regime phenomenon rather than a long-standing premium. \emph{Third}, we discipline the finding with | |
| 110 | +a placebo across non-AI factors and an event study, distinguishing a genuine AI-specific repricing | |
| 111 | +from a mechanical or market-wide artifact. \emph{Fourth}, we document the \emph{anatomy} of the | |
| 112 | +effect---its concentration in smaller firms, its operation substantially through a sector channel, | |
| 113 | +and its disappearance under firm fixed effects---which sharpens the economic interpretation and | |
| 114 | +warns against naive trading strategies. | |
| 115 | + | |
| 116 | +The remainder of the paper is organized as follows. Section~\ref{sec:literature} situates the study | |
| 117 | +in five literatures and states our hypotheses. Section~\ref{sec:data} describes the data and the | |
| 118 | +construction of the semantic measures. Section~\ref{sec:methodology} lays out the empirical | |
| 119 | +methodology. Section~\ref{sec:results} presents the main results, and Section~\ref{sec:robustness} | |
| 120 | +the robustness and identification tests. Section~\ref{sec:discussion} discusses mechanisms and | |
| 121 | +limitations, and Section~\ref{sec:conclusion} concludes. | |
added
paper/sections/literature.tex
+107 −0
@@ -0,0 +1,107 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +\section{Related Literature and Hypotheses} | |
| 3 | +\label{sec:literature} | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +Our study sits at the intersection of five strands of research: textual analysis in finance, the | |
| 7 | +pricing of corporate disclosure, technology and innovation in asset pricing, investor attention and | |
| 8 | +narrative economics, and the nascent literature on the economics of artificial intelligence. Each | |
| 9 | +contributes a building block---a measurement tool, an object of study, a candidate risk factor, a | |
| 10 | +behavioral mechanism, and a comparison case---and our contribution is to combine them: we measure a | |
| 11 | +technology theme from firms' own words, price it in the cross-section, and show that its pricing turns | |
| 12 | +on precisely when a behavioral mechanism predicts it should. We take the strands in turn and close | |
| 13 | +with the hypotheses they jointly motivate. | |
| 14 | + | |
| 15 | +\subsection{Textual analysis and natural language processing in finance} | |
| 16 | +A now-large literature extracts economic signals from financial text. The foundational work of | |
| 17 | +\citet{tetlock2007} showed that the tone of a \textit{Wall Street Journal} column forecasts | |
| 18 | +aggregate returns, and \citet{tetlock2008} extended this to firm-level news. \citet{lm2011} | |
| 19 | +demonstrated that finance-specific sentiment dictionaries materially outperform general-purpose word | |
| 20 | +lists in 10-K analysis, launching a wave of dictionary-based studies and the widely used | |
| 21 | +Loughran--McDonald word lists; \citet{lm2016} survey this field. A second generation moved from | |
| 22 | +counting words to modeling them: \citet{gentzkow2019} review text-as-data methods in economics, | |
| 23 | +while \citet{kelly2019textregression} and \citet{bybee2024narrative} use machine-learning | |
| 24 | +representations of news to construct interpretable factors and a ``state of the economy'' from text. | |
| 25 | +Our paper belongs to the most recent, embedding-based generation of this work. The limitations of | |
| 26 | +keyword counting are acute for a theme like AI: a naive count cannot tell ``we do not currently use | |
| 27 | +artificial intelligence'' apart from ``we are an artificial-intelligence leader,'' it misses the | |
| 28 | +paraphrase of a firm that describes machine learning without ever writing ``AI,'' and it treats | |
| 29 | +boilerplate and substance identically. We instead measure the \emph{semantic similarity} of | |
| 30 | +disclosure to anchor concepts using a sentence transformer \citep{reimers2019sbert}, which maps | |
| 31 | +passages into a vector space where meaning, not surface form, governs proximity. This follows a | |
| 32 | +growing practice of using contextual embeddings to quantify disclosure content | |
| 33 | +\citep{cong2022textfactor}, and is closest in spirit to similarity-to-concept designs that score | |
| 34 | +documents against curated reference passages. | |
| 35 | + | |
| 36 | +\subsection{The pricing of corporate disclosure} | |
| 37 | +A parallel literature asks whether the \emph{content} and \emph{changes} of mandatory disclosure | |
| 38 | +predict returns. \citet{cohen2020lazy} show that firms that change the language of their 10-K | |
| 39 | +relative to the prior year (``lazy prices'' when they do not) experience predictable future returns | |
| 40 | +and operating outcomes. \citet{hoberg2010product} and \citet{hobergphillips2016} use 10-K product | |
| 41 | +descriptions to build text-based industry classifications and measures of product-market fluidity | |
| 42 | +that carry asset-pricing content. \citet{lopezlira2023risk} extracts risk exposures from 10-K | |
| 43 | +risk-factor sections. The general lesson is that the qualitative portions of filings contain | |
| 44 | +value-relevant information that markets process incompletely and with delay. We contribute a | |
| 45 | +focused, concept-level measure---AI engagement---and show that its pricing is strongly | |
| 46 | +state-dependent, a dimension the disclosure-pricing literature has largely left implicit. | |
| 47 | + | |
| 48 | +\subsection{Technology, innovation, and the cross-section of returns} | |
| 49 | +Asset pricing has long sought to connect technological change to risk and return. | |
| 50 | +\citet{hirshleifer2013innovative} show that innovative efficiency predicts returns; | |
| 51 | +\citet{kogan2017technological} build market-based measures of innovation from patents and link them | |
| 52 | +to growth and reallocation; \citet{koganpapanikolaou2014} show that investment-specific technology | |
| 53 | +shocks shape the cross-section. A more recent literature studies AI exposure directly: | |
| 54 | +\citet{babina2024aiinvestment} measure firm-level AI investment from job-posting and resume data and | |
| 55 | +document faster growth among AI-adopting firms; \citet{eisfeldt2023generative} construct a | |
| 56 | +firm-level measure of \emph{generative}-AI exposure from the task content of occupations and show | |
| 57 | +that a generative-AI factor was priced precisely in the weeks around ChatGPT's release. | |
| 58 | +\citet{acemoglu2020wrong} and \citet{webb2020} study the labor-market exposure of firms to AI and | |
| 59 | +automation. Our contribution relative to this work is to measure AI exposure from the firm's | |
| 60 | +\emph{own disclosure}---a self-reported, narrative signal available for the entire index at annual | |
| 61 | +frequency---and to characterize the full time profile of its pricing across a decade and a half, not | |
| 62 | +only the event window. Where \citet{eisfeldt2023generative} use occupation-task exposure, we use the | |
| 63 | +language firms choose, providing a complementary and highly granular measure. | |
| 64 | + | |
| 65 | +\subsection{Investor attention, salience, and narrative economics} | |
| 66 | +Why might value-relevant disclosure be priced only after a catalyst? The behavioral literature | |
| 67 | +offers a clear mechanism: limited investor attention. \citet{barberodean2008} show that retail | |
| 68 | +investors are drawn to attention-grabbing stocks; \citet{da2011} construct a direct attention proxy | |
| 69 | +from Google search and link it to prices; \citet{dellavigna2009} document under-reaction to | |
| 70 | +information released when attention is low; and \citet{hirshleifer2009driven} show that earnings news | |
| 71 | +is underweighted when investors are distracted. \citet{shiller2017narrative} argues that contagious | |
| 72 | +narratives drive major asset-price movements, and \citet{bakerwurgler2006} show that sentiment | |
| 73 | +differentially affects hard-to-value, speculative stocks. Our results provide a sharp illustration: | |
| 74 | +the information about firms' AI engagement existed in filings for years but was repriced abruptly | |
| 75 | +when a salient consumer event---ChatGPT---focused investor attention on AI. The asymmetry we document | |
| 76 | +(AI rewarded, ESG penalized after 2022) is itself consistent with a shift in the prevailing market | |
| 77 | +narrative. | |
| 78 | + | |
| 79 | +\subsection{ESG and climate disclosure as a comparison case} | |
| 80 | +Finally, our placebo design connects to the literature on the pricing of ESG and climate disclosure. | |
| 81 | +\citet{pastor2021sustainable} model how sustainability preferences depress the expected returns of | |
| 82 | +green assets in equilibrium, and \citet{pastor2022dissecting} show that green stocks' strong | |
| 83 | +\emph{realized} returns through 2021 reflected unexpected increases in climate concern rather than | |
| 84 | +high expected returns. \citet{bolton2021risk} document a carbon premium. Consistent with the | |
| 85 | +post-2021 reversal in this literature, we find that high-ESG and high-climate disclosure earned | |
| 86 | +\emph{negative} spreads after 2022, exactly when AI disclosure began to earn large positive | |
| 87 | +ones---underscoring that the post-2022 re-rating reflects a thematic rotation toward AI rather than a | |
| 88 | +generic disclosure effect. | |
| 89 | + | |
| 90 | +\subsection{Hypotheses} | |
| 91 | +\label{subsec:hypotheses} | |
| 92 | +Our analysis is organized around four hypotheses. | |
| 93 | +\begin{description}[leftmargin=2.4em,style=nextline] | |
| 94 | +\item[H1 (Unconditional pricing).] If AI exposure carries a stable risk premium or persistent | |
| 95 | +mispricing, then sorting on AI-disclosure intensity yields a positive and significant risk-adjusted | |
| 96 | +return spread over the full 2010--2026 sample. | |
| 97 | +\item[H2 (Regime dependence).] If instead AI exposure is repriced only once AI becomes salient, the | |
| 98 | +return spread is small before and large after the late-2022 generative-AI catalyst, with a | |
| 99 | +detectable structural break. | |
| 100 | +\item[H3 (AI-specificity).] If the post-2022 spread reflects a genuine AI repricing rather than a | |
| 101 | +mechanical or market-wide artifact, it appears for AI-related semantic factors but not for unrelated | |
| 102 | +factors (e.g.\ ESG, climate, macro risk). | |
| 103 | +\item[H4 (Cross-sectional, not within-firm).] If the market repriced \emph{which} firms are | |
| 104 | +AI-exposed rather than rewarding incremental wording, the effect is concentrated in the | |
| 105 | +cross-section and attenuates under firm and sector fixed effects. | |
| 106 | +\end{description} | |
| 107 | +\noindent The data, as we show, decisively favor H2--H4 over H1. | |
added
paper/sections/methodology.tex
+81 −0
@@ -0,0 +1,81 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +\section{Methodology} | |
| 3 | +\label{sec:methodology} | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +We bring six complementary research designs to bear, ranging from simple portfolio sorts to a | |
| 7 | +market-model event study. Each carries its own identifying assumptions and its own vulnerabilities: a | |
| 8 | +sort is transparent but model-free and silent on risk; a factor regression adjusts for risk but | |
| 9 | +imposes a linear factor structure; a panel with fixed effects controls for unobserved heterogeneity | |
| 10 | +but discards the cross-sectional variation that may matter most; an event study buys clean timing at | |
| 11 | +the cost of a single window. By design these weaknesses do not overlap, so a conclusion that survives | |
| 12 | +all six is far more credible than one resting on any one. Using the battery together lets us | |
| 13 | +triangulate the economic interpretation rather than lean on a single estimate. | |
| 14 | + | |
| 15 | +\subsection{Portfolio sorts} | |
| 16 | +Each formation year we sort firms into quintiles on a given (within-year standardized) AI signal and | |
| 17 | +compute the equal-weighted (EW) and value-weighted (VW) forward return of each quintile, along with the | |
| 18 | +high-minus-low (Q5$-$Q1) spread that a self-financing long--short investor would have earned. We report | |
| 19 | +the time-series average of the annual spreads and test its significance with Newey--West | |
| 20 | +\citep{neweywest1987} standard errors (three lags) to account for any serial correlation induced by the | |
| 21 | +overlapping return windows. The appeal of the sort is that it imposes no model and makes no functional-form | |
| 22 | +assumption---it simply asks what high-AI firms earned relative to low-AI firms---and the EW--VW comparison | |
| 23 | +is itself informative: when the equal-weighted spread exceeds the value-weighted one, the effect is | |
| 24 | +concentrated in smaller index members rather than driven by the largest names. | |
| 25 | + | |
| 26 | +\subsection{Factor-model spanning of a long--short portfolio} | |
| 27 | +A raw spread could in principle be no more than compensation for bearing known risks. To ask whether | |
| 28 | +the AI spread survives risk adjustment, we build an annually rebalanced, equal-weighted, self-financing | |
| 29 | +long--short portfolio (top minus bottom quintile), record its monthly return, and regress it on | |
| 30 | +(i)~the CAPM market factor and (ii)~the Fama--French five factors plus momentum (FF6). The intercept | |
| 31 | +(alpha) measures the average return the portfolio earned beyond what its loadings on these established | |
| 32 | +factors can explain, and the slopes reveal which risks the strategy is implicitly taking; we use | |
| 33 | +heteroskedasticity- and autocorrelation-consistent (HAC) standard errors throughout. A significant | |
| 34 | +alpha would indicate that AI disclosure is priced over and above standard exposures, while an | |
| 35 | +insignificant one would say the spread is spanned by known factors. | |
| 36 | + | |
| 37 | +\subsection{Two-way fixed-effects panel regressions} | |
| 38 | +We estimate | |
| 39 | +\begin{equation} | |
| 40 | + r_{i,t\to t+12} = \beta\, \text{AI}_{i,t} + \gamma' X_{i,t} + \alpha_i + \delta_t + \varepsilon_{i,t}, | |
| 41 | + \label{eq:panel} | |
| 42 | +\end{equation} | |
| 43 | +where $r$ is the winsorized forward return, $\text{AI}_{i,t}$ the standardized signal, $X$ the | |
| 44 | +controls, and $\alpha_i,\delta_t$ firm and year fixed effects. Standard errors are double-clustered by | |
| 45 | +firm and year \citep{petersen2009,cameron2011}. Firm fixed effects absorb all time-invariant | |
| 46 | +cross-firm differences, so $\beta$ identifies whether \emph{within-firm} changes in AI language | |
| 47 | +predict returns; year fixed effects absorb common shocks. Contrasting this estimate with the | |
| 48 | +cross-sectional ones isolates whether the signal lives across or within firms (H4). | |
| 49 | + | |
| 50 | +\subsection{Fama--MacBeth regressions} | |
| 51 | +We also run annual cross-sectional regressions of the forward return on the AI signal and controls and | |
| 52 | +average the slopes following \citet{famamacbeth1973}, with Newey--West errors on the time series of | |
| 53 | +coefficients. This estimator weights each year equally and yields an interpretable | |
| 54 | +per-standard-deviation premium; plotting the annual slopes reveals the time profile of the premium | |
| 55 | +directly. | |
| 56 | + | |
| 57 | +\subsection{Structural-break and difference-in-differences designs} | |
| 58 | +To test regime dependence (H2) we split the sample at the 30~November 2022 ChatGPT launch and compare | |
| 59 | +sub-period spreads, and we estimate pooled interaction models of the form | |
| 60 | +$r = \beta_1 \text{AI} + \beta_2 (\text{AI}\times \text{Post}) + \gamma' X + \varepsilon$, where | |
| 61 | +$\text{Post}=\mathbb{1}[\text{formation year}\ge 2022]$ and $\beta_2$ captures the change in the | |
| 62 | +premium. We complement this with a difference-in-differences design in which treatment is the firm's | |
| 63 | +\emph{pre-determined} AI exposure---fixed at its 2019--2021 average so it cannot respond to the | |
| 64 | +event---interacted with Post, within firm and year fixed effects. An event-time version interacts | |
| 65 | +pre-determined exposure with each year dummy (relative to 2021) to trace the dynamic response. | |
| 66 | + | |
| 67 | +\subsection{Market-model event study} | |
| 68 | +Finally, we run a classic event study \citep{mackinlay1997} around the ChatGPT launch, which converts | |
| 69 | +the annual-frequency portfolio evidence into a high-frequency, cleanly dated test. The launch is close | |
| 70 | +to an ideal natural experiment for our purposes: it was a consumer-product event, unanticipated by | |
| 71 | +equity markets, that sharply raised the salience of AI without itself changing any firm's | |
| 72 | +fundamentals overnight. For each stock we estimate a market model ($r_{i,d}=a_i+b_i r^{m}_{d}+e_{i,d}$) | |
| 73 | +over the estimation window January--October 2022 and compute daily abnormal returns | |
| 74 | +$\text{AR}_{i,d}=r_{i,d}-(\hat a_i+\hat b_i r^m_d)$ over the event window November 2022--June 2024. | |
| 75 | +Cumulative abnormal returns (CAR) are compared across terciles of \emph{pre-event} AI disclosure---taken | |
| 76 | +from the FY2021 10-K, the last report filed before the launch and therefore immune to any reaction to | |
| 77 | +it---and we regress firm-level CAR on pre-event exposure with size, beta, and sector controls. Because | |
| 78 | +abnormal returns net out each firm's market-beta exposure, the event study isolates the | |
| 79 | +cross-sectional response to the AI-narrative shock from the contemporaneous (and initially negative) | |
| 80 | +market drift of 2022--2023, addressing the natural objection that high-AI firms simply rode a | |
| 81 | +beta-driven recovery. | |
added
paper/sections/results.tex
+172 −0
@@ -0,0 +1,172 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +\section{Results} | |
| 3 | +\label{sec:results} | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +\subsection{Portfolio sorts: a weak unconditional relation} | |
| 7 | +Table~\ref{tab:sorts} reports the quintile sorts over the full sample. The relation between AI | |
| 8 | +disclosure and future returns is positive and broadly monotone but economically modest. The | |
| 9 | +equal-weighted Q5$-$Q1 spread is $+4.6$ percentage points per year for AI adoption \tstat{1.83}, | |
| 10 | +$+3.9$ for AI infrastructure \tstat{1.58}, $+5.3$ for AI disruption risk \tstat{2.27}, and $+4.9$ for | |
| 11 | +the composite \tstat{1.88}. Value-weighting attenuates the adoption and composite spreads, indicating | |
| 12 | +the effect is stronger among smaller index members. The left panel of Figure~\ref{fig:quint} displays | |
| 13 | +the full-sample pattern: returns rise gently from the lowest to the highest AI quintile. On its own, | |
| 14 | +this is suggestive but far from decisive evidence---and, as we now show, it averages over two very | |
| 15 | +different regimes. | |
| 16 | + | |
| 17 | +\input{tables/tab_sorts} | |
| 18 | + | |
| 19 | +\subsection{Does AI disclosure earn risk-adjusted alpha unconditionally? (H1)} | |
| 20 | +Table~\ref{tab:alpha} reports CAPM and FF6 alphas of the long--short portfolios. The AI-opportunity | |
| 21 | +composite earns a raw spread of about $+2.3\%$ per year, of which the FF6 alpha is $+1.9\%$---but | |
| 22 | +statistically insignificant \tstat{1.24}. The AI-adoption and AI-infrastructure long--shorts are | |
| 23 | +similarly insignificant after risk adjustment. The one exception is the AI-disruption-risk spread, | |
| 24 | +whose FF6 alpha of $+2.8\%$ per year is marginally significant \tstat{2.10}, hinting at a small risk | |
| 25 | +premium for firms that flag AI as a competitive threat. The factor loadings (not the focus here) show | |
| 26 | +the AI long--short is roughly market-neutral with modest negative profitability (RMW) and investment | |
| 27 | +(CMA) tilts, consistent with a growth-oriented long leg. The verdict on H1 is clear: | |
| 28 | +\textbf{unconditionally, AI disclosure is at best weakly priced.} This is not the end of the story but | |
| 29 | +the beginning of it. | |
| 30 | + | |
| 31 | +\input{tables/tab_alpha} | |
| 32 | + | |
| 33 | +\subsection{Panel and Fama--MacBeth estimates} | |
| 34 | +Table~\ref{tab:panel} juxtaposes the two-way fixed-effects panel with the Fama--MacBeth estimator. The | |
| 35 | +contrast is instructive. In the Fama--MacBeth (cross-sectional) regressions, the AI-adoption and | |
| 36 | +AI-infrastructure premia are positive---$+1.3$ and $+1.6$ percentage points per standard | |
| 37 | +deviation---with \textit{t}-statistics near 1.6--1.7, indicating a weak but positive cross-sectional | |
| 38 | +premium on average. In the two-way fixed-effects panel, however, every AI coefficient collapses to | |
| 39 | +essentially zero. Because firm fixed effects remove all permanent cross-firm differences, this tells | |
| 40 | +us the signal lives \emph{across} firms, not \emph{within} them: a given firm writing relatively more | |
| 41 | +about AI from one year to the next does not predict its own subsequent return (anticipating H4). | |
| 42 | +Throughout, size carries the familiar negative premium ($t\approx-8$) and volatility a positive one, | |
| 43 | +consistent with the broader cross-sectional literature in this large-cap universe. | |
| 44 | + | |
| 45 | +\input{tables/tab_panel} | |
| 46 | + | |
| 47 | +\subsection{The structural break: AI pricing switched on after ChatGPT (H2)} | |
| 48 | +The full-sample averages are not so much wrong as misleading: they blend two regimes that look | |
| 49 | +nothing alike, and in doing so they understate the post-2022 effect as badly as they overstate the | |
| 50 | +pre-2022 one. This regime change is the paper's central result. Splitting the sample at the November | |
| 51 | +2022 ChatGPT launch, the center and right panels of Figure~\ref{fig:quint} reveal a striking | |
| 52 | +transformation. Before 2022 the relationship between AI quintile and forward return is nearly flat---a | |
| 53 | +firm in the top AI quintile earned little more than one in the bottom quintile. After 2022 the same | |
| 54 | +schedule tilts steeply upward, rising monotonically from the lowest to the highest quintile. The | |
| 55 | +high-minus-low composite spread is $+2.4$ percentage points per year pre-ChatGPT but $+14.6$ points | |
| 56 | +per year post-ChatGPT---a more than sixfold increase in the price of an essentially unchanged | |
| 57 | +characteristic. | |
| 58 | + | |
| 59 | +\begin{figure}[htbp]\centering | |
| 60 | +\includegraphics[width=\textwidth]{fig1_quintile_returns.png} | |
| 61 | +\caption{\textbf{Forward returns by AI-disclosure quintile, before and after ChatGPT.} Each panel | |
| 62 | +plots the mean forward twelve-month return across quintiles of the AI-disclosure composite: the left | |
| 63 | +panel pools the full sample, the center panel covers the pre-ChatGPT period (2010--2021), and the | |
| 64 | +right panel the post-ChatGPT period (2022--2024). The quintile schedule is nearly flat before 2022 and | |
| 65 | +steeply increasing afterward; the high-minus-low (Q5$-$Q1) spread rises from $+2.4$ percentage points | |
| 66 | +per year before ChatGPT to $+14.6$ points after.}\label{fig:quint} | |
| 67 | +\end{figure} | |
| 68 | + | |
| 69 | +Table~\ref{tab:break} quantifies the break two ways. In sub-period sorts, the AI-adoption Q5$-$Q1 | |
| 70 | +spread rises from $+2.2\%$ per year \tstat{2.04} pre-2022 to $+14.3\%$ \tstat{2.15} post-2022; the | |
| 71 | +composite rises from $+2.5\%$ to $+14.6\%$; AI infrastructure from $+1.4\%$ to $+13.6\%$. In the | |
| 72 | +pooled interaction regressions, the post-2022 incremental slope is positive for all three signals and | |
| 73 | +statistically significant for AI infrastructure \tstat{2.63}---the facet most directly tied to the | |
| 74 | +chip, cloud, data-center, and power firms that led the 2023--2025 rally. Figure~\ref{fig:spread} shows | |
| 75 | +the annual spreads: small and mixed-sign through 2021, uniformly large and positive for every | |
| 76 | +post-2022 cohort. | |
| 77 | + | |
| 78 | +\input{tables/tab_break} | |
| 79 | + | |
| 80 | +\begin{figure}[htbp]\centering | |
| 81 | +\includegraphics[width=0.9\textwidth]{fig3_annual_spread.png} | |
| 82 | +\caption{\textbf{Annual AI-disclosure return spreads by cohort.} The figure plots the annual | |
| 83 | +high-minus-low (Q5$-$Q1) forward-return spread on the AI-disclosure composite, by 10-K fiscal (formation) | |
| 84 | +year. Spreads are small and of mixed sign through 2021, whereas the post-ChatGPT cohorts (shown in red) | |
| 85 | +are uniformly and substantially positive---showing that the regime change appears in every post-2022 | |
| 86 | +cohort taken on its own, not only in the period average.} | |
| 87 | +\label{fig:spread} | |
| 88 | +\end{figure} | |
| 89 | + | |
| 90 | +The same regime change is visible in two further lenses. Figure~\ref{fig:cum} plots the cumulative | |
| 91 | +value of one dollar invested in the equal-weighted, annually rebalanced, self-financing | |
| 92 | +high-minus-low portfolio: it drifts sideways-to-up for a decade and then inflects upward after the | |
| 93 | +dashed ChatGPT line. Figure~\ref{fig:fmyear} plots the year-by-year Fama--MacBeth slope on the AI | |
| 94 | +composite (with controls): it hovers near zero for the entire 2010s and then turns sharply positive, | |
| 95 | +peaking in the 2024 cohort. The latter figure also delivers an important nuance: the size-controlled | |
| 96 | +premium is largest in the most recent cohort, consistent with the AI \emph{infrastructure} | |
| 97 | +super-cycle of 2024--2025 (the build-out of data centers and accelerated compute). We return to this | |
| 98 | +concentration when discussing limitations. | |
| 99 | + | |
| 100 | +\begin{figure}[htbp]\centering | |
| 101 | +\includegraphics[width=0.86\textwidth]{fig2_cumulative_ls.png} | |
| 102 | +\caption{\textbf{Cumulative performance of the AI long--short portfolio.} The figure plots the | |
| 103 | +cumulative value of \$1 invested in the equal-weighted, annually rebalanced, self-financing | |
| 104 | +high-minus-low AI-disclosure portfolio, shown for both the AI-opportunity composite and AI | |
| 105 | +disruption-risk signals. Both curves drift sideways-to-up for a decade and then inflect sharply upward | |
| 106 | +after the dashed ChatGPT line, visualizing the regime change as a kink in accumulated wealth.} | |
| 107 | +\label{fig:cum} | |
| 108 | +\end{figure} | |
| 109 | + | |
| 110 | +\begin{figure}[htbp]\centering | |
| 111 | +\includegraphics[width=0.9\textwidth]{fig6_fm_byyear.png} | |
| 112 | +\caption{\textbf{The AI premium over time: year-by-year Fama--MacBeth slopes.} The figure plots the | |
| 113 | +annual Fama--MacBeth slope on the AI-disclosure composite---the forward return earned per | |
| 114 | +cross-sectional standard deviation of AI disclosure---controlling for size, momentum, and volatility, | |
| 115 | +with error bars of $\pm1$ standard error. The slope hovers near zero throughout the 2010s and turns | |
| 116 | +sharply positive after ChatGPT, peaking in the 2024 cohort, consistent with the 2024--2025 | |
| 117 | +AI-infrastructure super-cycle.}\label{fig:fmyear} | |
| 118 | +\end{figure} | |
| 119 | + | |
| 120 | +Finally, Figure~\ref{fig:bin} confirms the pattern is not an artifact of a few influential | |
| 121 | +observations: the binned relation between the AI composite and forward returns is essentially flat in | |
| 122 | +the pre-ChatGPT sub-period and distinctly upward-sloping afterward, across the entire distribution of | |
| 123 | +AI disclosure rather than only at the extreme quintiles. | |
| 124 | + | |
| 125 | +\begin{figure}[htbp]\centering | |
| 126 | +\includegraphics[width=\textwidth]{fig5_binscatter.png} | |
| 127 | +\caption{\textbf{Binned relation between AI disclosure and returns, by sub-period.} The figure shows a | |
| 128 | +binned scatter of the forward twelve-month return against the AI-disclosure composite, plotted | |
| 129 | +separately for the pre- and post-ChatGPT periods. Each point is a portfolio of firms within a bin of | |
| 130 | +the AI signal and the line is an OLS fit. The conditional relation is essentially flat before ChatGPT | |
| 131 | +and distinctly upward-sloping afterward, across the entire distribution of AI disclosure rather than | |
| 132 | +only at the extreme quintiles---confirming that the effect is not driven by a few influential | |
| 133 | +observations.}\label{fig:bin} | |
| 134 | +\end{figure} | |
| 135 | + | |
| 136 | +\subsection{The anatomy of the premium: size and sector} | |
| 137 | +Where in the cross-section does the post-2022 premium concentrate? Table~\ref{tab:doublesort} and | |
| 138 | +Figure~\ref{fig:double} report an AI~$\times$~size double sort. Before 2022 the AI gradient is flat | |
| 139 | +within both size halves. After 2022 it is steep, and dramatically so among smaller firms: small, | |
| 140 | +high-AI firms earned a mean forward return of 34.6\%, versus 19.5\% for small, low-AI firms---a | |
| 141 | +15-point gap---while the corresponding gap among large firms is 7 points. The premium is thus | |
| 142 | +\emph{not} merely a mega-cap phenomenon (a point we reinforce in Section~\ref{sec:robustness}); if | |
| 143 | +anything it is strongest among the smaller, less-followed names, consistent with an attention-based | |
| 144 | +mechanism in which information diffuses more slowly into smaller stocks. | |
| 145 | + | |
| 146 | +\input{tables/tab_doublesort} | |
| 147 | + | |
| 148 | +\begin{figure}[htbp]\centering | |
| 149 | +\includegraphics[width=\textwidth]{fig9_double_sort.png} | |
| 150 | +\caption{\textbf{AI disclosure $\times$ firm-size double sort.} The figure plots the mean forward | |
| 151 | +twelve-month return by AI tercile within small and large firms, separately for the pre- and | |
| 152 | +post-ChatGPT periods. The post-2022 AI gradient is steep in both size groups but dramatically steeper | |
| 153 | +among small firms, where high-AI firms outperform low-AI firms by roughly 15 percentage points, | |
| 154 | +consistent with an attention-based mechanism that operates most strongly in less-followed | |
| 155 | +stocks.}\label{fig:double} | |
| 156 | +\end{figure} | |
| 157 | + | |
| 158 | +\subsection{Economic significance} | |
| 159 | +The statistical break is matched by an economic one, and it is worth dwelling on the magnitudes | |
| 160 | +because they are unusual. The Sharpe ratio of the equal-weighted AI-composite long--short | |
| 161 | +portfolio---a direct gauge of return earned per unit of risk borne---rises from 0.15 in the | |
| 162 | +pre-ChatGPT decade to 1.33 afterward; for the AI-disruption-risk spread it rises from 0.33 to 1.15. To | |
| 163 | +put the post-2022 figure in perspective, the broad U.S.\ equity market has historically delivered a | |
| 164 | +Sharpe ratio in the neighborhood of 0.4, so a value above one for a single-characteristic, | |
| 165 | +self-financing strategy is exceptional, and its emergence precisely at the ChatGPT boundary---rather | |
| 166 | +than gradually, as a slowly learned risk premium would---is hard to reconcile with a constant risk | |
| 167 | +premium. The point estimates in the quintile sorts are equally vivid: a 14-point annual spread | |
| 168 | +between the top and bottom AI quintiles is roughly three times the unconditional equity risk premium | |
| 169 | +and an order of magnitude larger than the pre-2022 spread. Even acknowledging that a portion of this | |
| 170 | +reflects the higher realized volatility of AI-exposed firms (documented in Section~\ref{sec:robustness}) | |
| 171 | +and the broad technology rally, the magnitude of the post-2022 re-rating is among the largest | |
| 172 | +single-theme cross-sectional effects in the recent asset-pricing record. | |
added
paper/sections/robustness.tex
+134 −0
@@ -0,0 +1,134 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +\section{Robustness and Identification} | |
| 3 | +\label{sec:robustness} | |
| 4 | +% ============================================================================ | |
| 5 | + | |
| 6 | +The structural break is economically large---and large effects invite scrutiny, since they are also | |
| 7 | +the ones most likely to be artifacts. This section therefore asks how much we should believe it, | |
| 8 | +confronting the result with the alternative explanations a skeptical reader would raise: that the | |
| 9 | +break is mechanical, that it is a mega-cap rally in disguise, that it is sensitive to how the signal | |
| 10 | +is built, or that it merely tracks the technology sector. We subject it in turn to a placebo across | |
| 11 | +non-AI factors, an event study, a difference-in-differences design, and a battery of construction and | |
| 12 | +universe robustness checks. The result withstands each. | |
| 13 | + | |
| 14 | +\subsection{Placebo: is the effect specific to AI? (H3)} | |
| 15 | +If the post-2022 spread were a mechanical artifact of our pipeline---or a generic ``high-disclosure | |
| 16 | +firms did well'' phenomenon---it should appear for any semantic factor. Table~\ref{tab:placebo} and | |
| 17 | +Figure~\ref{fig:placebo} re-run the entire sub-period and interaction design on all eight factors. The | |
| 18 | +result strongly supports AI-specificity. The three AI factors show large positive post-2022 spreads | |
| 19 | +($+13.6$ to $+14.3$ points). Macro-risk language shows essentially no spread ($-0.5$, $t=-0.1$). And, | |
| 20 | +strikingly, ESG-commitment and climate-risk disclosure earn \emph{negative} post-2022 spreads | |
| 21 | +($-8.8$ and $-5.0$ points, both significant)---high-ESG firms \emph{underperformed} after 2022, in | |
| 22 | +line with the post-2021 reversal in the sustainable-investing literature \citep{pastor2022dissecting}. | |
| 23 | +The one non-AI factor that does show a large positive post-2022 spread is cybersecurity ($+13.5$); we | |
| 24 | +read this not as a violation but as confirmation, since cybersecurity disclosure is tightly bundled | |
| 25 | +with technology exposure and is itself increasingly AI-related. The cleanest contrast---AI rewarded, | |
| 26 | +ESG and climate penalized---makes a powerful case that the post-ChatGPT re-rating reflects a thematic | |
| 27 | +rotation \emph{toward AI}, not a generic disclosure effect. | |
| 28 | + | |
| 29 | +\input{tables/tab_placebo} | |
| 30 | + | |
| 31 | +\begin{figure}[htbp]\centering | |
| 32 | +\includegraphics[width=0.92\textwidth]{fig7_placebo.png} | |
| 33 | +\caption{\textbf{Placebo test across semantic factors.} The figure plots the post-ChatGPT | |
| 34 | +high-minus-low (Q5$-$Q1) return spread for each of the eight semantic factors. The AI-related factors | |
| 35 | +(in red) cluster at the top with large positive spreads, while ESG-commitment and climate-risk | |
| 36 | +disclosure earn \emph{negative} spreads and macro-risk disclosure earns essentially none. The contrast | |
| 37 | +shows the post-2022 re-rating is a thematic rotation toward AI, not a generic disclosure | |
| 38 | +effect.}\label{fig:placebo} | |
| 39 | +\end{figure} | |
| 40 | + | |
| 41 | +\subsection{Event study around ChatGPT} | |
| 42 | +The portfolio results use annual formation and forward returns; the event study provides a | |
| 43 | +higher-frequency, cleanly identified complement. Table~\ref{tab:event} and Figure~\ref{fig:event} | |
| 44 | +report market-model cumulative abnormal returns by pre-event AI tercile. The ordering is monotone at | |
| 45 | +every horizon and widens steadily over time. The High-minus-Low CAR difference is $+2.9$ points at 60 | |
| 46 | +trading days \tstat{1.77}, $+10.1$ points at one year \tstat{1.97}, and $+14.6$ points at eighteen | |
| 47 | +months \tstat{1.89}. Because these are abnormal returns---purged of each firm's market beta---the | |
| 48 | +spread cannot be attributed to high-AI firms simply being higher-beta in a recovering market. A | |
| 49 | +cross-sectional regression of one-year CAR on pre-event AI exposure yields $+3.1$ points per standard | |
| 50 | +deviation \tstat{1.39}; adding sector fixed effects halves it to $+2.1$ points \tstat{0.99}, again | |
| 51 | +locating much---but not all---of the effect in a sector channel. Figure~\ref{fig:eventbin} shows the | |
| 52 | +relation is smooth across the exposure distribution, not driven by a few outliers. | |
| 53 | + | |
| 54 | +\input{tables/tab_event} | |
| 55 | + | |
| 56 | +\begin{figure}[htbp]\centering | |
| 57 | +\includegraphics[width=\textwidth]{fig8_event_car.png} | |
| 58 | +\caption{\textbf{Cumulative abnormal returns around ChatGPT.} The left panel plots the mean | |
| 59 | +market-model cumulative abnormal return (CAR) by pre-event AI-disclosure tercile over the event window; | |
| 60 | +the right panel plots the High$-$Low CAR spread. The tercile ordering is monotone at every horizon and | |
| 61 | +widens steadily, reaching roughly $+10$ percentage points one year after the launch. Because abnormal | |
| 62 | +returns are purged of market beta, the spread reflects a cross-sectional response to the AI-narrative | |
| 63 | +shock.}\label{fig:event} | |
| 64 | +\end{figure} | |
| 65 | + | |
| 66 | +\begin{figure}[htbp]\centering | |
| 67 | +\includegraphics[width=0.66\textwidth]{fig13_event_binscatter.png} | |
| 68 | +\caption{\textbf{One-year abnormal return versus pre-event AI exposure.} The figure plots a binned | |
| 69 | +scatter, with fitted line, of each firm's one-year cumulative abnormal return after ChatGPT against its | |
| 70 | +pre-event AI exposure (measured from the FY2021 10-K). The relation is positive and smooth across the | |
| 71 | +exposure distribution, confirming that the event-study spread is not driven by a handful of | |
| 72 | +outliers.}\label{fig:eventbin} | |
| 73 | +\end{figure} | |
| 74 | + | |
| 75 | +\subsection{Difference-in-differences and the cross-sectional nature of the effect (H4)} | |
| 76 | +Table~\ref{tab:did} reports difference-in-differences estimates in which treatment is the firm's | |
| 77 | +pre-determined (2019--2021) AI exposure interacted with the post-2022 indicator, within firm and year | |
| 78 | +fixed effects. The continuous-exposure DiD coefficient is $+2.7$ percentage points per standard | |
| 79 | +deviation \tstat{1.51}; the binary version is $+1.7$ points \tstat{0.78}. These are positive and | |
| 80 | +economically meaningful but weaker than the cross-sectional estimates---exactly the pattern predicted | |
| 81 | +by H4. Once firm fixed effects absorb the permanent component of AI exposure, only the residual | |
| 82 | +within-firm variation identifies the effect, and that variation is small. The event-time profile in | |
| 83 | +Figure~\ref{fig:eventtime} reinforces this reading: the return premium on a firm's \emph{fixed} | |
| 84 | +pre-event AI exposure is flat and near zero through 2021 and jumps after 2022, peaking in 2024. The | |
| 85 | +market did not reward firms for adding AI sentences to their filings; it repriced the firms whose | |
| 86 | +pre-existing, persistent exposure made them AI winners once the narrative turned. | |
| 87 | + | |
| 88 | +\input{tables/tab_did} | |
| 89 | + | |
| 90 | +\begin{figure}[htbp]\centering | |
| 91 | +\includegraphics[width=0.82\textwidth]{fig11_eventtime.png} | |
| 92 | +\caption{\textbf{Event-time profile of the AI premium.} The figure plots the estimated return premium | |
| 93 | +on firms' pre-determined (2019--2021) AI exposure by year, with 95\% confidence intervals, measured | |
| 94 | +relative to the 2021 base year and within firm and year fixed effects. The premium is flat and near | |
| 95 | +zero through 2021 and activates after ChatGPT, peaking in 2024---evidence that the market repriced | |
| 96 | +persistent pre-existing exposure rather than rewarding incremental wording.} | |
| 97 | +\label{fig:eventtime} | |
| 98 | +\end{figure} | |
| 99 | + | |
| 100 | +\subsection{Construction, horizon, and universe robustness} | |
| 101 | +Table~\ref{tab:robust} collects the remaining checks. The post-2022 spread is essentially unchanged | |
| 102 | +whether the signal is the section-weighted mean (base, $+14.6$), the simple mean ($+13.4$), or the | |
| 103 | +top-5\% tail ($+14.9$). It holds at six-, twelve-, and twenty-four-month horizons (growing with the | |
| 104 | +horizon, as a persistent premium should). It survives replacing the three AI signals with their first | |
| 105 | +principal component---which alone explains 86.8\% of their common variance, confirming the ``single | |
| 106 | +latent AI construct'' interpretation---yielding a post-2022 PC1 spread of $+13.4$ points \tstat{1.97}. | |
| 107 | +Most importantly for the mega-cap concern, the spread is $+14.1$ points \tstat{1.92} when the | |
| 108 | +Magnificent~7 are excluded and $+14.5$ points \tstat{1.93} when the ten largest firms are dropped | |
| 109 | +(Figure~\ref{fig:mag7}). The AI re-rating is a broad-based feature of the index, not the mechanical | |
| 110 | +footprint of a handful of trillion-dollar winners. Finally, the sector-neutral composite---which | |
| 111 | +compares firms only to others \emph{within} their GICS sector---produces a much smaller and | |
| 112 | +insignificant post-2022 spread ($+3.8$ points, $t=0.84$). This is not a failure of the result but a | |
| 113 | +sharpening of it: a large share of the AI premium operates through a \emph{between-sector} channel, as | |
| 114 | +the market re-rated AI-exposed sectors (technology above all) relative to others, with a smaller | |
| 115 | +within-sector residual. | |
| 116 | + | |
| 117 | +\input{tables/tab_robust} | |
| 118 | + | |
| 119 | +\begin{figure}[htbp]\centering | |
| 120 | +\includegraphics[width=0.78\textwidth]{fig10_mag7.png} | |
| 121 | +\caption{\textbf{The AI spread is not a mega-cap artifact.} The figure compares the post-2022 | |
| 122 | +composite Q5$-$Q1 return spread for the full index against the spread computed after excluding the | |
| 123 | +Magnificent~7 and after excluding the ten largest firms by market capitalization. The spread is | |
| 124 | +essentially unchanged in both cases, showing that the AI re-rating is a broad-based feature of the | |
| 125 | +index rather than the footprint of a handful of trillion-dollar winners.}\label{fig:mag7} | |
| 126 | +\end{figure} | |
| 127 | + | |
| 128 | +\subsection{An alternative performance outcome: risk} | |
| 129 | +Performance is not only about mean returns. We also relate AI disclosure to subsequent realized | |
| 130 | +volatility. High-AI firms exhibit modestly higher forward volatility, and the gap widens after 2022 (a | |
| 131 | +Q5$-$Q1 difference of about 2.9 annualized volatility points, $t=3.1$). The post-2022 AI premium | |
| 132 | +therefore came bundled with somewhat higher risk---part, though by no means all, of the elevated | |
| 133 | +returns is compensation for the greater volatility of AI-exposed firms during a period of rapid | |
| 134 | +technological repricing. | |
added
paper/sections/titlepage.tex
+77 −0
@@ -0,0 +1,77 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +% Title Page | |
| 3 | +% ============================================================================ | |
| 4 | +\thispagestyle{empty} | |
| 5 | + | |
| 6 | +\begin{center} | |
| 7 | + | |
| 8 | +% --- Logo --- | |
| 9 | +\includegraphics[width=3.5cm]{uq_logo.jpg} | |
| 10 | + | |
| 11 | +\vspace{0.6cm} | |
| 12 | + | |
| 13 | +{\footnotesize\textsc{Université du Québec en Outaouais}}\\[0.15cm] | |
| 14 | +{\footnotesize\textsc{Département des sciences administratives}} | |
| 15 | + | |
| 16 | +\vspace{0.8cm} | |
| 17 | + | |
| 18 | +{\footnotesize\textsc{Working Paper No.~\WPnumber}} | |
| 19 | + | |
| 20 | +\vspace{1.2cm} | |
| 21 | + | |
| 22 | +% --- Title --- | |
| 23 | +{\LARGE\bfseries \WPtitle\par} | |
| 24 | + | |
| 25 | +\ifx\WPsubtitle\empty\else | |
| 26 | + \vspace{0.3cm} | |
| 27 | + {\large\itshape \WPsubtitle\par} | |
| 28 | +\fi | |
| 29 | + | |
| 30 | +\vspace{1.2cm} | |
| 31 | + | |
| 32 | +% --- Author --- | |
| 33 | +{\large \WPauthor}\\[0.3cm] | |
| 34 | +{\normalsize \WPaffiliation}\\[0.15cm] | |
| 35 | +{\normalsize \WPemail}\\[0.15cm] % WP 17: trois courriels (dérogation au gabarit, voir README Notes) | |
| 36 | +{\small \WPaddress} | |
| 37 | + | |
| 38 | +\vspace{0.8cm} | |
| 39 | + | |
| 40 | +% --- Date & Version --- | |
| 41 | +{\normalsize \WPdate}\\[0.1cm] | |
| 42 | +{\small Version~\WPversion} | |
| 43 | + | |
| 44 | +\end{center} | |
| 45 | + | |
| 46 | +\vfill | |
| 47 | + | |
| 48 | +\newpage | |
| 49 | + | |
| 50 | +% ============================================================================ | |
| 51 | +% Abstract Page | |
| 52 | +% ============================================================================ | |
| 53 | +\thispagestyle{empty} | |
| 54 | + | |
| 55 | +\vspace*{1cm} | |
| 56 | + | |
| 57 | +\noindent\rule{\textwidth}{0.4pt} | |
| 58 | +\vspace{0.3cm} | |
| 59 | + | |
| 60 | +\noindent\textbf{Abstract} | |
| 61 | + | |
| 62 | +\vspace{0.15cm} | |
| 63 | + | |
| 64 | +\noindent\WPabstract | |
| 65 | + | |
| 66 | +\vspace{0.4cm} | |
| 67 | + | |
| 68 | +\noindent\textbf{Keywords:} \WPkeywords | |
| 69 | + | |
| 70 | +\vspace{0.15cm} | |
| 71 | + | |
| 72 | +\noindent\textbf{JEL Classification:} \WPjel | |
| 73 | + | |
| 74 | +\vspace{0.3cm} | |
| 75 | +\noindent\rule{\textwidth}{0.4pt} | |
| 76 | + | |
| 77 | +\newpage | |
added
paper/tables/regression.tex
+37 −0
@@ -0,0 +1,37 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +% Table: Regression Results | |
| 3 | +% ============================================================================ | |
| 4 | +\begin{table}[htbp] | |
| 5 | + \centering | |
| 6 | + \begin{threeparttable} | |
| 7 | + \caption{Baseline Regression Results} | |
| 8 | + \label{tab:regression} | |
| 9 | + \begin{tabular}{@{}lcccc@{}} | |
| 10 | + \toprule | |
| 11 | + & (1) & (2) & (3) & (4) \\ | |
| 12 | + \midrule | |
| 13 | + $X_{i,t}$ & 0.245$^{***}$ & 0.198$^{***}$ & 0.183$^{***}$ & 0.172$^{***}$ \\ | |
| 14 | + & (0.042) & (0.038) & (0.035) & (0.033) \\[6pt] | |
| 15 | + Size & & & $-$0.032$^{**}$ & $-$0.028$^{**}$ \\ | |
| 16 | + & & & (0.014) & (0.013) \\[6pt] | |
| 17 | + Book-to-Market & & & 0.051$^{***}$ & 0.047$^{***}$ \\ | |
| 18 | + & & & (0.018) & (0.017) \\[6pt] | |
| 19 | + Leverage & & & & $-$0.089$^{**}$ \\ | |
| 20 | + & & & & (0.041) \\[6pt] | |
| 21 | + ROA & & & & 0.015$^{*}$ \\ | |
| 22 | + & & & & (0.008) \\[6pt] | |
| 23 | + \midrule | |
| 24 | + Firm FE & No & Yes & Yes & Yes \\ | |
| 25 | + Time FE & No & No & Yes & Yes \\ | |
| 26 | + Controls & No & No & Yes & Yes \\[3pt] | |
| 27 | + Observations & 125{,}400 & 125{,}400 & 125{,}400 & 125{,}400 \\ | |
| 28 | + $R^2$ & 0.032 & 0.148 & 0.215 & 0.228 \\ | |
| 29 | + Adjusted $R^2$ & 0.031 & 0.112 & 0.178 & 0.190 \\ | |
| 30 | + \bottomrule | |
| 31 | + \end{tabular} | |
| 32 | + \begin{tablenotes}[flushleft] | |
| 33 | + \footnotesize | |
| 34 | + \item \textit{Notes:} This table reports OLS estimates of Equation~\eqref{eq:baseline}. The dependent variable is $y_{i,t}$. $X_{i,t}$ is the main explanatory variable. Control variables include firm size, book-to-market ratio, leverage, and return on assets. Standard errors clustered at the firm level are reported in parentheses. $^{***}$, $^{**}$, and $^{*}$ denote statistical significance at the 1\%, 5\%, and 10\% levels, respectively. | |
| 35 | + \end{tablenotes} | |
| 36 | + \end{threeparttable} | |
| 37 | +\end{table} | |
added
paper/tables/summary_stats.tex
+29 −0
@@ -0,0 +1,29 @@ | ||
| 1 | +% ============================================================================ | |
| 2 | +% Table: Summary Statistics | |
| 3 | +% ============================================================================ | |
| 4 | +\begin{table}[htbp] | |
| 5 | + \centering | |
| 6 | + \begin{threeparttable} | |
| 7 | + \caption{Summary Statistics} | |
| 8 | + \label{tab:summary_stats} | |
| 9 | + \begin{tabular}{@{}lcccccc@{}} | |
| 10 | + \toprule | |
| 11 | + Variable & $N$ & Mean & Std.\ Dev. & $p_{25}$ & Median & $p_{75}$ \\ | |
| 12 | + \midrule | |
| 13 | + \multicolumn{7}{@{}l}{\textit{Panel A: Dependent Variables}} \\[3pt] | |
| 14 | + $r_{i,t}$ (\%) & 125{,}400 & 0.82 & 4.35 & $-$1.92 & 0.65 & 3.48 \\ | |
| 15 | + $\sigma_{i,t}$ (\%) & 125{,}400 & 2.14 & 1.87 & 0.98 & 1.65 & 2.78 \\[6pt] | |
| 16 | + \multicolumn{7}{@{}l}{\textit{Panel B: Explanatory Variables}} \\[3pt] | |
| 17 | + $X_{i,t}$ & 125{,}400 & 0.45 & 0.32 & 0.21 & 0.40 & 0.65 \\ | |
| 18 | + Size (log) & 125{,}400 & 7.23 & 1.85 & 5.92 & 7.15 & 8.47 \\ | |
| 19 | + Book-to-Market & 125{,}400 & 0.68 & 0.54 & 0.30 & 0.56 & 0.91 \\ | |
| 20 | + Leverage & 125{,}400 & 0.34 & 0.21 & 0.17 & 0.32 & 0.48 \\ | |
| 21 | + ROA (\%) & 125{,}400 & 3.15 & 8.42 & 0.52 & 3.28 & 6.74 \\ | |
| 22 | + \bottomrule | |
| 23 | + \end{tabular} | |
| 24 | + \begin{tablenotes}[flushleft] | |
| 25 | + \footnotesize | |
| 26 | + \item \textit{Notes:} This table reports summary statistics for the main variables used in the analysis. The sample covers the period January~1990 to December~2023. $r_{i,t}$ is the monthly return of firm~$i$. $\sigma_{i,t}$ is the realized volatility computed from daily returns within the month. $X_{i,t}$ is the main explanatory variable. Size is the natural logarithm of market capitalization. Book-to-Market is the ratio of book equity to market equity. Leverage is total debt over total assets. ROA is return on assets. All continuous variables are winsorized at the 1st and 99th percentiles. | |
| 27 | + \end{tablenotes} | |
| 28 | + \end{threeparttable} | |
| 29 | +\end{table} | |
added
paper/tables/tab_alpha.tex
+14 −0
@@ -0,0 +1,14 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{Risk-Adjusted Performance of the AI Long--Short Portfolio}\label{tab:alpha} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lrrrrr}\toprule | |
| 5 | +& Mean LS & CAPM $\alpha$ & \textit{t} & FF6 $\alpha$ & \textit{t} \\ | |
| 6 | +Signal & (\%/yr) & (\%/yr) & & (\%/yr) & \\\midrule | |
| 7 | +AI adoption & +2.1 & +1.5 & 1.08 & +2.0 & 1.46 \\ | |
| 8 | +AI infrastructure & +1.7 & +0.9 & 0.61 & +1.1 & 0.84 \\ | |
| 9 | +AI composite & +2.3 & +1.4 & 0.85 & +1.9 & 1.24 \\ | |
| 10 | +AI disruption risk & +3.0 & +2.1 & 1.38 & +2.8 & 2.10 \\ | |
| 11 | +\bottomrule | |
| 12 | +\end{tabular} | |
| 13 | +\tablelegend{This table reports the risk-adjusted performance of the equal-weighted high-minus-low (Q5$-$Q1) long--short portfolio formed on each AI signal and rebalanced annually, over the full sample (178 monthly return observations). \emph{Mean LS} is the average raw long--short return; \emph{CAPM}~$\alpha$ and \emph{FF6}~$\alpha$ are the intercepts from time-series regressions of the long--short return on the CAPM market factor and on the Fama--French five factors plus momentum, respectively. All means and alphas are annualized and expressed in percent per year. The $t$-statistics are based on Newey--West (three-lag) heteroskedasticity- and autocorrelation-consistent standard errors. Over the full sample the alphas are economically small and, with the marginal exception of AI disruption risk, statistically insignificant.} | |
| 14 | +\end{table} | |
added
paper/tables/tab_break.tex
+14 −0
@@ -0,0 +1,14 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{The Post-ChatGPT Structural Break}\label{tab:break} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lccc}\toprule | |
| 5 | +& \multicolumn{2}{c}{Q5$-$Q1 spread} & Interaction \\ | |
| 6 | +\cmidrule(lr){2-3} | |
| 7 | +Signal & Pre (2010--21) & Post (2022--24) & AI$\times$Post \\\midrule | |
| 8 | +AI adoption & +2.2 \tstat{2.04} & +14.3 \tstat{2.15} & +0.0199 \tstat{1.17} \\ | |
| 9 | +AI infrastructure & +1.4 \tstat{0.91} & +13.6 \tstat{2.44} & +0.0277 \tstat{2.63} \\ | |
| 10 | +AI composite & +2.5 \tstat{1.58} & +14.6 \tstat{2.07} & +0.0270 \tstat{1.78} \\ | |
| 11 | +\bottomrule | |
| 12 | +\end{tabular} | |
| 13 | +\tablelegend{This table quantifies the change in the pricing of AI disclosure around the November 2022 launch of ChatGPT. Columns~2--3 report the equal-weighted Q5$-$Q1 forward-return spread (in percent per year, with Newey--West $t$-statistics in parentheses) separately for the pre-period (formation years 2010--2021) and the post-period (2022--2024). Column~4 reports the coefficient on the interaction of the within-year standardized AI signal with the post-2022 indicator from a pooled OLS regression that includes size and momentum controls and year-clustered standard errors. The spread rises roughly sixfold across the break for every AI signal, and the interaction term is positive throughout---most strongly for AI infrastructure, the facet tied to the compute build-out.} | |
| 14 | +\end{table} | |
added
paper/tables/tab_corr.tex
+15 −0
@@ -0,0 +1,15 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{Correlations among Signals, Controls, and Returns}\label{tab:corr} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lrrrrrr}\toprule | |
| 5 | +& (1) & (2) & (3) & (4) & (5) & (6) \\\midrule | |
| 6 | +(1) AI adoption & 1.00 & 0.80 & 0.86 & 0.07 & 0.01 & 0.04 \\ | |
| 7 | +(2) AI infrastructure & 0.80 & 1.00 & 0.74 & 0.11 & 0.02 & 0.04 \\ | |
| 8 | +(3) AI disruption risk & 0.86 & 0.74 & 1.00 & 0.07 & 0.02 & 0.04 \\ | |
| 9 | +(4) Size & 0.07 & 0.11 & 0.07 & 1.00 & 0.08 & -0.10 \\ | |
| 10 | +(5) Momentum & 0.01 & 0.02 & 0.02 & 0.08 & 1.00 & 0.00 \\ | |
| 11 | +(6) Forward return & 0.04 & 0.04 & 0.04 & -0.10 & 0.00 & 1.00 \\ | |
| 12 | +\bottomrule | |
| 13 | +\end{tabular} | |
| 14 | +\tablelegend{This table reports Pearson correlation coefficients among the three within-year standardized AI signals, the size and momentum controls, and the forward 12-month return, computed over the estimation panel. Columns (1)--(6) correspond to the row variables in the same order. The three AI signals are mutually highly correlated (pairwise $\rho$ between 0.74 and 0.86), consistent with their being three lenses on a single latent ``AI salience'' construct, whereas each AI signal's unconditional correlation with the forward return is small ($\approx 0.04$), foreshadowing that the action lies in the time variation of the relation rather than its unconditional level.} | |
| 15 | +\end{table} | |
added
paper/tables/tab_did.tex
+13 −0
@@ -0,0 +1,13 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{Difference-in-Differences around ChatGPT}\label{tab:did} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lcc}\toprule | |
| 5 | +& Treated$\times$Post & Exposure$\times$Post \\ | |
| 6 | +& (binary) & (continuous, per SD) \\\midrule | |
| 7 | +Coefficient & 0.0170 & 0.0269 \\ | |
| 8 | +\textit{t}-statistic & (0.78) & (1.51) \\ | |
| 9 | +N (firm-years) & 6790 & 6790 \\ | |
| 10 | +Firm \& Year FE & Yes & Yes \\\bottomrule | |
| 11 | +\end{tabular} | |
| 12 | +\tablelegend{This table reports difference-in-differences estimates of the effect of pre-determined AI exposure on returns around ChatGPT. The dependent variable is the winsorized forward 12-month return, and all specifications include firm and year fixed effects with standard errors double-clustered by firm and year. Treatment is fixed at each firm's pre-event (2019--2021) average AI exposure, so it cannot respond to the event: the first column uses a binary treated indicator (above-median pre-event exposure) interacted with the post-2022 indicator, and the second uses continuous pre-event exposure (per standard deviation) interacted with Post. Both coefficients are positive but weaker than the cross-sectional estimates, the pattern expected once firm fixed effects absorb the persistent component of AI exposure and only within-firm variation remains to identify the effect.} | |
| 13 | +\end{table} | |
added
paper/tables/tab_doublesort.tex
+16 −0
@@ -0,0 +1,16 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{AI Disclosure $\times$ Size Double Sort}\label{tab:doublesort} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lcccc}\toprule | |
| 5 | +& Low AI & Mid AI & High AI & Hi$-$Lo \\\midrule | |
| 6 | +\multicolumn{5}{l}{\textit{Panel A. Pre-ChatGPT (2010--2021)}}\\ | |
| 7 | +Small & 19.7 & 21.9 & 23.6 & +3.9 \\ | |
| 8 | +Large & 13.8 & 14.3 & 13.6 & -0.1 \\ | |
| 9 | +\midrule | |
| 10 | +\multicolumn{5}{l}{\textit{Panel B. Post-ChatGPT (2022--2024)}}\\ | |
| 11 | +Small & 19.5 & 19.2 & 34.5 & +15.1 \\ | |
| 12 | +Large & 15.8 & 18.3 & 22.9 & +7.1 \\ | |
| 13 | +\bottomrule | |
| 14 | +\end{tabular} | |
| 15 | +\tablelegend{This table reports mean forward 12-month returns (in percent) from an independent double sort on AI disclosure and firm size. In each formation year firms are split into a small and a large half by the market-capitalization proxy, and within each half into AI terciles (Low, Mid, High); the column Hi$-$Lo is the high-minus-low AI return within each size group. Panel~A covers the pre-ChatGPT period (formation years 2010--2021) and Panel~B the post-ChatGPT period (2022--2024). The AI gradient is flat in both size halves before 2022 and steep afterward, and dramatically steeper among small firms---consistent with an attention-based mechanism in which information diffuses more slowly into smaller, less-followed stocks.} | |
| 16 | +\end{table} | |
added
paper/tables/tab_event.tex
+17 −0
@@ -0,0 +1,17 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{ChatGPT Event Study}\label{tab:event} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lrrrrrr}\toprule | |
| 5 | +Horizon & High & Mid & Low & High$-$Low & \textit{t} & \textit{p} \\\midrule | |
| 6 | ++60 trading days & +1.89 & +1.79 & -1.04 & +2.93 & 1.77 & 0.077 \\ | |
| 7 | ++6 months & -2.72 & -5.17 & -7.25 & +4.53 & 1.60 & 0.110 \\ | |
| 8 | ++1 year & -6.38 & -11.80 & -16.46 & +10.08 & 1.97 & 0.050 \\ | |
| 9 | ++18 months & -8.46 & -16.03 & -23.05 & +14.59 & 1.89 & 0.060 \\ | |
| 10 | +\midrule | |
| 11 | +\multicolumn{7}{l}{\footnotesize Cross-sectional regression, CAR(+1y) on pre-event AI exposure (per SD):}\\ | |
| 12 | +\multicolumn{7}{l}{\footnotesize\quad No sector FE: $+3.13$\% \tstat{1.39}, $n=483$, $R^2=0.160$ \quad | |
| 13 | +With sector FE: $+2.09$\% \tstat{0.99}}\\ | |
| 14 | +\bottomrule | |
| 15 | +\end{tabular} | |
| 16 | +\tablelegend{This table reports market-model cumulative abnormal returns (CAR, in percent) around the launch of ChatGPT on 30~November 2022. For each stock the market model is estimated over the January--October 2022 window, and abnormal returns are cumulated over horizons of 60 trading days, six months, one year, and 18 months. Firms are grouped into terciles of \emph{pre-event} AI disclosure measured from the FY2021 10-K---the last report filed before the event---and the table reports the mean CAR for the High, Mid, and Low terciles, the High$-$Low difference, and a Welch $t$-test (with $p$-value) of that difference. The bottom rows report a cross-sectional regression of one-year CAR on pre-event AI exposure (per standard deviation), with and without sector fixed effects. Because abnormal returns are purged of each firm's market beta, the spread reflects a cross-sectional response to the AI-narrative shock rather than differential beta exposure.} | |
| 17 | +\end{table} | |
added
paper/tables/tab_panel.tex
+19 −0
@@ -0,0 +1,19 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{Panel and Fama--MacBeth Return Regressions}\label{tab:panel} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lcc}\toprule | |
| 5 | +& (1) Two-way FE & (2) Fama--MacBeth \\\midrule | |
| 6 | +AI adoption ($z$) & -0.0047 \tstat{-0.24} & -0.0000 \tstat{-0.00} \\ | |
| 7 | +AI infrastructure ($z$) & +0.0134 \tstat{0.61} & +0.0158 \tstat{1.54} \\ | |
| 8 | +AI disruption risk ($z$) & -0.0153 \tstat{-1.00} & +0.0001 \tstat{0.01} \\ | |
| 9 | +Size ($z$) & -0.2242 \tstat{-7.17} & -0.0330 \tstat{-8.21} \\ | |
| 10 | +Momentum ($z$) & -0.0024 \tstat{-0.25} & +0.0081 \tstat{1.08} \\ | |
| 11 | +Volatility ($z$) & +0.0197 \tstat{2.12} & +0.0687 \tstat{3.56} \\ | |
| 12 | +\midrule | |
| 13 | +Firm FE & Yes & No \\ | |
| 14 | +Year FE & Yes & (by construction) \\ | |
| 15 | +N (obs / years) & 6811 & 15 \\ | |
| 16 | +\bottomrule | |
| 17 | +\end{tabular} | |
| 18 | +\tablelegend{This table reports forward-return regressions estimated two ways. Column~(1) is a two-way (firm~$\times$~year) fixed-effects panel with standard errors double-clustered by firm and year; the firm fixed effects absorb all permanent cross-firm differences, so the AI coefficients identify whether \emph{within-firm} changes in AI language predict returns. Column~(2) is the Fama--MacBeth estimator---the average of annual cross-sectional slopes---with Newey--West $t$-statistics on the time series of coefficients. The dependent variable is the winsorized forward 12-month return, and all signals and controls are within-year cross-sectional $z$-scores, so coefficients are expressed per cross-sectional standard deviation. The contrast between the two columns is the object of interest: the cross-sectional (Fama--MacBeth) AI premia are positive while the within-firm (panel) coefficients collapse to zero, locating the signal across rather than within firms.} | |
| 19 | +\end{table} | |
added
paper/tables/tab_placebo.tex
+18 −0
@@ -0,0 +1,18 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{Placebo Tests across Semantic Factors}\label{tab:placebo} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lccc}\toprule | |
| 5 | +& \multicolumn{2}{c}{Q5$-$Q1 spread (\%/yr)} & Interaction \\\cmidrule(lr){2-3} | |
| 6 | +Semantic factor & Pre (2010--21) & Post (2022--24) & $z\times$Post \\\midrule | |
| 7 | +AI adoption$^{\dagger}$ & +2.2 \tstat{2.04} & +14.3 \tstat{2.15} & +0.0199 \tstat{1.17} \\ | |
| 8 | +AI infrastructure$^{\dagger}$ & +1.4 \tstat{0.91} & +13.6 \tstat{2.44} & +0.0277 \tstat{2.63} \\ | |
| 9 | +AI disruption risk$^{\dagger}$ & +3.1 \tstat{2.47} & +14.1 \tstat{2.07} & +0.0108 \tstat{0.60} \\ | |
| 10 | +ESG commitment & -2.5 \tstat{-2.82} & -8.8 \tstat{-2.27} & -0.0055 \tstat{-0.76} \\ | |
| 11 | +Climate risk & -0.8 \tstat{-1.38} & -5.0 \tstat{-2.48} & +0.0008 \tstat{0.17} \\ | |
| 12 | +Cybersecurity & +2.6 \tstat{1.96} & +13.5 \tstat{2.12} & +0.0090 \tstat{0.64} \\ | |
| 13 | +Automation/labor & +2.1 \tstat{1.91} & +7.2 \tstat{1.29} & +0.0002 \tstat{0.01} \\ | |
| 14 | +Macro risk & -1.6 \tstat{-2.02} & -0.5 \tstat{-0.11} & +0.0125 \tstat{1.06} \\ | |
| 15 | +\bottomrule | |
| 16 | +\end{tabular} | |
| 17 | +\tablelegend{This table re-runs the structural-break design on all eight semantic factors in the database to test whether the post-2022 re-rating is specific to AI. For each factor it reports the equal-weighted Q5$-$Q1 forward-return spread (in percent per year, with Newey--West $t$-statistics) in the pre-period (2010--2021) and post-period (2022--2024), together with the coefficient on the interaction of the factor's within-year $z$-score with the post-2022 indicator (size and momentum controls, year-clustered standard errors). The post-ChatGPT jump is concentrated in the AI-related factors, marked with a dagger ($\dagger$); cybersecurity, which is bundled with technology exposure, also rises, whereas ESG-commitment and climate-risk disclosure earn \emph{negative} post-2022 spreads and macro-risk disclosure shows essentially none.} | |
| 18 | +\end{table} | |
added
paper/tables/tab_robust.tex
+21 −0
@@ -0,0 +1,21 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{Robustness of the AI Return Spread}\label{tab:robust} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lcc}\toprule | |
| 5 | +& Pre (2010--21) & Post (2022--24) \\\midrule | |
| 6 | +\multicolumn{3}{l}{\textit{Panel A. Alternative signal definition (composite)}}\\ | |
| 7 | +Section-weighted (base) & +2.5 \tstat{1.58} & +14.6 \tstat{2.07} \\ | |
| 8 | +Simple mean & +2.3 \tstat{1.50} & +13.4 \tstat{2.23} \\ | |
| 9 | +Top-5\% tail & +1.5 \tstat{1.04} & +14.9 \tstat{2.47} \\ | |
| 10 | +\midrule\multicolumn{3}{l}{\textit{Panel B. Alternative holding horizon}}\\ | |
| 11 | +6-month forward return & -0.1 \tstat{-0.10} & +1.1 \\ | |
| 12 | +24-month forward return & +9.3 \tstat{2.86} & +23.0 \\ | |
| 13 | +\midrule\multicolumn{3}{l}{\textit{Panel C. Construction / universe}}\\ | |
| 14 | +Sector-neutral composite & +2.3 \tstat{3.35} & +3.8 \tstat{0.84} \\ | |
| 15 | +First principal component & +2.6 \tstat{2.25} & +13.4 \tstat{1.97} \\ | |
| 16 | +Excl.\ Magnificent-7 & +1.7 \tstat{1.07} & +14.1 \tstat{1.92} \\ | |
| 17 | +Excl.\ top-10 by market cap & --- & +14.5 \tstat{1.93} \\ | |
| 18 | +\bottomrule | |
| 19 | +\end{tabular} | |
| 20 | +\tablelegend{This table assesses the robustness of the AI composite Q5$-$Q1 forward-return spread (in percent per year, with Newey--West $t$-statistics) across alternative research-design choices, reported separately for the pre-period (2010--2021) and post-period (2022--2024). Panel~A varies the signal definition (section-weighted mean, simple mean, top-5\% tail); Panel~B varies the holding horizon (6- and 24-month forward returns); and Panel~C varies the construction and universe (sector-neutralization, replacing the three signals with their first principal component, and excluding the Magnificent~7 or the ten largest firms by market capitalization). The post-ChatGPT spread is stable across signal definitions, grows with the horizon, survives the exclusion of mega-cap winners, and shrinks markedly only under sector-neutralization---locating much of the premium in a between-sector channel.} | |
| 21 | +\end{table} | |
added
paper/tables/tab_sorts.tex
+18 −0
@@ -0,0 +1,18 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{Portfolio Sorts on AI Disclosure}\label{tab:sorts} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lrrrrrrr}\toprule | |
| 5 | +Signal (weighting) & Q1 & Q2 & Q3 & Q4 & Q5 & Q5$-$Q1 & \textit{t} \\\midrule | |
| 6 | +AI adoption (EW) & 16.2 & 17.9 & 19.1 & 18.6 & 20.8 & +4.6 & 1.83 \\ | |
| 7 | +\quad value-weighted & 12.8 & 15.6 & 19.1 & 16.9 & 15.4 & +2.6 & 0.84 \\ | |
| 8 | +AI infrastructure (EW) & 16.8 & 18.4 & 17.3 & 19.6 & 20.6 & +3.9 & 1.58 \\ | |
| 9 | +\quad value-weighted & 11.4 & 18.2 & 15.0 & 20.0 & 16.9 & +5.5 & 2.01 \\ | |
| 10 | +AI disruption risk (EW) & 16.1 & 18.7 & 17.2 & 19.2 & 21.4 & +5.3 & 2.27 \\ | |
| 11 | +\quad value-weighted & 13.7 & 17.6 & 16.7 & 17.1 & 17.6 & +3.9 & 1.74 \\ | |
| 12 | +\midrule | |
| 13 | +AI composite (EW) & 16.1 & 19.0 & 17.3 & 19.2 & 21.0 & +4.9 & 1.88 \\ | |
| 14 | +\quad value-weighted & 11.7 & 17.8 & 16.2 & 19.5 & 16.6 & +4.9 & 1.61 \\ | |
| 15 | +\bottomrule | |
| 16 | +\end{tabular} | |
| 17 | +\tablelegend{This table reports mean forward 12-month returns (in percent) for portfolios sorted into quintiles on each within-year standardized AI-disclosure signal, over the full sample of formation years 2010--2024. For each signal we report both the equal-weighted (EW) and value-weighted portfolio returns; Q1 is the lowest-disclosure quintile and Q5 the highest. The column Q5$-$Q1 is the high-minus-low spread, and \textit{t} is its Newey--West (three-lag) $t$-statistic computed on the time series of 15 annual spreads. Equal-weighted spreads that exceed their value-weighted counterparts indicate that the relation is stronger among smaller index members.} | |
| 18 | +\end{table} | |
added
paper/tables/tab_summary.tex
+17 −0
@@ -0,0 +1,17 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{Summary Statistics}\label{tab:summ} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lrrrrr}\toprule | |
| 5 | +Variable & Mean & SD & p5 & Median & p95 \\\midrule | |
| 6 | +AI adoption (wmean) & 0.040 & 0.028 & -0.000 & 0.038 & 0.089 \\ | |
| 7 | +AI infrastructure (wmean) & -0.023 & 0.033 & -0.073 & -0.024 & 0.033 \\ | |
| 8 | +AI disruption risk (wmean) & 0.026 & 0.030 & -0.018 & 0.024 & 0.080 \\ | |
| 9 | +Forward 12m return & 0.186 & 0.415 & -0.279 & 0.142 & 0.735 \\ | |
| 10 | +Forward return, mkt-adj. & 0.036 & 0.395 & -0.401 & -0.005 & 0.537 \\ | |
| 11 | +Momentum (12m) & 0.178 & 0.337 & -0.257 & 0.141 & 0.728 \\ | |
| 12 | +Volatility (ann.) & 0.269 & 0.144 & 0.126 & 0.240 & 0.492 \\ | |
| 13 | +Log market cap & 23.725 & 1.178 & 21.942 & 23.636 & 25.741 \\ | |
| 14 | +\bottomrule | |
| 15 | +\end{tabular} | |
| 16 | +\tablelegend{This table reports distributional statistics for the firm-year estimation panel, which comprises 6{,}852 firm-years (497 firms) over formation years 2010--2024 with a tradeable forward return. The three AI signals---\emph{AI adoption}, \emph{AI infrastructure}, and \emph{AI disruption risk}---are section-weighted mean cosine similarities (\texttt{wmean}) of a firm's 10-K text to the corresponding anchor concept. \emph{Forward 12m return} is the buy-and-hold return from July of fiscal year $Y{+}1$ through June of $Y{+}2$; the market-adjusted variant nets out the contemporaneous return on the S\&P~500 ETF (SPY). \emph{Momentum} is the firm's trailing 12-month own return, \emph{volatility} the annualized standard deviation of its monthly returns, and \emph{log market cap} the natural logarithm of the market-capitalization proxy. For each variable the table reports the mean, standard deviation (SD), and the 5th, 50th (median), and 95th percentiles.} | |
| 17 | +\end{table} | |
added
paper/tables/tab_topfirms.tex
+19 −0
@@ -0,0 +1,19 @@ | ||
| 1 | +\begin{table}[H]\centering | |
| 2 | +\caption{The Most AI-Intensive S\&P~500 Firms}\label{tab:topfirms} | |
| 3 | +\small | |
| 4 | +\begin{tabular}{lllr}\toprule | |
| 5 | +Ticker & Company & Sector & Avg.\ AI-adoption \\\midrule | |
| 6 | +HPE & Hewlett Packard Enterprise & Information Technology & 0.126 \\ | |
| 7 | +UBER & Uber & Industrials & 0.123 \\ | |
| 8 | +INTC & Intel & Information Technology & 0.121 \\ | |
| 9 | +IBM & IBM & Information Technology & 0.113 \\ | |
| 10 | +TYL & Tyler Technologies & Information Technology & 0.108 \\ | |
| 11 | +BNY & BNY Mellon & Financials & 0.106 \\ | |
| 12 | +BRK.B & Berkshire Hathaway & Financials & 0.104 \\ | |
| 13 | +ADSK & Autodesk & Information Technology & 0.103 \\ | |
| 14 | +CMI & Cummins & Industrials & 0.096 \\ | |
| 15 | +EOG & EOG Resources & Energy & 0.095 \\ | |
| 16 | +\bottomrule | |
| 17 | +\end{tabular} | |
| 18 | +\tablelegend{This table lists the ten S\&P~500 firms with the highest average AI-adoption disclosure score---the section-weighted mean cosine similarity of their 10-K text to the AI-internal-adoption anchor---computed over fiscal years 2010--2026. For each firm the table reports its ticker, company name, GICS sector, and average AI-adoption score. The ranking has strong face validity, featuring enterprise-technology and software firms alongside an algorithm-centric platform and data-intensive financials; importantly, it is not confined to the Information Technology sector, with industrials and energy firms also appearing---evidence that intensive AI disclosure cuts across the sector taxonomy that a categorical control would impose.} | |
| 19 | +\end{table} | |
added
paper/uq_logo.jpg
+0 −0
Binary file not shown.
added
requirements.txt
+7 −0
@@ -0,0 +1,7 @@ | ||
| 1 | +pandas>=2.2 | |
| 2 | +numpy>=2.0 | |
| 3 | +pyarrow>=17 | |
| 4 | +statsmodels>=0.14 | |
| 5 | +linearmodels>=6.0 | |
| 6 | +matplotlib>=3.9 | |
| 7 | +yfinance>=0.2 | |
added
results/tables/results.json
+465 −0
@@ -0,0 +1,465 @@ | ||
| 1 | +{ | |
| 2 | + "n_obs": 6852, | |
| 3 | + "n_firms": 497, | |
| 4 | + "yrs": "2010-2024", | |
| 5 | + "sorts": { | |
| 6 | + "AI_ADOPT_EW": { | |
| 7 | + "Q1": 0.1622, | |
| 8 | + "Q2": 0.1789, | |
| 9 | + "Q3": 0.1907, | |
| 10 | + "Q4": 0.1862, | |
| 11 | + "Q5": 0.2081, | |
| 12 | + "Q5_minus_Q1": 0.0458, | |
| 13 | + "t_stat": 1.8344, | |
| 14 | + "n_years": 15.0 | |
| 15 | + }, | |
| 16 | + "AI_ADOPT_VW": { | |
| 17 | + "Q1": 0.1283, | |
| 18 | + "Q2": 0.1557, | |
| 19 | + "Q3": 0.1915, | |
| 20 | + "Q4": 0.1688, | |
| 21 | + "Q5": 0.1543, | |
| 22 | + "Q5_minus_Q1": 0.026, | |
| 23 | + "t_stat": 0.8402, | |
| 24 | + "n_years": 15.0 | |
| 25 | + }, | |
| 26 | + "AI_ADOPT_EW_madj": { | |
| 27 | + "Q1": 0.0134, | |
| 28 | + "Q2": 0.03, | |
| 29 | + "Q3": 0.0419, | |
| 30 | + "Q4": 0.0374, | |
| 31 | + "Q5": 0.0592, | |
| 32 | + "Q5_minus_Q1": 0.0458, | |
| 33 | + "t_stat": 1.8344, | |
| 34 | + "n_years": 15.0 | |
| 35 | + }, | |
| 36 | + "AI_INFRA_EW": { | |
| 37 | + "Q1": 0.1676, | |
| 38 | + "Q2": 0.1838, | |
| 39 | + "Q3": 0.1727, | |
| 40 | + "Q4": 0.1958, | |
| 41 | + "Q5": 0.2062, | |
| 42 | + "Q5_minus_Q1": 0.0386, | |
| 43 | + "t_stat": 1.5759, | |
| 44 | + "n_years": 15.0 | |
| 45 | + }, | |
| 46 | + "AI_INFRA_VW": { | |
| 47 | + "Q1": 0.1142, | |
| 48 | + "Q2": 0.1823, | |
| 49 | + "Q3": 0.1498, | |
| 50 | + "Q4": 0.1996, | |
| 51 | + "Q5": 0.1688, | |
| 52 | + "Q5_minus_Q1": 0.0546, | |
| 53 | + "t_stat": 2.0117, | |
| 54 | + "n_years": 15.0 | |
| 55 | + }, | |
| 56 | + "AI_INFRA_EW_madj": { | |
| 57 | + "Q1": 0.0188, | |
| 58 | + "Q2": 0.0349, | |
| 59 | + "Q3": 0.0238, | |
| 60 | + "Q4": 0.047, | |
| 61 | + "Q5": 0.0573, | |
| 62 | + "Q5_minus_Q1": 0.0386, | |
| 63 | + "t_stat": 1.5759, | |
| 64 | + "n_years": 15.0 | |
| 65 | + }, | |
| 66 | + "AI_RISK_EW": { | |
| 67 | + "Q1": 0.161, | |
| 68 | + "Q2": 0.1872, | |
| 69 | + "Q3": 0.1722, | |
| 70 | + "Q4": 0.1917, | |
| 71 | + "Q5": 0.2142, | |
| 72 | + "Q5_minus_Q1": 0.0532, | |
| 73 | + "t_stat": 2.2678, | |
| 74 | + "n_years": 15.0 | |
| 75 | + }, | |
| 76 | + "AI_RISK_VW": { | |
| 77 | + "Q1": 0.1369, | |
| 78 | + "Q2": 0.1756, | |
| 79 | + "Q3": 0.1671, | |
| 80 | + "Q4": 0.1707, | |
| 81 | + "Q5": 0.1757, | |
| 82 | + "Q5_minus_Q1": 0.0389, | |
| 83 | + "t_stat": 1.745, | |
| 84 | + "n_years": 15.0 | |
| 85 | + }, | |
| 86 | + "AI_RISK_EW_madj": { | |
| 87 | + "Q1": 0.0121, | |
| 88 | + "Q2": 0.0384, | |
| 89 | + "Q3": 0.0233, | |
| 90 | + "Q4": 0.0429, | |
| 91 | + "Q5": 0.0653, | |
| 92 | + "Q5_minus_Q1": 0.0532, | |
| 93 | + "t_stat": 2.2678, | |
| 94 | + "n_years": 15.0 | |
| 95 | + }, | |
| 96 | + "AI_COMPOS_EW": { | |
| 97 | + "Q1": 0.1614, | |
| 98 | + "Q2": 0.1898, | |
| 99 | + "Q3": 0.173, | |
| 100 | + "Q4": 0.1916, | |
| 101 | + "Q5": 0.2101, | |
| 102 | + "Q5_minus_Q1": 0.0487, | |
| 103 | + "t_stat": 1.8805, | |
| 104 | + "n_years": 15.0 | |
| 105 | + }, | |
| 106 | + "AI_COMPOS_VW": { | |
| 107 | + "Q1": 0.1167, | |
| 108 | + "Q2": 0.1777, | |
| 109 | + "Q3": 0.1621, | |
| 110 | + "Q4": 0.1953, | |
| 111 | + "Q5": 0.1661, | |
| 112 | + "Q5_minus_Q1": 0.0494, | |
| 113 | + "t_stat": 1.6136, | |
| 114 | + "n_years": 15.0 | |
| 115 | + }, | |
| 116 | + "AI_COMPOS_EW_madj": { | |
| 117 | + "Q1": 0.0126, | |
| 118 | + "Q2": 0.041, | |
| 119 | + "Q3": 0.0242, | |
| 120 | + "Q4": 0.0428, | |
| 121 | + "Q5": 0.0613, | |
| 122 | + "Q5_minus_Q1": 0.0487, | |
| 123 | + "t_stat": 1.8805, | |
| 124 | + "n_years": 15.0 | |
| 125 | + } | |
| 126 | + }, | |
| 127 | + "ls_alpha": { | |
| 128 | + "AI_ADOPT": { | |
| 129 | + "capm_alpha_m": 0.00126, | |
| 130 | + "capm_alpha_t": 1.081, | |
| 131 | + "ff6_alpha_m": 0.00163, | |
| 132 | + "ff6_alpha_t": 1.45803, | |
| 133 | + "ff6_alpha_ann": 0.01977, | |
| 134 | + "mean_ls_m": 0.00177, | |
| 135 | + "mean_ls_ann": 0.02141, | |
| 136 | + "n_months": 178, | |
| 137 | + "betas": { | |
| 138 | + "MktRF": 0.035, | |
| 139 | + "SMB": -0.046, | |
| 140 | + "HML": -0.038, | |
| 141 | + "RMW": -0.132, | |
| 142 | + "CMA": -0.076, | |
| 143 | + "MOM": -0.028 | |
| 144 | + } | |
| 145 | + }, | |
| 146 | + "AI_INFRA": { | |
| 147 | + "capm_alpha_m": 0.00078, | |
| 148 | + "capm_alpha_t": 0.61406, | |
| 149 | + "ff6_alpha_m": 0.00094, | |
| 150 | + "ff6_alpha_t": 0.83799, | |
| 151 | + "ff6_alpha_ann": 0.01139, | |
| 152 | + "mean_ls_m": 0.00144, | |
| 153 | + "mean_ls_ann": 0.01744, | |
| 154 | + "n_months": 178, | |
| 155 | + "betas": { | |
| 156 | + "MktRF": 0.064, | |
| 157 | + "SMB": -0.13, | |
| 158 | + "HML": -0.036, | |
| 159 | + "RMW": -0.166, | |
| 160 | + "CMA": -0.068, | |
| 161 | + "MOM": -0.035 | |
| 162 | + } | |
| 163 | + }, | |
| 164 | + "AI_COMPOS": { | |
| 165 | + "capm_alpha_m": 0.00118, | |
| 166 | + "capm_alpha_t": 0.84864, | |
| 167 | + "ff6_alpha_m": 0.00155, | |
| 168 | + "ff6_alpha_t": 1.23822, | |
| 169 | + "ff6_alpha_ann": 0.01874, | |
| 170 | + "mean_ls_m": 0.00193, | |
| 171 | + "mean_ls_ann": 0.02344, | |
| 172 | + "n_months": 178, | |
| 173 | + "betas": { | |
| 174 | + "MktRF": 0.063, | |
| 175 | + "SMB": -0.102, | |
| 176 | + "HML": -0.051, | |
| 177 | + "RMW": -0.154, | |
| 178 | + "CMA": -0.054, | |
| 179 | + "MOM": -0.061 | |
| 180 | + } | |
| 181 | + }, | |
| 182 | + "AI_RISK": { | |
| 183 | + "capm_alpha_m": 0.00176, | |
| 184 | + "capm_alpha_t": 1.3754, | |
| 185 | + "ff6_alpha_m": 0.00234, | |
| 186 | + "ff6_alpha_t": 2.10079, | |
| 187 | + "ff6_alpha_ann": 0.0284, | |
| 188 | + "mean_ls_m": 0.00249, | |
| 189 | + "mean_ls_ann": 0.03033, | |
| 190 | + "n_months": 178, | |
| 191 | + "betas": { | |
| 192 | + "MktRF": 0.049, | |
| 193 | + "SMB": -0.023, | |
| 194 | + "HML": -0.13, | |
| 195 | + "RMW": -0.153, | |
| 196 | + "CMA": -0.054, | |
| 197 | + "MOM": -0.048 | |
| 198 | + } | |
| 199 | + } | |
| 200 | + }, | |
| 201 | + "panel_fe": { | |
| 202 | + "M1_adopt": { | |
| 203 | + "coefs": { | |
| 204 | + "z_AI_ADOPT": { | |
| 205 | + "coef": -0.0021, | |
| 206 | + "t": -0.3, | |
| 207 | + "p": 0.7626 | |
| 208 | + } | |
| 209 | + }, | |
| 210 | + "n": 6811, | |
| 211 | + "r2_within": 0.0 | |
| 212 | + }, | |
| 213 | + "M2_adopt_ctrl": { | |
| 214 | + "coefs": { | |
| 215 | + "z_AI_ADOPT": { | |
| 216 | + "coef": -0.0055, | |
| 217 | + "t": -0.84, | |
| 218 | + "p": 0.4034 | |
| 219 | + }, | |
| 220 | + "z_size": { | |
| 221 | + "coef": -0.224, | |
| 222 | + "t": -7.17, | |
| 223 | + "p": 0.0 | |
| 224 | + }, | |
| 225 | + "z_mom": { | |
| 226 | + "coef": -0.0024, | |
| 227 | + "t": -0.25, | |
| 228 | + "p": 0.8062 | |
| 229 | + }, | |
| 230 | + "z_vol": { | |
| 231 | + "coef": 0.0195, | |
| 232 | + "t": 2.12, | |
| 233 | + "p": 0.0341 | |
| 234 | + } | |
| 235 | + }, | |
| 236 | + "n": 6811, | |
| 237 | + "r2_within": 0.0738 | |
| 238 | + }, | |
| 239 | + "M3_infra_ctrl": { | |
| 240 | + "coefs": { | |
| 241 | + "z_AI_INFRA": { | |
| 242 | + "coef": -0.0007, | |
| 243 | + "t": -0.07, | |
| 244 | + "p": 0.9424 | |
| 245 | + }, | |
| 246 | + "z_size": { | |
| 247 | + "coef": -0.2239, | |
| 248 | + "t": -7.17, | |
| 249 | + "p": 0.0 | |
| 250 | + }, | |
| 251 | + "z_mom": { | |
| 252 | + "coef": -0.0023, | |
| 253 | + "t": -0.24, | |
| 254 | + "p": 0.8082 | |
| 255 | + }, | |
| 256 | + "z_vol": { | |
| 257 | + "coef": 0.0194, | |
| 258 | + "t": 2.1, | |
| 259 | + "p": 0.036 | |
| 260 | + } | |
| 261 | + }, | |
| 262 | + "n": 6811, | |
| 263 | + "r2_within": 0.0737 | |
| 264 | + }, | |
| 265 | + "M4_risk_ctrl": { | |
| 266 | + "coefs": { | |
| 267 | + "z_AI_RISK": { | |
| 268 | + "coef": -0.0093, | |
| 269 | + "t": -1.24, | |
| 270 | + "p": 0.2149 | |
| 271 | + }, | |
| 272 | + "z_size": { | |
| 273 | + "coef": -0.2241, | |
| 274 | + "t": -7.17, | |
| 275 | + "p": 0.0 | |
| 276 | + }, | |
| 277 | + "z_mom": { | |
| 278 | + "coef": -0.0023, | |
| 279 | + "t": -0.24, | |
| 280 | + "p": 0.8089 | |
| 281 | + }, | |
| 282 | + "z_vol": { | |
| 283 | + "coef": 0.0197, | |
| 284 | + "t": 2.12, | |
| 285 | + "p": 0.0339 | |
| 286 | + } | |
| 287 | + }, | |
| 288 | + "n": 6811, | |
| 289 | + "r2_within": 0.074 | |
| 290 | + }, | |
| 291 | + "M5_all": { | |
| 292 | + "coefs": { | |
| 293 | + "z_AI_ADOPT": { | |
| 294 | + "coef": -0.0047, | |
| 295 | + "t": -0.24, | |
| 296 | + "p": 0.809 | |
| 297 | + }, | |
| 298 | + "z_AI_INFRA": { | |
| 299 | + "coef": 0.0134, | |
| 300 | + "t": 0.61, | |
| 301 | + "p": 0.5413 | |
| 302 | + }, | |
| 303 | + "z_AI_RISK": { | |
| 304 | + "coef": -0.0153, | |
| 305 | + "t": -1.0, | |
| 306 | + "p": 0.3186 | |
| 307 | + }, | |
| 308 | + "z_size": { | |
| 309 | + "coef": -0.2242, | |
| 310 | + "t": -7.17, | |
| 311 | + "p": 0.0 | |
| 312 | + }, | |
| 313 | + "z_mom": { | |
| 314 | + "coef": -0.0024, | |
| 315 | + "t": -0.25, | |
| 316 | + "p": 0.8024 | |
| 317 | + }, | |
| 318 | + "z_vol": { | |
| 319 | + "coef": 0.0197, | |
| 320 | + "t": 2.12, | |
| 321 | + "p": 0.0337 | |
| 322 | + } | |
| 323 | + }, | |
| 324 | + "n": 6811, | |
| 325 | + "r2_within": 0.0741 | |
| 326 | + } | |
| 327 | + }, | |
| 328 | + "fama_macbeth": { | |
| 329 | + "adopt": { | |
| 330 | + "const": { | |
| 331 | + "mean_coef": 0.1848, | |
| 332 | + "t": 11.94 | |
| 333 | + }, | |
| 334 | + "z_AI_ADOPT": { | |
| 335 | + "mean_coef": 0.0126, | |
| 336 | + "t": 1.63 | |
| 337 | + }, | |
| 338 | + "z_size": { | |
| 339 | + "mean_coef": -0.032, | |
| 340 | + "t": -8.53 | |
| 341 | + }, | |
| 342 | + "z_mom": { | |
| 343 | + "mean_coef": 0.0077, | |
| 344 | + "t": 1.04 | |
| 345 | + }, | |
| 346 | + "z_vol": { | |
| 347 | + "mean_coef": 0.0685, | |
| 348 | + "t": 3.63 | |
| 349 | + }, | |
| 350 | + "n_years": 15 | |
| 351 | + }, | |
| 352 | + "infra": { | |
| 353 | + "const": { | |
| 354 | + "mean_coef": 0.1848, | |
| 355 | + "t": 11.94 | |
| 356 | + }, | |
| 357 | + "z_AI_INFRA": { | |
| 358 | + "mean_coef": 0.016, | |
| 359 | + "t": 1.71 | |
| 360 | + }, | |
| 361 | + "z_size": { | |
| 362 | + "mean_coef": -0.0333, | |
| 363 | + "t": -8.2 | |
| 364 | + }, | |
| 365 | + "z_mom": { | |
| 366 | + "mean_coef": 0.0069, | |
| 367 | + "t": 0.93 | |
| 368 | + }, | |
| 369 | + "z_vol": { | |
| 370 | + "mean_coef": 0.0685, | |
| 371 | + "t": 3.59 | |
| 372 | + }, | |
| 373 | + "n_years": 15 | |
| 374 | + }, | |
| 375 | + "all": { | |
| 376 | + "const": { | |
| 377 | + "mean_coef": 0.1848, | |
| 378 | + "t": 11.95 | |
| 379 | + }, | |
| 380 | + "z_AI_ADOPT": { | |
| 381 | + "mean_coef": -0.0, | |
| 382 | + "t": -0.0 | |
| 383 | + }, | |
| 384 | + "z_AI_INFRA": { | |
| 385 | + "mean_coef": 0.0158, | |
| 386 | + "t": 1.54 | |
| 387 | + }, | |
| 388 | + "z_AI_RISK": { | |
| 389 | + "mean_coef": 0.0001, | |
| 390 | + "t": 0.01 | |
| 391 | + }, | |
| 392 | + "z_size": { | |
| 393 | + "mean_coef": -0.033, | |
| 394 | + "t": -8.21 | |
| 395 | + }, | |
| 396 | + "z_mom": { | |
| 397 | + "mean_coef": 0.0081, | |
| 398 | + "t": 1.08 | |
| 399 | + }, | |
| 400 | + "z_vol": { | |
| 401 | + "mean_coef": 0.0687, | |
| 402 | + "t": 3.56 | |
| 403 | + }, | |
| 404 | + "n_years": 15 | |
| 405 | + } | |
| 406 | + }, | |
| 407 | + "structural_break": { | |
| 408 | + "AI_ADOPT": { | |
| 409 | + "pre_slope": 0.0074, | |
| 410 | + "interaction": 0.0199, | |
| 411 | + "interaction_t": 1.17, | |
| 412 | + "post_slope": 0.0273 | |
| 413 | + }, | |
| 414 | + "AI_INFRA": { | |
| 415 | + "pre_slope": 0.0067, | |
| 416 | + "interaction": 0.0277, | |
| 417 | + "interaction_t": 2.63, | |
| 418 | + "post_slope": 0.0344 | |
| 419 | + }, | |
| 420 | + "AI_COMPOS": { | |
| 421 | + "pre_slope": 0.0078, | |
| 422 | + "interaction": 0.027, | |
| 423 | + "interaction_t": 1.78, | |
| 424 | + "post_slope": 0.0348 | |
| 425 | + } | |
| 426 | + }, | |
| 427 | + "subperiod_spread": { | |
| 428 | + "AI_ADOPT": { | |
| 429 | + "pre_2010_2021": [ | |
| 430 | + 0.0216, | |
| 431 | + 2.04, | |
| 432 | + 12 | |
| 433 | + ], | |
| 434 | + "post_2022_2024": [ | |
| 435 | + 0.1427, | |
| 436 | + 2.15, | |
| 437 | + 3 | |
| 438 | + ] | |
| 439 | + }, | |
| 440 | + "AI_INFRA": { | |
| 441 | + "pre_2010_2021": [ | |
| 442 | + 0.0143, | |
| 443 | + 0.91, | |
| 444 | + 12 | |
| 445 | + ], | |
| 446 | + "post_2022_2024": [ | |
| 447 | + 0.1355, | |
| 448 | + 2.44, | |
| 449 | + 3 | |
| 450 | + ] | |
| 451 | + }, | |
| 452 | + "AI_COMPOS": { | |
| 453 | + "pre_2010_2021": [ | |
| 454 | + 0.0245, | |
| 455 | + 1.58, | |
| 456 | + 12 | |
| 457 | + ], | |
| 458 | + "post_2022_2024": [ | |
| 459 | + 0.1457, | |
| 460 | + 2.07, | |
| 461 | + 3 | |
| 462 | + ] | |
| 463 | + } | |
| 464 | + } | |
| 465 | +} | |
| \ No newline at end of file | ||
added
results/tables/results2.json
+445 −0
@@ -0,0 +1,445 @@ | ||
| 1 | +{ | |
| 2 | + "placebo": { | |
| 3 | + "AI adoption": { | |
| 4 | + "pre": [ | |
| 5 | + 0.0216, | |
| 6 | + 2.04, | |
| 7 | + 12 | |
| 8 | + ], | |
| 9 | + "post": [ | |
| 10 | + 0.1427, | |
| 11 | + 2.15, | |
| 12 | + 3 | |
| 13 | + ], | |
| 14 | + "interaction": 0.0199, | |
| 15 | + "interaction_t": 1.17, | |
| 16 | + "is_ai": true | |
| 17 | + }, | |
| 18 | + "AI infrastructure": { | |
| 19 | + "pre": [ | |
| 20 | + 0.0143, | |
| 21 | + 0.91, | |
| 22 | + 12 | |
| 23 | + ], | |
| 24 | + "post": [ | |
| 25 | + 0.1355, | |
| 26 | + 2.44, | |
| 27 | + 3 | |
| 28 | + ], | |
| 29 | + "interaction": 0.0277, | |
| 30 | + "interaction_t": 2.63, | |
| 31 | + "is_ai": true | |
| 32 | + }, | |
| 33 | + "AI disruption risk": { | |
| 34 | + "pre": [ | |
| 35 | + 0.0313, | |
| 36 | + 2.47, | |
| 37 | + 12 | |
| 38 | + ], | |
| 39 | + "post": [ | |
| 40 | + 0.1407, | |
| 41 | + 2.07, | |
| 42 | + 3 | |
| 43 | + ], | |
| 44 | + "interaction": 0.0108, | |
| 45 | + "interaction_t": 0.6, | |
| 46 | + "is_ai": true | |
| 47 | + }, | |
| 48 | + "ESG commitment": { | |
| 49 | + "pre": [ | |
| 50 | + -0.0248, | |
| 51 | + -2.82, | |
| 52 | + 12 | |
| 53 | + ], | |
| 54 | + "post": [ | |
| 55 | + -0.0878, | |
| 56 | + -2.27, | |
| 57 | + 3 | |
| 58 | + ], | |
| 59 | + "interaction": -0.0055, | |
| 60 | + "interaction_t": -0.76, | |
| 61 | + "is_ai": false | |
| 62 | + }, | |
| 63 | + "Climate risk": { | |
| 64 | + "pre": [ | |
| 65 | + -0.0079, | |
| 66 | + -1.38, | |
| 67 | + 12 | |
| 68 | + ], | |
| 69 | + "post": [ | |
| 70 | + -0.0495, | |
| 71 | + -2.48, | |
| 72 | + 3 | |
| 73 | + ], | |
| 74 | + "interaction": 0.0008, | |
| 75 | + "interaction_t": 0.17, | |
| 76 | + "is_ai": false | |
| 77 | + }, | |
| 78 | + "Cybersecurity": { | |
| 79 | + "pre": [ | |
| 80 | + 0.0261, | |
| 81 | + 1.96, | |
| 82 | + 12 | |
| 83 | + ], | |
| 84 | + "post": [ | |
| 85 | + 0.1347, | |
| 86 | + 2.12, | |
| 87 | + 3 | |
| 88 | + ], | |
| 89 | + "interaction": 0.009, | |
| 90 | + "interaction_t": 0.64, | |
| 91 | + "is_ai": false | |
| 92 | + }, | |
| 93 | + "Automation/labor": { | |
| 94 | + "pre": [ | |
| 95 | + 0.0209, | |
| 96 | + 1.91, | |
| 97 | + 12 | |
| 98 | + ], | |
| 99 | + "post": [ | |
| 100 | + 0.0722, | |
| 101 | + 1.29, | |
| 102 | + 3 | |
| 103 | + ], | |
| 104 | + "interaction": 0.0002, | |
| 105 | + "interaction_t": 0.01, | |
| 106 | + "is_ai": false | |
| 107 | + }, | |
| 108 | + "Macro risk": { | |
| 109 | + "pre": [ | |
| 110 | + -0.0157, | |
| 111 | + -2.02, | |
| 112 | + 12 | |
| 113 | + ], | |
| 114 | + "post": [ | |
| 115 | + -0.005, | |
| 116 | + -0.11, | |
| 117 | + 3 | |
| 118 | + ], | |
| 119 | + "interaction": 0.0125, | |
| 120 | + "interaction_t": 1.06, | |
| 121 | + "is_ai": false | |
| 122 | + } | |
| 123 | + }, | |
| 124 | + "sector_neutral": { | |
| 125 | + "full": [ | |
| 126 | + 0.0258, | |
| 127 | + 2.55, | |
| 128 | + 15 | |
| 129 | + ], | |
| 130 | + "pre": [ | |
| 131 | + 0.0228, | |
| 132 | + 3.35, | |
| 133 | + 12 | |
| 134 | + ], | |
| 135 | + "post": [ | |
| 136 | + 0.0377, | |
| 137 | + 0.84, | |
| 138 | + 3 | |
| 139 | + ] | |
| 140 | + }, | |
| 141 | + "double_sort_post": { | |
| 142 | + "Lo": { | |
| 143 | + "Small": 19.46, | |
| 144 | + "Large": 15.75 | |
| 145 | + }, | |
| 146 | + "Mid": { | |
| 147 | + "Small": 19.25, | |
| 148 | + "Large": 18.34 | |
| 149 | + }, | |
| 150 | + "Hi": { | |
| 151 | + "Small": 34.55, | |
| 152 | + "Large": 22.87 | |
| 153 | + } | |
| 154 | + }, | |
| 155 | + "double_sort_pre": { | |
| 156 | + "Lo": { | |
| 157 | + "Small": 19.68, | |
| 158 | + "Large": 13.78 | |
| 159 | + }, | |
| 160 | + "Mid": { | |
| 161 | + "Small": 21.92, | |
| 162 | + "Large": 14.32 | |
| 163 | + }, | |
| 164 | + "Hi": { | |
| 165 | + "Small": 23.59, | |
| 166 | + "Large": 13.63 | |
| 167 | + } | |
| 168 | + }, | |
| 169 | + "mag7": { | |
| 170 | + "baseline_post": [ | |
| 171 | + 0.1457, | |
| 172 | + 2.07, | |
| 173 | + 3 | |
| 174 | + ], | |
| 175 | + "ex_mag7_post": [ | |
| 176 | + 0.1408, | |
| 177 | + 1.92, | |
| 178 | + 3 | |
| 179 | + ], | |
| 180 | + "ex_top10_post": [ | |
| 181 | + 0.1446, | |
| 182 | + 1.93, | |
| 183 | + 3 | |
| 184 | + ], | |
| 185 | + "ex_mag7_pre": [ | |
| 186 | + 0.0172, | |
| 187 | + 1.07, | |
| 188 | + 12 | |
| 189 | + ] | |
| 190 | + }, | |
| 191 | + "alt_signal": { | |
| 192 | + "wmean(base)": { | |
| 193 | + "pre": [ | |
| 194 | + 0.0245, | |
| 195 | + 1.58, | |
| 196 | + 12 | |
| 197 | + ], | |
| 198 | + "post": [ | |
| 199 | + 0.1457, | |
| 200 | + 2.07, | |
| 201 | + 3 | |
| 202 | + ] | |
| 203 | + }, | |
| 204 | + "mean": { | |
| 205 | + "pre": [ | |
| 206 | + 0.0228, | |
| 207 | + 1.5, | |
| 208 | + 12 | |
| 209 | + ], | |
| 210 | + "post": [ | |
| 211 | + 0.134, | |
| 212 | + 2.23, | |
| 213 | + 3 | |
| 214 | + ] | |
| 215 | + }, | |
| 216 | + "top5pct": { | |
| 217 | + "pre": [ | |
| 218 | + 0.0145, | |
| 219 | + 1.04, | |
| 220 | + 12 | |
| 221 | + ], | |
| 222 | + "post": [ | |
| 223 | + 0.1493, | |
| 224 | + 2.47, | |
| 225 | + 3 | |
| 226 | + ] | |
| 227 | + } | |
| 228 | + }, | |
| 229 | + "alt_horizon": { | |
| 230 | + "6m": { | |
| 231 | + "pre": [ | |
| 232 | + -0.0008, | |
| 233 | + -0.1, | |
| 234 | + 12 | |
| 235 | + ], | |
| 236 | + "post": [ | |
| 237 | + 0.0113, | |
| 238 | + NaN, | |
| 239 | + 2 | |
| 240 | + ] | |
| 241 | + }, | |
| 242 | + "24m": { | |
| 243 | + "pre": [ | |
| 244 | + 0.0935, | |
| 245 | + 2.86, | |
| 246 | + 12 | |
| 247 | + ], | |
| 248 | + "post": [ | |
| 249 | + 0.2297, | |
| 250 | + NaN, | |
| 251 | + 2 | |
| 252 | + ] | |
| 253 | + } | |
| 254 | + }, | |
| 255 | + "fm_byyear": [ | |
| 256 | + { | |
| 257 | + "year": 2010, | |
| 258 | + "coef": -0.018654282938673935, | |
| 259 | + "se": 0.009695472645955532, | |
| 260 | + "t": -1.924019964767326 | |
| 261 | + }, | |
| 262 | + { | |
| 263 | + "year": 2011, | |
| 264 | + "coef": 0.001435148364027878, | |
| 265 | + "se": 0.01438043334007432, | |
| 266 | + "t": 0.09979868687465165 | |
| 267 | + }, | |
| 268 | + { | |
| 269 | + "year": 2012, | |
| 270 | + "coef": 0.035395857398994084, | |
| 271 | + "se": 0.013905930789781204, | |
| 272 | + "t": 2.5453785103694595 | |
| 273 | + }, | |
| 274 | + { | |
| 275 | + "year": 2013, | |
| 276 | + "coef": -0.03282015610944249, | |
| 277 | + "se": 0.010621142759634808, | |
| 278 | + "t": -3.090077673578974 | |
| 279 | + }, | |
| 280 | + { | |
| 281 | + "year": 2014, | |
| 282 | + "coef": 0.010841711196201715, | |
| 283 | + "se": 0.0118676603547193, | |
| 284 | + "t": 0.9135508492952779 | |
| 285 | + }, | |
| 286 | + { | |
| 287 | + "year": 2015, | |
| 288 | + "coef": 0.006479326366460463, | |
| 289 | + "se": 0.013412889918344228, | |
| 290 | + "t": 0.4830671395877908 | |
| 291 | + }, | |
| 292 | + { | |
| 293 | + "year": 2016, | |
| 294 | + "coef": 0.027079840054787516, | |
| 295 | + "se": 0.012550003254423658, | |
| 296 | + "t": 2.1577556201224364 | |
| 297 | + }, | |
| 298 | + { | |
| 299 | + "year": 2017, | |
| 300 | + "coef": 0.0034972629856182694, | |
| 301 | + "se": 0.011850963686757185, | |
| 302 | + "t": 0.29510367916545666 | |
| 303 | + }, | |
| 304 | + { | |
| 305 | + "year": 2018, | |
| 306 | + "coef": 0.020546311066695522, | |
| 307 | + "se": 0.015297392093211267, | |
| 308 | + "t": 1.343125085733642 | |
| 309 | + }, | |
| 310 | + { | |
| 311 | + "year": 2019, | |
| 312 | + "coef": 0.0037012299178389874, | |
| 313 | + "se": 0.0165908689232616, | |
| 314 | + "t": 0.22308837077542062 | |
| 315 | + }, | |
| 316 | + { | |
| 317 | + "year": 2020, | |
| 318 | + "coef": -0.009948325957169284, | |
| 319 | + "se": 0.01076988640073044, | |
| 320 | + "t": -0.9237168886474573 | |
| 321 | + }, | |
| 322 | + { | |
| 323 | + "year": 2021, | |
| 324 | + "coef": 0.031487333586654294, | |
| 325 | + "se": 0.030271538243484206, | |
| 326 | + "t": 1.0401629852236458 | |
| 327 | + }, | |
| 328 | + { | |
| 329 | + "year": 2022, | |
| 330 | + "coef": 0.02932795595191836, | |
| 331 | + "se": 0.01845057569643446, | |
| 332 | + "t": 1.5895415099478947 | |
| 333 | + }, | |
| 334 | + { | |
| 335 | + "year": 2023, | |
| 336 | + "coef": -0.011106516046450734, | |
| 337 | + "se": 0.022395723028705683, | |
| 338 | + "t": -0.4959212985539683 | |
| 339 | + }, | |
| 340 | + { | |
| 341 | + "year": 2024, | |
| 342 | + "coef": 0.1433682452091106, | |
| 343 | + "se": 0.05192664084428197, | |
| 344 | + "t": 2.7609766947768577 | |
| 345 | + } | |
| 346 | + ], | |
| 347 | + "pca": { | |
| 348 | + "explained_var_ratio": [ | |
| 349 | + 0.868, | |
| 350 | + 0.087, | |
| 351 | + 0.045 | |
| 352 | + ], | |
| 353 | + "loadings_pc1": [ | |
| 354 | + -0.591, | |
| 355 | + -0.564, | |
| 356 | + -0.577 | |
| 357 | + ], | |
| 358 | + "pre": [ | |
| 359 | + 0.026, | |
| 360 | + 2.25, | |
| 361 | + 12 | |
| 362 | + ], | |
| 363 | + "post": [ | |
| 364 | + 0.134, | |
| 365 | + 1.97, | |
| 366 | + 3 | |
| 367 | + ] | |
| 368 | + }, | |
| 369 | + "did": { | |
| 370 | + "binary": { | |
| 371 | + "coef": 0.017, | |
| 372 | + "t": 0.78, | |
| 373 | + "n": 6790 | |
| 374 | + }, | |
| 375 | + "continuous": { | |
| 376 | + "coef": 0.0269, | |
| 377 | + "t": 1.51, | |
| 378 | + "n": 6790 | |
| 379 | + } | |
| 380 | + }, | |
| 381 | + "did_eventtime": [ | |
| 382 | + { | |
| 383 | + "year": 2015, | |
| 384 | + "coef": 0.03850249557447814, | |
| 385 | + "se": 0.0013847785818818304 | |
| 386 | + }, | |
| 387 | + { | |
| 388 | + "year": 2016, | |
| 389 | + "coef": 0.029540519812011792, | |
| 390 | + "se": 0.003984829195566341 | |
| 391 | + }, | |
| 392 | + { | |
| 393 | + "year": 2017, | |
| 394 | + "coef": 0.0020874489718797178, | |
| 395 | + "se": 0.003401459013410779 | |
| 396 | + }, | |
| 397 | + { | |
| 398 | + "year": 2018, | |
| 399 | + "coef": 0.022522749526366223, | |
| 400 | + "se": 0.001059669525518878 | |
| 401 | + }, | |
| 402 | + { | |
| 403 | + "year": 2019, | |
| 404 | + "coef": -0.0027932633763402374, | |
| 405 | + "se": 0.002102424960501601 | |
| 406 | + }, | |
| 407 | + { | |
| 408 | + "year": 2020, | |
| 409 | + "coef": -0.011764718161458246, | |
| 410 | + "se": 0.0011151327454620148 | |
| 411 | + }, | |
| 412 | + { | |
| 413 | + "year": 2021, | |
| 414 | + "coef": 0.015693415374462505, | |
| 415 | + "se": 0.0012102032110539297 | |
| 416 | + }, | |
| 417 | + { | |
| 418 | + "year": 2022, | |
| 419 | + "coef": 0.03381454132319204, | |
| 420 | + "se": 0.0019458437808454545 | |
| 421 | + }, | |
| 422 | + { | |
| 423 | + "year": 2023, | |
| 424 | + "coef": 0.005122643968623584, | |
| 425 | + "se": 0.002502640547920803 | |
| 426 | + }, | |
| 427 | + { | |
| 428 | + "year": 2024, | |
| 429 | + "coef": 0.06760337692913147, | |
| 430 | + "se": 0.001162772256778745 | |
| 431 | + } | |
| 432 | + ], | |
| 433 | + "fwd_vol": { | |
| 434 | + "pre": [ | |
| 435 | + 0.0202, | |
| 436 | + 2.4, | |
| 437 | + 12 | |
| 438 | + ], | |
| 439 | + "post": [ | |
| 440 | + 0.0285, | |
| 441 | + 3.09, | |
| 442 | + 3 | |
| 443 | + ] | |
| 444 | + } | |
| 445 | +} | |
| \ No newline at end of file | ||
added
results/tables/results_event.json
+45 −0
@@ -0,0 +1,45 @@ | ||
| 1 | +{ | |
| 2 | + "car_60d": { | |
| 3 | + "High": 1.89, | |
| 4 | + "Mid": 1.79, | |
| 5 | + "Low": -1.04, | |
| 6 | + "H_minus_L": 2.93, | |
| 7 | + "t": 1.77, | |
| 8 | + "p": 0.0775 | |
| 9 | + }, | |
| 10 | + "car_6m": { | |
| 11 | + "High": -2.72, | |
| 12 | + "Mid": -5.17, | |
| 13 | + "Low": -7.25, | |
| 14 | + "H_minus_L": 4.53, | |
| 15 | + "t": 1.6, | |
| 16 | + "p": 0.1102 | |
| 17 | + }, | |
| 18 | + "car_1y": { | |
| 19 | + "High": -6.38, | |
| 20 | + "Mid": -11.8, | |
| 21 | + "Low": -16.46, | |
| 22 | + "H_minus_L": 10.08, | |
| 23 | + "t": 1.97, | |
| 24 | + "p": 0.0501 | |
| 25 | + }, | |
| 26 | + "car_18m": { | |
| 27 | + "High": -8.46, | |
| 28 | + "Mid": -16.03, | |
| 29 | + "Low": -23.05, | |
| 30 | + "H_minus_L": 14.59, | |
| 31 | + "t": 1.89, | |
| 32 | + "p": 0.0597 | |
| 33 | + }, | |
| 34 | + "xsec_reg_1y": { | |
| 35 | + "ai_pre_coef": 3.132, | |
| 36 | + "ai_pre_t": 1.39, | |
| 37 | + "n": 483, | |
| 38 | + "r2": 0.16 | |
| 39 | + }, | |
| 40 | + "xsec_reg_1y_sectfe": { | |
| 41 | + "ai_pre_coef": 2.089, | |
| 42 | + "ai_pre_t": 0.99, | |
| 43 | + "n": 480 | |
| 44 | + } | |
| 45 | +} | |
| \ No newline at end of file | ||
added
results/tables/results_extra.json
+23 −0
@@ -0,0 +1,23 @@ | ||
| 1 | +{ | |
| 2 | + "AI_COMPOS": { | |
| 3 | + "sharpe_full": 0.45, | |
| 4 | + "sharpe_pre": 0.15, | |
| 5 | + "sharpe_post": 1.33, | |
| 6 | + "mean_post_ann": 7.9, | |
| 7 | + "mean_pre_ann": 0.8 | |
| 8 | + }, | |
| 9 | + "AI_ADOPT": { | |
| 10 | + "sharpe_full": 0.45, | |
| 11 | + "sharpe_pre": 0.18, | |
| 12 | + "sharpe_post": 1.09, | |
| 13 | + "mean_post_ann": 6.8, | |
| 14 | + "mean_pre_ann": 0.8 | |
| 15 | + }, | |
| 16 | + "AI_RISK": { | |
| 17 | + "sharpe_full": 0.56, | |
| 18 | + "sharpe_pre": 0.33, | |
| 19 | + "sharpe_post": 1.15, | |
| 20 | + "mean_post_ann": 8.0, | |
| 21 | + "mean_pre_ann": 1.7 | |
| 22 | + } | |
| 23 | +} | |
| \ No newline at end of file | ||
added
results/tables/t1_summary_stats.csv
+9 −0
@@ -0,0 +1,9 @@ | ||
| 1 | +,count,mean,std,min,5%,25%,50%,75%,95%,max | |
| 2 | +ai_adoption_wmean,6852.0,0.04040704767452049,0.027704389111904586,-0.056319814873859286,-0.00045399398615700206,0.021706347918992817,0.03825762326768772,0.057046582582794755,0.08914015149574776,0.2079532867181737 | |
| 3 | +ai_infrastructure_wmean,6852.0,-0.02254669374843961,0.03294147223493173,-0.1177054613828659,-0.07338625603498748,-0.04529579788764157,-0.02410552414907405,-0.0022299304271289552,0.033283630111776624,0.14735987800651673 | |
| 4 | +ai_disruption_risk_wmean,6852.0,0.02633091823215321,0.030062626441902614,-0.06547456295652823,-0.018333885602243923,0.0060464890118431406,0.024132239894242957,0.04438341066221862,0.07955411340373879,0.2425726144961797 | |
| 5 | +fwd_ret,6852.0,0.18562769794494405,0.41526080598677184,-0.9251871991132491,-0.27895959820939353,-0.02944343325478002,0.14176824836965507,0.33105645663440675,0.7354551303240766,9.6922679135916 | |
| 6 | +fwd_ret_mktadj,6852.0,0.035613980108536974,0.3952743682992905,-0.9649727639936845,-0.4012303963502157,-0.16493167984377916,-0.004805007217852486,0.17424373816732153,0.5367735126868064,9.463925242012259 | |
| 7 | +mom_12m,6841.0,0.17826585822519864,0.3368432194825761,-0.905042715552163,-0.2565971729903387,-0.01914154292929271,0.14115163235752348,0.32159023437660483,0.7275220456795188,4.550186196940489 | |
| 8 | +vol_12m,6846.0,0.2689065796019047,0.1439449223047308,0.02317358321809037,0.12649235407123302,0.18157119390938492,0.24009984221686909,0.3214817091702843,0.49216633019660894,5.018534013072863 | |
| 9 | +log_mktcap,6821.0,23.724515504845186,1.1784652203748467,19.259026123015865,21.94234087982483,22.940865415123813,23.63646066891196,24.439404645819696,25.74148773134101,28.971617202227232 | |
added
results/tables/t1b_correlations.csv
+7 −0
@@ -0,0 +1,7 @@ | ||
| 1 | +,z_AI_ADOPT,z_AI_INFRA,z_AI_RISK,z_size,z_mom,fwd_ret | |
| 2 | +z_AI_ADOPT,1.0,0.8028180743908747,0.8556698643926306,0.07386647791246725,0.012900921152116643,0.03839523736527145 | |
| 3 | +z_AI_INFRA,0.8028180743908747,1.0,0.7448553806384606,0.11281920571617303,0.015916623284046038,0.0387725086601581 | |
| 4 | +z_AI_RISK,0.8556698643926306,0.7448553806384606,1.0,0.07004688187075038,0.024482759917698875,0.04093002350127511 | |
| 5 | +z_size,0.07386647791246725,0.11281920571617303,0.07004688187075038,1.0,0.08123702432654031,-0.09983064254511786 | |
| 6 | +z_mom,0.012900921152116643,0.015916623284046038,0.024482759917698875,0.08123702432654031,1.0,0.002687540308310858 | |
| 7 | +fwd_ret,0.03839523736527145,0.0387725086601581,0.04093002350127511,-0.09983064254511786,0.002687540308310858,1.0 | |
added
results/tables/t2_portfolio_sorts.csv
+13 −0
@@ -0,0 +1,13 @@ | ||
| 1 | +,Q1,Q2,Q3,Q4,Q5,Q5_minus_Q1,t_stat,n_years | |
| 2 | +AI_ADOPT_EW,0.1622304630117248,0.17886846646640162,0.19069437298870417,0.18623303899400476,0.20805781556569006,0.0458273525539652,1.8344173966494013,15.0 | |
| 3 | +AI_ADOPT_VW,0.12831377593993618,0.1557223873251349,0.19147970696478472,0.16880113589739823,0.15432597813353918,0.026012202193603017,0.8401878372773768,15.0 | |
| 4 | +AI_ADOPT_EW_madj,0.013396968953489208,0.030034972408165998,0.04186087893046856,0.03739954493576918,0.05922432150745444,0.04582735255396522,1.8344173966494022,15.0 | |
| 5 | +AI_INFRA_EW,0.16761949628781805,0.18375829663607343,0.1726811642253529,0.19582998930527162,0.20617918744729322,0.038559691159475155,1.5759481870672352,15.0 | |
| 6 | +AI_INFRA_VW,0.11420660111070716,0.18232669890499462,0.14977675214011021,0.19960199509940954,0.16878266539147102,0.054576064280763885,2.0116567868680635,15.0 | |
| 7 | +AI_INFRA_EW_madj,0.018786002229582443,0.034924802577837845,0.0238476701671173,0.04699649524703602,0.057345693389057595,0.03855969115947514,1.5759481870672343,15.0 | |
| 8 | +AI_RISK_EW,0.16097462919803554,0.18721102049997332,0.17215092733224252,0.19171468294944655,0.21417665878136977,0.05320202958333426,2.2677789301974602,15.0 | |
| 9 | +AI_RISK_VW,0.13685529597814955,0.17559429578035574,0.1670742868974344,0.1707231690902548,0.17571432554593788,0.03885902956778835,1.7449700422295356,15.0 | |
| 10 | +AI_RISK_EW_madj,0.012141135139799896,0.03837752644173772,0.023317433274006948,0.04288118889121095,0.06534316472313416,0.053202029583334275,2.2677789301974607,15.0 | |
| 11 | +AI_COMPOS_EW,0.16140163539436944,0.18984942045377656,0.17304828040655293,0.19163129018677777,0.21010947015379966,0.04870783475943023,1.8804662880967138,15.0 | |
| 12 | +AI_COMPOS_VW,0.11666185798625865,0.17771688317979492,0.16210859240952458,0.1953418062966366,0.16609095998321985,0.04942910199696119,1.6135763562374619,15.0 | |
| 13 | +AI_COMPOS_EW_madj,0.012568141336133836,0.041015926395540955,0.024214786348317377,0.042797796128542155,0.06127597609556406,0.04870783475943024,1.880466288096714,15.0 | |
added
results/tables/t6_did_eventtime.csv
+11 −0
@@ -0,0 +1,11 @@ | ||
| 1 | +year,coef,se | |
| 2 | +2015,0.03850249557447814,0.0013847785818818304 | |
| 3 | +2016,0.029540519812011792,0.003984829195566341 | |
| 4 | +2017,0.0020874489718797178,0.003401459013410779 | |
| 5 | +2018,0.022522749526366223,0.001059669525518878 | |
| 6 | +2019,-0.0027932633763402374,0.002102424960501601 | |
| 7 | +2020,-0.011764718161458246,0.0011151327454620148 | |
| 8 | +2021,0.015693415374462505,0.0012102032110539297 | |
| 9 | +2022,0.03381454132319204,0.0019458437808454545 | |
| 10 | +2023,0.005122643968623584,0.002502640547920803 | |
| 11 | +2024,0.06760337692913147,0.001162772256778745 | |
added
results/tables/t6_double_sort_post.csv
+3 −0
@@ -0,0 +1,3 @@ | ||
| 1 | +sz,Lo,Mid,Hi | |
| 2 | +Small,19.46,19.25,34.55 | |
| 3 | +Large,15.75,18.34,22.87 | |
added
results/tables/t6_double_sort_pre.csv
+3 −0
@@ -0,0 +1,3 @@ | ||
| 1 | +sz,Lo,Mid,Hi | |
| 2 | +Small,19.68,21.92,23.59 | |
| 3 | +Large,13.78,14.32,13.63 | |
added
results/tables/t6_fm_byyear.csv
+16 −0
@@ -0,0 +1,16 @@ | ||
| 1 | +year,coef,se,t | |
| 2 | +2010,-0.018654282938673935,0.009695472645955532,-1.924019964767326 | |
| 3 | +2011,0.001435148364027878,0.01438043334007432,0.09979868687465165 | |
| 4 | +2012,0.035395857398994084,0.013905930789781204,2.5453785103694595 | |
| 5 | +2013,-0.03282015610944249,0.010621142759634808,-3.090077673578974 | |
| 6 | +2014,0.010841711196201715,0.0118676603547193,0.9135508492952779 | |
| 7 | +2015,0.006479326366460463,0.013412889918344228,0.4830671395877908 | |
| 8 | +2016,0.027079840054787516,0.012550003254423658,2.1577556201224364 | |
| 9 | +2017,0.0034972629856182694,0.011850963686757185,0.29510367916545666 | |
| 10 | +2018,0.020546311066695522,0.015297392093211267,1.343125085733642 | |
| 11 | +2019,0.0037012299178389874,0.0165908689232616,0.22308837077542062 | |
| 12 | +2020,-0.009948325957169284,0.01076988640073044,-0.9237168886474573 | |
| 13 | +2021,0.031487333586654294,0.030271538243484206,1.0401629852236458 | |
| 14 | +2022,0.02932795595191836,0.01845057569643446,1.5895415099478947 | |
| 15 | +2023,-0.011106516046450734,0.022395723028705683,-0.4959212985539683 | |
| 16 | +2024,0.1433682452091106,0.05192664084428197,2.7609766947768577 | |
added
results/tables/t6_sector_aieffect_post.csv
+12 −0
@@ -0,0 +1,12 @@ | ||
| 1 | +sector,hi_minus_lo,n | |
| 2 | +Communication Services,-8.60947302938111,47 | |
| 3 | +Consumer Discretionary,-17.886184447154747,144 | |
| 4 | +Consumer Staples,12.031664574617004,106 | |
| 5 | +Energy,1.0290573232628804,63 | |
| 6 | +Financials,-0.6097091944392952,226 | |
| 7 | +Health Care,-4.104118311728325,175 | |
| 8 | +Industrials,6.5747542515010915,234 | |
| 9 | +Information Technology,21.65182888956012,213 | |
| 10 | +Materials,-2.927118293840128,74 | |
| 11 | +Real Estate,7.551372323534042,93 | |
| 12 | +Utilities,-4.630430242472372,93 | |
added
scripts/01_download_prices.py
+85 −0
@@ -0,0 +1,85 @@ | ||
| 1 | +""" | |
| 2 | +01_download_prices.py | |
| 3 | +Download monthly + daily adjusted prices from Yahoo Finance for all S&P 500 | |
| 4 | +tickers present in the semantic panel, plus the SPY market benchmark and the | |
| 5 | +risk-free proxy (^IRX, 13-week T-bill). Produces: | |
| 6 | + data/processed/prices_monthly.parquet (long: ticker, date, adj_close) | |
| 7 | + data/processed/marketcap.parquet (ticker, sharesOutstanding, marketCap snapshot) | |
| 8 | + data/processed/spy_monthly.parquet | |
| 9 | +""" | |
| 10 | +import time, json, warnings | |
| 11 | +import pandas as pd | |
| 12 | +import numpy as np | |
| 13 | +import yfinance as yf | |
| 14 | + | |
| 15 | +warnings.filterwarnings("ignore") | |
| 16 | +PANEL = "data/parquet/annual_final/annual_final.parquet" | |
| 17 | +OUT = "data/processed" | |
| 18 | + | |
| 19 | +panel = pd.read_parquet(PANEL) | |
| 20 | +tickers = sorted(panel.ticker.dropna().unique().tolist()) | |
| 21 | +print(f"{len(tickers)} tickers to download") | |
| 22 | + | |
| 23 | +START, END = "2009-06-01", "2026-06-17" | |
| 24 | + | |
| 25 | +def dl_batch(tks, **kw): | |
| 26 | + for attempt in range(3): | |
| 27 | + try: | |
| 28 | + df = yf.download(tks, start=START, end=END, auto_adjust=True, | |
| 29 | + progress=False, group_by="ticker", threads=True, **kw) | |
| 30 | + return df | |
| 31 | + except Exception as e: | |
| 32 | + print(" retry", attempt, e); time.sleep(3) | |
| 33 | + return None | |
| 34 | + | |
| 35 | +# --- monthly prices, batched --- | |
| 36 | +all_monthly = [] | |
| 37 | +BATCH = 50 | |
| 38 | +for i in range(0, len(tickers), BATCH): | |
| 39 | + batch = tickers[i:i+BATCH] | |
| 40 | + print(f"batch {i//BATCH+1}: {batch[0]}..{batch[-1]}") | |
| 41 | + df = dl_batch(batch, interval="1mo") | |
| 42 | + if df is None: | |
| 43 | + continue | |
| 44 | + for t in batch: | |
| 45 | + try: | |
| 46 | + sub = df[t] if isinstance(df.columns, pd.MultiIndex) else df | |
| 47 | + s = sub["Close"].dropna() | |
| 48 | + if len(s) == 0: | |
| 49 | + continue | |
| 50 | + tmp = s.reset_index() | |
| 51 | + tmp.columns = ["date", "adj_close"] | |
| 52 | + tmp["ticker"] = t | |
| 53 | + all_monthly.append(tmp) | |
| 54 | + except Exception: | |
| 55 | + pass | |
| 56 | + time.sleep(1) | |
| 57 | + | |
| 58 | +monthly = pd.concat(all_monthly, ignore_index=True) | |
| 59 | +monthly["date"] = pd.to_datetime(monthly["date"]) | |
| 60 | +monthly = monthly.sort_values(["ticker", "date"]) | |
| 61 | +monthly.to_parquet(f"{OUT}/prices_monthly.parquet", index=False) | |
| 62 | +got = monthly.ticker.nunique() | |
| 63 | +print(f"monthly: {len(monthly)} rows, {got}/{len(tickers)} tickers") | |
| 64 | + | |
| 65 | +# --- benchmark + risk free --- | |
| 66 | +spy = dl_batch(["SPY"], interval="1mo") | |
| 67 | +spy_close = (spy["SPY"]["Close"] if isinstance(spy.columns, pd.MultiIndex) else spy["Close"]).dropna() | |
| 68 | +spy_df = spy_close.reset_index(); spy_df.columns = ["date", "spy_adj_close"] | |
| 69 | +spy_df.to_parquet(f"{OUT}/spy_monthly.parquet", index=False) | |
| 70 | +print("spy rows:", len(spy_df)) | |
| 71 | + | |
| 72 | +# --- market cap snapshot (best effort) --- | |
| 73 | +rows = [] | |
| 74 | +for i, t in enumerate(tickers): | |
| 75 | + try: | |
| 76 | + fi = yf.Ticker(t).fast_info | |
| 77 | + rows.append({"ticker": t, | |
| 78 | + "market_cap": getattr(fi, "market_cap", None), | |
| 79 | + "shares": getattr(fi, "shares", None)}) | |
| 80 | + except Exception: | |
| 81 | + rows.append({"ticker": t, "market_cap": None, "shares": None}) | |
| 82 | + if i % 50 == 0: | |
| 83 | + print(" mktcap", i) | |
| 84 | +pd.DataFrame(rows).to_parquet(f"{OUT}/marketcap.parquet", index=False) | |
| 85 | +print("done") | |
added
scripts/02_build_panel.py
+88 −0
@@ -0,0 +1,88 @@ | ||
| 1 | +""" | |
| 2 | +02_build_panel.py | |
| 3 | +Merge the semantic factor panel (annual_final) with realized stock performance. | |
| 4 | + | |
| 5 | +Timing convention (avoids look-ahead bias): | |
| 6 | + A 10-K for fiscal year Y is public by ~Feb-Mar of Y+1. We therefore form | |
| 7 | + signals at the END OF JUNE of year Y+1 and measure the FORWARD 12-month | |
| 8 | + return over July(Y+1) -> June(Y+2). This is the Fama-French portfolio | |
| 9 | + convention: the signal is strictly known before the holding period starts. | |
| 10 | + | |
| 11 | +Outputs: | |
| 12 | + data/processed/monthly_returns.parquet ticker, date, ret, mktcap_proxy | |
| 13 | + data/processed/merged_panel.parquet firm-year panel: AI scores (FY=Y) + fwd returns + controls | |
| 14 | +""" | |
| 15 | +import numpy as np | |
| 16 | +import pandas as pd | |
| 17 | + | |
| 18 | +D = "data/processed" | |
| 19 | +px = pd.read_parquet(f"{D}/prices_monthly.parquet") | |
| 20 | +spy = pd.read_parquet(f"{D}/spy_monthly.parquet") | |
| 21 | +mc = pd.read_parquet(f"{D}/marketcap.parquet") | |
| 22 | +panel = pd.read_parquet("data/parquet/annual_final/annual_final.parquet") | |
| 23 | + | |
| 24 | +# ---- monthly simple returns ---- | |
| 25 | +px = px.sort_values(["ticker", "date"]).copy() | |
| 26 | +px["date"] = pd.to_datetime(px["date"]).dt.to_period("M").dt.to_timestamp("M") # month-end stamp | |
| 27 | +px["ret"] = px.groupby("ticker")["adj_close"].pct_change() | |
| 28 | + | |
| 29 | +spy["date"] = pd.to_datetime(spy["date"]).dt.to_period("M").dt.to_timestamp("M") | |
| 30 | +spy = spy.sort_values("date") | |
| 31 | +spy["spy_ret"] = spy["spy_adj_close"].pct_change() | |
| 32 | + | |
| 33 | +# market-cap proxy = current shares * historical price (shares held constant approximation) | |
| 34 | +mc_map = mc.set_index("ticker")["shares"].to_dict() | |
| 35 | +px["shares"] = px["ticker"].map(mc_map) | |
| 36 | +px["mktcap_proxy"] = px["shares"] * px["adj_close"] | |
| 37 | +px.to_parquet(f"{D}/monthly_returns.parquet", index=False) | |
| 38 | + | |
| 39 | +# ---- helper: cumulative return over [start, end] inclusive month-ends ---- | |
| 40 | +def cum_ret(df_t, start, end): | |
| 41 | + m = df_t[(df_t.date > start) & (df_t.date <= end)] | |
| 42 | + if m.empty or m["ret"].isna().all(): | |
| 43 | + return np.nan | |
| 44 | + r = (1 + m["ret"].fillna(0)).prod() - 1 | |
| 45 | + # require reasonable coverage | |
| 46 | + return r if m["ret"].notna().sum() >= 6 else np.nan | |
| 47 | + | |
| 48 | +spy_ix = spy.set_index("date")["spy_ret"] | |
| 49 | +def cum_spy(start, end): | |
| 50 | + m = spy_ix[(spy_ix.index > start) & (spy_ix.index <= end)] | |
| 51 | + return (1 + m.fillna(0)).prod() - 1 if len(m) else np.nan | |
| 52 | + | |
| 53 | +rows = [] | |
| 54 | +px_by = {t: d.sort_values("date") for t, d in px.groupby("ticker")} | |
| 55 | +for _, r in panel.iterrows(): | |
| 56 | + t = r["ticker"]; Y = int(r["fiscal_year"]) | |
| 57 | + d = px_by.get(t) | |
| 58 | + if d is None: | |
| 59 | + continue | |
| 60 | + form = pd.Timestamp(year=Y+1, month=6, day=30) + pd.offsets.MonthEnd(0) | |
| 61 | + end1 = pd.Timestamp(year=Y+2, month=6, day=30) + pd.offsets.MonthEnd(0) | |
| 62 | + # controls measured AT formation (strictly known): | |
| 63 | + mom_start = pd.Timestamp(year=Y, month=6, day=30) + pd.offsets.MonthEnd(0) # 12m momentum to formation | |
| 64 | + # forward 12m return | |
| 65 | + fwd = cum_ret(d, form, end1) | |
| 66 | + spy_fwd = cum_spy(form, end1) | |
| 67 | + # momentum (past 12m, formation-12 .. formation, skip last month) | |
| 68 | + mom = cum_ret(d, mom_start, form - pd.offsets.MonthEnd(1)) | |
| 69 | + # trailing vol & size at formation | |
| 70 | + win = d[(d.date > mom_start) & (d.date <= form)] | |
| 71 | + vol = win["ret"].std() * np.sqrt(12) if win["ret"].notna().sum() >= 6 else np.nan | |
| 72 | + cap = d.loc[d.date <= form, "mktcap_proxy"].dropna() | |
| 73 | + cap = cap.iloc[-1] if len(cap) else np.nan | |
| 74 | + rows.append({"ticker": t, "fiscal_year": Y, | |
| 75 | + "fwd_ret": fwd, "spy_fwd": spy_fwd, | |
| 76 | + "fwd_ret_mktadj": fwd - spy_fwd if pd.notna(fwd) and pd.notna(spy_fwd) else np.nan, | |
| 77 | + "mom_12m": mom, "vol_12m": vol, "mktcap": cap, | |
| 78 | + "log_mktcap": np.log(cap) if pd.notna(cap) and cap > 0 else np.nan}) | |
| 79 | + | |
| 80 | +ret_panel = pd.DataFrame(rows) | |
| 81 | +merged = panel.merge(ret_panel, on=["ticker", "fiscal_year"], how="left") | |
| 82 | +merged.to_parquet(f"{D}/merged_panel.parquet", index=False) | |
| 83 | + | |
| 84 | +n_ret = merged["fwd_ret"].notna().sum() | |
| 85 | +print(f"merged: {merged.shape}, firm-years with fwd return: {n_ret}") | |
| 86 | +print("fwd_ret by year (count):") | |
| 87 | +print(merged[merged.fwd_ret.notna()].groupby("fiscal_year").size().to_string()) | |
| 88 | +print("\nfwd_ret describe:\n", merged["fwd_ret"].describe()) | |
added
scripts/03_analysis.py
+277 −0
@@ -0,0 +1,277 @@ | ||
| 1 | +""" | |
| 2 | +03_analysis.py -- Empirical asset-pricing analysis | |
| 3 | +Does the SEMANTIC INTENSITY of AI disclosure in 10-K filings explain the | |
| 4 | +cross-section of subsequent S&P 500 stock returns? | |
| 5 | + | |
| 6 | +Signals (from fiscal year Y, section-weighted cosine similarity to AI anchors): | |
| 7 | + AI_ADOPT = ai_adoption_wmean (internal AI use) | |
| 8 | + AI_INFRA = ai_infrastructure_wmean (AI compute / capex exposure) | |
| 9 | + AI_RISK = ai_disruption_risk_wmean(AI product-disruption risk) | |
| 10 | + AI_COMPOS = z(AI_ADOPT)+z(AI_INFRA) (standardized opportunity composite) | |
| 11 | + | |
| 12 | +Outcome: forward 12-month return, July(Y+1)->June(Y+2) [strictly tradeable]. | |
| 13 | + | |
| 14 | +Methods: (1) cross-sectional z-scoring within year; (2) quintile portfolio | |
| 15 | +sorts (EW & VW, raw & market-adjusted) with Newey-West t-stats; (3) long-short | |
| 16 | +spread regressed on FF5+Momentum to test for alpha; (4) two-way fixed-effects | |
| 17 | +panel regressions with double-clustered SE; (5) Fama-MacBeth; (6) a | |
| 18 | +post-ChatGPT (Nov-2022) structural-break interaction. | |
| 19 | +""" | |
| 20 | +import json, warnings | |
| 21 | +import numpy as np | |
| 22 | +import pandas as pd | |
| 23 | +import statsmodels.api as sm | |
| 24 | +import statsmodels.formula.api as smf | |
| 25 | +from statsmodels.stats.sandwich_covariance import cov_hac | |
| 26 | + | |
| 27 | +warnings.filterwarnings("ignore") | |
| 28 | +D = "data/processed"; T = "results/tables" | |
| 29 | +m = pd.read_parquet(f"{D}/merged_panel.parquet") | |
| 30 | +ret = pd.read_parquet(f"{D}/monthly_returns.parquet") | |
| 31 | +ff = pd.read_parquet(f"{D}/ff5_monthly.parquet") | |
| 32 | +mom = pd.read_parquet(f"{D}/mom_monthly.parquet") | |
| 33 | +RES = {} | |
| 34 | + | |
| 35 | +SIGNALS = {"AI_ADOPT": "ai_adoption_wmean", | |
| 36 | + "AI_INFRA": "ai_infrastructure_wmean", | |
| 37 | + "AI_RISK": "ai_disruption_risk_wmean"} | |
| 38 | + | |
| 39 | +df = m[m.fwd_ret.notna()].copy() | |
| 40 | + | |
| 41 | +# winsorize returns & controls at 1/99 within sample for regressions | |
| 42 | +def wins(s, lo=.01, hi=.99): | |
| 43 | + ql, qh = s.quantile(lo), s.quantile(hi) | |
| 44 | + return s.clip(ql, qh) | |
| 45 | +df["fwd_w"] = wins(df["fwd_ret"]) | |
| 46 | +df["fwd_madj_w"] = wins(df["fwd_ret_mktadj"]) | |
| 47 | +df["mom_w"] = wins(df["mom_12m"]) | |
| 48 | +df["vol_w"] = wins(df["vol_12m"]) | |
| 49 | + | |
| 50 | +# cross-sectional z-scores within formation year | |
| 51 | +def zscore(g): | |
| 52 | + return (g - g.mean()) / g.std(ddof=0) | |
| 53 | +for k, col in SIGNALS.items(): | |
| 54 | + df[f"z_{k}"] = df.groupby("fiscal_year")[col].transform(zscore) | |
| 55 | +df["z_size"] = df.groupby("fiscal_year")["log_mktcap"].transform(zscore) | |
| 56 | +df["z_mom"] = df.groupby("fiscal_year")["mom_w"].transform(zscore) | |
| 57 | +df["z_vol"] = df.groupby("fiscal_year")["vol_w"].transform(zscore) | |
| 58 | +df["z_AI_COMPOS"] = df[["z_AI_ADOPT", "z_AI_INFRA"]].mean(axis=1) | |
| 59 | + | |
| 60 | +# ============================================================ | |
| 61 | +# 1. SUMMARY STATISTICS | |
| 62 | +# ============================================================ | |
| 63 | +summ_cols = list(SIGNALS.values()) + ["fwd_ret", "fwd_ret_mktadj", "mom_12m", "vol_12m", "log_mktcap"] | |
| 64 | +summary = df[summ_cols].describe(percentiles=[.05,.25,.5,.75,.95]).T | |
| 65 | +summary.to_csv(f"{T}/t1_summary_stats.csv") | |
| 66 | +RES["n_obs"] = int(len(df)) | |
| 67 | +RES["n_firms"] = int(df.ticker.nunique()) | |
| 68 | +RES["yrs"] = f"{int(df.fiscal_year.min())}-{int(df.fiscal_year.max())}" | |
| 69 | +print("N obs", len(df), "| firms", df.ticker.nunique(), "| formation yrs", RES["yrs"]) | |
| 70 | + | |
| 71 | +# correlation among signals & with outcome | |
| 72 | +corr = df[["z_AI_ADOPT","z_AI_INFRA","z_AI_RISK","z_size","z_mom","fwd_ret"]].corr() | |
| 73 | +corr.to_csv(f"{T}/t1b_correlations.csv") | |
| 74 | + | |
| 75 | +# ============================================================ | |
| 76 | +# 2. QUINTILE PORTFOLIO SORTS | |
| 77 | +# ============================================================ | |
| 78 | +def newey_mean_t(x, lags=3): | |
| 79 | + x = x.dropna().values | |
| 80 | + if len(x) < 3: return np.nan, np.nan | |
| 81 | + X = np.ones((len(x),1)) | |
| 82 | + res = sm.OLS(x, X).fit() | |
| 83 | + se = np.sqrt(cov_hac(res, nlags=lags)[0,0]) | |
| 84 | + return x.mean(), x.mean()/se | |
| 85 | + | |
| 86 | +def sort_table(signal_z, weight=None, outcome="fwd_ret"): | |
| 87 | + rows = [] | |
| 88 | + ann_means = {q: [] for q in range(1,6)} | |
| 89 | + ann_ls = [] | |
| 90 | + for yr, g in df.groupby("fiscal_year"): | |
| 91 | + g = g.dropna(subset=[signal_z, outcome]) | |
| 92 | + if len(g) < 25: continue | |
| 93 | + g = g.copy() | |
| 94 | + g["q"] = pd.qcut(g[signal_z], 5, labels=False, duplicates="drop") + 1 | |
| 95 | + for q in range(1,6): | |
| 96 | + sub = g[g.q==q] | |
| 97 | + if sub.empty: continue | |
| 98 | + if weight is None: | |
| 99 | + ann_means[q].append(sub[outcome].mean()) | |
| 100 | + else: | |
| 101 | + w = sub[weight].clip(lower=0).fillna(0) | |
| 102 | + ann_means[q].append(np.average(sub[outcome], weights=w) if w.sum()>0 else sub[outcome].mean()) | |
| 103 | + if ann_means[5] and ann_means[1]: | |
| 104 | + ann_ls.append(ann_means[5][-1] - ann_means[1][-1]) | |
| 105 | + out = {} | |
| 106 | + for q in range(1,6): | |
| 107 | + mu, t = newey_mean_t(pd.Series(ann_means[q])) | |
| 108 | + out[f"Q{q}"] = mu | |
| 109 | + mu_ls, t_ls = newey_mean_t(pd.Series(ann_ls)) | |
| 110 | + out["Q5_minus_Q1"] = mu_ls | |
| 111 | + out["t_stat"] = t_ls | |
| 112 | + out["n_years"] = len(ann_ls) | |
| 113 | + return out | |
| 114 | + | |
| 115 | +sorts = {} | |
| 116 | +for k in ["AI_ADOPT","AI_INFRA","AI_RISK","AI_COMPOS"]: | |
| 117 | + sorts[f"{k}_EW"] = sort_table(f"z_{k}", None, "fwd_ret") | |
| 118 | + sorts[f"{k}_VW"] = sort_table(f"z_{k}", "mktcap", "fwd_ret") | |
| 119 | + sorts[f"{k}_EW_madj"] = sort_table(f"z_{k}", None, "fwd_ret_mktadj") | |
| 120 | +sort_df = pd.DataFrame(sorts).T | |
| 121 | +sort_df.to_csv(f"{T}/t2_portfolio_sorts.csv") | |
| 122 | +RES["sorts"] = sort_df.round(4).to_dict("index") | |
| 123 | +print("\n=== Quintile sorts (forward 12m return) ===") | |
| 124 | +print(sort_df.round(4).to_string()) | |
| 125 | + | |
| 126 | +# ============================================================ | |
| 127 | +# 3. LONG-SHORT MONTHLY TIME SERIES + FACTOR ALPHA | |
| 128 | +# ============================================================ | |
| 129 | +ff = ff.merge(mom[["date","MOM"]], on="date", how="left") | |
| 130 | +ff["date"] = pd.to_datetime(ff["date"]).dt.to_period("M").dt.to_timestamp("M") | |
| 131 | +ff_ix = ff.set_index("date") | |
| 132 | +ret = ret.copy(); ret["date"] = pd.to_datetime(ret["date"]).dt.to_period("M").dt.to_timestamp("M") | |
| 133 | +ret_by = {t: d.set_index("date")["ret"] for t, d in ret.groupby("ticker")} | |
| 134 | + | |
| 135 | +def ls_monthly(signal_z, n_groups=5): | |
| 136 | + """Annually-rebalanced EW quintile portfolios, monthly returns.""" | |
| 137 | + monthly = {} # date -> dict(q->list of rets) | |
| 138 | + for yr, g in df.groupby("fiscal_year"): | |
| 139 | + g = g.dropna(subset=[signal_z]) | |
| 140 | + if len(g) < 25: continue | |
| 141 | + g = g.copy(); g["q"] = pd.qcut(g[signal_z], n_groups, labels=False, duplicates="drop")+1 | |
| 142 | + hold = pd.date_range(pd.Timestamp(yr+1,7,31), pd.Timestamp(yr+2,6,30), freq="ME") | |
| 143 | + for q in [1, n_groups]: | |
| 144 | + tks = g[g.q==q].ticker.tolist() | |
| 145 | + for dt in hold: | |
| 146 | + r = [ret_by[t].get(dt, np.nan) for t in tks if t in ret_by] | |
| 147 | + r = [x for x in r if pd.notna(x)] | |
| 148 | + if r: | |
| 149 | + monthly.setdefault(dt, {}).setdefault(q, []).append(np.mean(r)) | |
| 150 | + recs = [] | |
| 151 | + for dt, qd in sorted(monthly.items()): | |
| 152 | + if 1 in qd and n_groups in qd: | |
| 153 | + recs.append({"date": dt, "lo": np.mean(qd[1]), "hi": np.mean(qd[n_groups])}) | |
| 154 | + ts = pd.DataFrame(recs) | |
| 155 | + ts["ls"] = ts["hi"] - ts["lo"] | |
| 156 | + return ts | |
| 157 | + | |
| 158 | +def factor_alpha(ts, label): | |
| 159 | + s = ts.merge(ff_ix.reset_index(), on="date", how="inner").dropna(subset=["ls","MktRF","SMB","HML","RMW","CMA","MOM"]) | |
| 160 | + y = s["ls"] - 0 # long-short is already self-financing (RF nets out) | |
| 161 | + out = {} | |
| 162 | + # CAPM | |
| 163 | + X1 = sm.add_constant(s[["MktRF"]]); r1 = sm.OLS(y, X1).fit(cov_type="HAC", cov_kwds={"maxlags":3}) | |
| 164 | + out["capm_alpha_m"] = r1.params["const"]; out["capm_alpha_t"] = r1.tvalues["const"] | |
| 165 | + # FF5+MOM | |
| 166 | + X2 = sm.add_constant(s[["MktRF","SMB","HML","RMW","CMA","MOM"]]); r2 = sm.OLS(y, X2).fit(cov_type="HAC", cov_kwds={"maxlags":3}) | |
| 167 | + out["ff6_alpha_m"] = r2.params["const"]; out["ff6_alpha_t"] = r2.tvalues["const"] | |
| 168 | + out["ff6_alpha_ann"] = (1+r2.params["const"])**12 - 1 | |
| 169 | + out["mean_ls_m"] = y.mean(); out["mean_ls_ann"] = (1+y.mean())**12-1 | |
| 170 | + out["n_months"] = len(s) | |
| 171 | + out["betas"] = {k: round(r2.params[k],3) for k in ["MktRF","SMB","HML","RMW","CMA","MOM"]} | |
| 172 | + RES.setdefault("ls_alpha", {})[label] = {k:(round(v,5) if isinstance(v,float) else v) for k,v in out.items()} | |
| 173 | + print(f"\n[{label}] mean LS {out['mean_ls_ann']*100:.2f}%/yr | CAPM a={out['capm_alpha_m']*1200:.2f}%/yr (t={out['capm_alpha_t']:.2f}) " | |
| 174 | + f"| FF6 a={out['ff6_alpha_ann']*100:.2f}%/yr (t={out['ff6_alpha_t']:.2f}) | n={out['n_months']}m") | |
| 175 | + return ts, out | |
| 176 | + | |
| 177 | +ls_results = {} | |
| 178 | +for k in ["AI_ADOPT","AI_INFRA","AI_COMPOS","AI_RISK"]: | |
| 179 | + ts = ls_monthly(f"z_{k}") | |
| 180 | + ts.to_parquet(f"{D}/ls_ts_{k}.parquet", index=False) | |
| 181 | + factor_alpha(ts, k) | |
| 182 | + | |
| 183 | +# ============================================================ | |
| 184 | +# 4. TWO-WAY FIXED-EFFECTS PANEL REGRESSIONS (double-clustered SE) | |
| 185 | +# ============================================================ | |
| 186 | +from linearmodels.panel import PanelOLS | |
| 187 | +pdf = df.dropna(subset=["fwd_w","z_AI_ADOPT","z_AI_INFRA","z_AI_RISK","z_size","z_mom","z_vol"]).copy() | |
| 188 | +pdf = pdf.set_index(["ticker","fiscal_year"]) | |
| 189 | + | |
| 190 | +def fe_reg(formula, label): | |
| 191 | + res = PanelOLS.from_formula(formula + " + EntityEffects + TimeEffects", data=pdf, | |
| 192 | + drop_absorbed=True).fit(cov_type="clustered", cluster_entity=True, cluster_time=True) | |
| 193 | + return res | |
| 194 | + | |
| 195 | +panel_specs = { | |
| 196 | + "M1_adopt": "fwd_w ~ z_AI_ADOPT", | |
| 197 | + "M2_adopt_ctrl": "fwd_w ~ z_AI_ADOPT + z_size + z_mom + z_vol", | |
| 198 | + "M3_infra_ctrl": "fwd_w ~ z_AI_INFRA + z_size + z_mom + z_vol", | |
| 199 | + "M4_risk_ctrl": "fwd_w ~ z_AI_RISK + z_size + z_mom + z_vol", | |
| 200 | + "M5_all": "fwd_w ~ z_AI_ADOPT + z_AI_INFRA + z_AI_RISK + z_size + z_mom + z_vol", | |
| 201 | +} | |
| 202 | +print("\n=== Two-way FE panel (DV=forward 12m return, winsorized) ===") | |
| 203 | +panel_out = {} | |
| 204 | +for lab, f in panel_specs.items(): | |
| 205 | + r = fe_reg(f, lab) | |
| 206 | + coefs = {} | |
| 207 | + for v in r.params.index: | |
| 208 | + coefs[v] = {"coef": round(r.params[v],4), "t": round(r.tstats[v],2), "p": round(r.pvalues[v],4)} | |
| 209 | + panel_out[lab] = {"coefs": coefs, "n": int(r.nobs), "r2_within": round(r.rsquared_within,4)} | |
| 210 | + key = [v for v in r.params.index if v.startswith("z_AI")] | |
| 211 | + print(f"{lab}: " + ", ".join(f"{v}={r.params[v]:+.4f}(t={r.tstats[v]:.2f})" for v in key) + f" [n={int(r.nobs)}]") | |
| 212 | +RES["panel_fe"] = panel_out | |
| 213 | + | |
| 214 | +# ============================================================ | |
| 215 | +# 5. FAMA-MACBETH | |
| 216 | +# ============================================================ | |
| 217 | +def fama_macbeth(xvars, label): | |
| 218 | + coefs = {v: [] for v in ["const"]+xvars} | |
| 219 | + for yr, g in df.groupby("fiscal_year"): | |
| 220 | + g = g.dropna(subset=["fwd_ret"]+xvars) | |
| 221 | + if len(g) < 30: continue | |
| 222 | + X = sm.add_constant(g[xvars]); y = g["fwd_ret"] | |
| 223 | + r = sm.OLS(y, X).fit() | |
| 224 | + for v in ["const"]+xvars: | |
| 225 | + coefs[v].append(r.params.get(v, np.nan)) | |
| 226 | + out = {} | |
| 227 | + for v in ["const"]+xvars: | |
| 228 | + mu, t = newey_mean_t(pd.Series(coefs[v])) | |
| 229 | + out[v] = {"mean_coef": round(mu,4), "t": round(t,2)} | |
| 230 | + out["n_years"] = len(coefs["const"]) | |
| 231 | + RES.setdefault("fama_macbeth", {})[label] = out | |
| 232 | + print(f"\n[FM {label}] " + ", ".join(f"{v}={out[v]['mean_coef']:+.4f}(t={out[v]['t']:.2f})" for v in xvars)) | |
| 233 | + return out | |
| 234 | + | |
| 235 | +print("\n=== Fama-MacBeth (DV=forward 12m return) ===") | |
| 236 | +fama_macbeth(["z_AI_ADOPT","z_size","z_mom","z_vol"], "adopt") | |
| 237 | +fama_macbeth(["z_AI_INFRA","z_size","z_mom","z_vol"], "infra") | |
| 238 | +fama_macbeth(["z_AI_ADOPT","z_AI_INFRA","z_AI_RISK","z_size","z_mom","z_vol"], "all") | |
| 239 | + | |
| 240 | +# ============================================================ | |
| 241 | +# 6. POST-CHATGPT STRUCTURAL BREAK (formation years >= 2022) | |
| 242 | +# ============================================================ | |
| 243 | +df["post"] = (df.fiscal_year >= 2022).astype(int) | |
| 244 | +print("\n=== Post-ChatGPT interaction (pooled OLS, year-clustered) ===") | |
| 245 | +brk = {} | |
| 246 | +for k in ["AI_ADOPT","AI_INFRA","AI_COMPOS"]: | |
| 247 | + d2 = df.dropna(subset=["fwd_w",f"z_{k}","z_size","z_mom"]).copy() | |
| 248 | + r = smf.ols(f"fwd_w ~ z_{k} * post + z_size + z_mom", data=d2).fit( | |
| 249 | + cov_type="cluster", cov_kwds={"groups": d2["fiscal_year"]}) | |
| 250 | + iv = f"z_{k}:post" | |
| 251 | + brk[k] = {"pre_slope": round(r.params[f"z_{k}"],4), | |
| 252 | + "interaction": round(r.params[iv],4), | |
| 253 | + "interaction_t": round(r.tvalues[iv],2), | |
| 254 | + "post_slope": round(r.params[f"z_{k}"]+r.params[iv],4)} | |
| 255 | + print(f"{k}: pre={brk[k]['pre_slope']:+.4f} | post-2022 extra={brk[k]['interaction']:+.4f} (t={brk[k]['interaction_t']:.2f}) | post total={brk[k]['post_slope']:+.4f}") | |
| 256 | +RES["structural_break"] = brk | |
| 257 | + | |
| 258 | +# pre/post quintile spread comparison for headline | |
| 259 | +def spread_subperiod(signal_z, yrs): | |
| 260 | + sp=[] | |
| 261 | + for yr,g in df[df.fiscal_year.isin(yrs)].groupby("fiscal_year"): | |
| 262 | + g=g.dropna(subset=[signal_z,"fwd_ret"]) | |
| 263 | + if len(g)<25: continue | |
| 264 | + g=g.copy(); g["q"]=pd.qcut(g[signal_z],5,labels=False,duplicates="drop")+1 | |
| 265 | + sp.append(g[g.q==5].fwd_ret.mean()-g[g.q==1].fwd_ret.mean()) | |
| 266 | + mu,t=newey_mean_t(pd.Series(sp)); return round(mu,4),round(t,2),len(sp) | |
| 267 | +RES["subperiod_spread"]={} | |
| 268 | +for k in ["AI_ADOPT","AI_INFRA","AI_COMPOS"]: | |
| 269 | + pre=spread_subperiod(f"z_{k}", range(2010,2022)) | |
| 270 | + post=spread_subperiod(f"z_{k}", range(2022,2025)) | |
| 271 | + RES["subperiod_spread"][k]={"pre_2010_2021":pre,"post_2022_2024":post} | |
| 272 | + print(f"{k} Q5-Q1: pre(10-21)={pre[0]:+.4f}(t={pre[1]}) | post(22-24)={post[0]:+.4f}(t={post[1]})") | |
| 273 | + | |
| 274 | +with open(f"{T}/results.json","w") as fh: | |
| 275 | + json.dump(RES, fh, indent=2, default=str) | |
| 276 | +df.to_parquet(f"{D}/analysis_panel.parquet") | |
| 277 | +print("\nSaved results.json and analysis_panel.parquet") | |
added
scripts/04_figures.py
+106 −0
@@ -0,0 +1,106 @@ | ||
| 1 | +"""04_figures.py -- publication figures for the AI-disclosure / returns study.""" | |
| 2 | +import json | |
| 3 | +import numpy as np | |
| 4 | +import pandas as pd | |
| 5 | +import matplotlib.pyplot as plt | |
| 6 | +import matplotlib as mpl | |
| 7 | + | |
| 8 | +mpl.rcParams.update({"font.size":11,"axes.spines.top":False,"axes.spines.right":False, | |
| 9 | + "figure.dpi":140,"savefig.dpi":200,"axes.grid":True,"grid.alpha":.25, | |
| 10 | + "font.family":"DejaVu Sans"}) | |
| 11 | +D="data/processed"; F="figures" | |
| 12 | +df=pd.read_parquet(f"{D}/analysis_panel.parquet") | |
| 13 | +RES=json.load(open("results/tables/results.json")) | |
| 14 | +NAVY="#1b3a6b"; RED="#b22222"; GREY="#8a8a8a"; GREEN="#2e7d32" | |
| 15 | + | |
| 16 | +# ---- Fig 1: forward return by AI quintile, full / pre / post ---- | |
| 17 | +def qmeans(d, sig): | |
| 18 | + out={} | |
| 19 | + for q in range(1,6): | |
| 20 | + out[q]=[] | |
| 21 | + for yr,g in d.groupby("fiscal_year"): | |
| 22 | + g=g.dropna(subset=[sig,"fwd_ret"]) | |
| 23 | + if len(g)<25: continue | |
| 24 | + g=g.copy(); g["q"]=pd.qcut(g[sig],5,labels=False,duplicates="drop")+1 | |
| 25 | + for q in range(1,6): out[q].append(g[g.q==q].fwd_ret.mean()) | |
| 26 | + return [np.mean(out[q]) for q in range(1,6)] | |
| 27 | + | |
| 28 | +fig,axes=plt.subplots(1,3,figsize=(13,4.2),sharey=True) | |
| 29 | +panels=[("Full sample (2010-2024)",df),("Pre-ChatGPT (2010-2021)",df[df.fiscal_year<2022]), | |
| 30 | + ("Post-ChatGPT (2022-2024)",df[df.fiscal_year>=2022])] | |
| 31 | +for ax,(title,d) in zip(axes,panels): | |
| 32 | + v=qmeans(d,"z_AI_COMPOS") | |
| 33 | + bars=ax.bar(range(1,6),[x*100 for x in v],color=[GREY,GREY,GREY,GREY,NAVY],edgecolor="k",lw=.5) | |
| 34 | + ax.set_title(title,fontsize=11); ax.set_xlabel("AI-disclosure quintile (1=low, 5=high)") | |
| 35 | + ax.set_xticks(range(1,6)) | |
| 36 | + sp=(v[4]-v[0])*100 | |
| 37 | + ax.annotate(f"Q5−Q1 = {sp:+.1f} pp",xy=(.5,.93),xycoords="axes fraction",ha="center", | |
| 38 | + fontsize=10,fontweight="bold",color=RED if sp>3 else "k") | |
| 39 | +axes[0].set_ylabel("Mean forward 12-month return (%)") | |
| 40 | +fig.suptitle("AI-Disclosure Intensity and Subsequent S&P 500 Returns",fontsize=13,fontweight="bold",y=1.02) | |
| 41 | +fig.tight_layout(); fig.savefig(f"{F}/fig1_quintile_returns.png",bbox_inches="tight"); plt.close() | |
| 42 | + | |
| 43 | +# ---- Fig 2: cumulative long-short (AI composite) ---- | |
| 44 | +fig,ax=plt.subplots(figsize=(11,5)) | |
| 45 | +for k,col,lab in [("AI_COMPOS",NAVY,"AI opportunity (adoption+infra)"),("AI_RISK",GREEN,"AI disruption-risk salience")]: | |
| 46 | + ts=pd.read_parquet(f"{D}/ls_ts_{k}.parquet").sort_values("date") | |
| 47 | + ts["cum"]=(1+ts["ls"]).cumprod() | |
| 48 | + ax.plot(ts["date"],ts["cum"],color=col,lw=1.8,label=lab) | |
| 49 | +ax.axhline(1,color="k",lw=.7) | |
| 50 | +ax.axvline(pd.Timestamp("2022-11-30"),color=RED,ls="--",lw=1.3) | |
| 51 | +ax.annotate("ChatGPT\n(Nov 2022)",xy=(pd.Timestamp("2022-11-30"),ax.get_ylim()[1]*.6), | |
| 52 | + color=RED,fontsize=9,ha="right") | |
| 53 | +ax.set_title("Cumulative Value of $1 in the High-minus-Low AI Disclosure Portfolio\n(equal-weight, annually rebalanced, self-financing)",fontweight="bold") | |
| 54 | +ax.set_ylabel("Growth of $1 (long-short)"); ax.legend(frameon=False,loc="upper left") | |
| 55 | +fig.tight_layout(); fig.savefig(f"{F}/fig2_cumulative_ls.png",bbox_inches="tight"); plt.close() | |
| 56 | + | |
| 57 | +# ---- Fig 3: annual Q5-Q1 spread bars ---- | |
| 58 | +def annual_spread(sig): | |
| 59 | + rec=[] | |
| 60 | + for yr,g in df.groupby("fiscal_year"): | |
| 61 | + g=g.dropna(subset=[sig,"fwd_ret"]) | |
| 62 | + if len(g)<25: continue | |
| 63 | + g=g.copy(); g["q"]=pd.qcut(g[sig],5,labels=False,duplicates="drop")+1 | |
| 64 | + rec.append((yr,(g[g.q==5].fwd_ret.mean()-g[g.q==1].fwd_ret.mean())*100)) | |
| 65 | + return pd.DataFrame(rec,columns=["year","sp"]) | |
| 66 | +sp=annual_spread("z_AI_COMPOS") | |
| 67 | +fig,ax=plt.subplots(figsize=(11,4.6)) | |
| 68 | +cols=[RED if y>=2022 else NAVY for y in sp.year] | |
| 69 | +ax.bar(sp.year,sp.sp,color=cols,edgecolor="k",lw=.5) | |
| 70 | +ax.axhline(0,color="k",lw=.8) | |
| 71 | +ax.set_title("Annual High-minus-Low AI-Disclosure Return Spread by Formation Year",fontweight="bold") | |
| 72 | +ax.set_ylabel("Q5 − Q1 forward 12m return (pp)"); ax.set_xlabel("Fiscal year of 10-K (signal)") | |
| 73 | +ax.set_xticks(sp.year); ax.tick_params(axis="x",rotation=45) | |
| 74 | +from matplotlib.patches import Patch | |
| 75 | +ax.legend(handles=[Patch(color=NAVY,label="Pre-ChatGPT (2010-2021)"),Patch(color=RED,label="Post-ChatGPT (2022-2024)")],frameon=False) | |
| 76 | +fig.tight_layout(); fig.savefig(f"{F}/fig3_annual_spread.png",bbox_inches="tight"); plt.close() | |
| 77 | + | |
| 78 | +# ---- Fig 4: secular rise of AI language (context) ---- | |
| 79 | +fig,ax=plt.subplots(figsize=(11,4.6)) | |
| 80 | +for col,c,lab in [("ai_adoption_wmean",NAVY,"AI adoption"),("ai_infrastructure_wmean",RED,"AI infrastructure"), | |
| 81 | + ("ai_disruption_risk_wmean",GREEN,"AI disruption risk")]: | |
| 82 | + g=df.groupby("fiscal_year")[col].mean() | |
| 83 | + ax.plot(g.index,g.values,marker="o",color=c,label=lab,lw=1.8) | |
| 84 | +ax.axvline(2022,color="grey",ls="--",lw=1) | |
| 85 | +ax.set_title("Rising AI Language Across S&P 500 10-K Filings (cross-sectional mean similarity)",fontweight="bold") | |
| 86 | +ax.set_ylabel("Section-weighted cosine similarity to AI anchor"); ax.set_xlabel("Fiscal year") | |
| 87 | +ax.legend(frameon=False) | |
| 88 | +fig.tight_layout(); fig.savefig(f"{F}/fig4_ai_language_trend.png",bbox_inches="tight"); plt.close() | |
| 89 | + | |
| 90 | +# ---- Fig 5: binscatter AI score vs forward return, pre vs post ---- | |
| 91 | +fig,axes=plt.subplots(1,2,figsize=(12,4.6),sharey=True) | |
| 92 | +for ax,(title,d) in zip(axes,[("Pre-ChatGPT (2010-2021)",df[df.fiscal_year<2022]), | |
| 93 | + ("Post-ChatGPT (2022-2024)",df[df.fiscal_year>=2022])]): | |
| 94 | + d=d.dropna(subset=["z_AI_COMPOS","fwd_ret"]) | |
| 95 | + d=d.copy(); d["bin"]=pd.qcut(d.z_AI_COMPOS,12,labels=False,duplicates="drop") | |
| 96 | + b=d.groupby("bin").agg(x=("z_AI_COMPOS","mean"),y=("fwd_ret","mean")) | |
| 97 | + ax.scatter(b.x,b.y*100,color=NAVY,s=45,zorder=3) | |
| 98 | + z=np.polyfit(b.x,b.y*100,1); xs=np.linspace(b.x.min(),b.x.max(),50) | |
| 99 | + ax.plot(xs,np.polyval(z,xs),color=RED,lw=2) | |
| 100 | + ax.set_title(f"{title}\nslope={z[0]:.2f} pp / SD",fontsize=10) | |
| 101 | + ax.set_xlabel("AI-disclosure composite (z-score)") | |
| 102 | +axes[0].set_ylabel("Mean forward 12m return (%)") | |
| 103 | +fig.suptitle("AI Disclosure vs. Subsequent Return: Binned Scatter",fontweight="bold",y=1.02) | |
| 104 | +fig.tight_layout(); fig.savefig(f"{F}/fig5_binscatter.png",bbox_inches="tight"); plt.close() | |
| 105 | + | |
| 106 | +print("figures written:", [f"fig{i}" for i in range(1,6)]) | |
added
scripts/05_make_tables.py
+102 −0
@@ -0,0 +1,102 @@ | ||
| 1 | +"""05_make_tables.py -- emit LaTeX table fragments for the report.""" | |
| 2 | +import json, pandas as pd, numpy as np | |
| 3 | +T="results/tables"; R="paper/tables" | |
| 4 | +RES=json.load(open(f"{T}/results.json")) | |
| 5 | + | |
| 6 | +def w(name, body): open(f"{R}/{name}.tex","w").write(body) | |
| 7 | + | |
| 8 | +# --- Table 1: summary stats --- | |
| 9 | +s=pd.read_csv(f"{T}/t1_summary_stats.csv",index_col=0) | |
| 10 | +nice={"ai_adoption_wmean":"AI adoption (wmean)","ai_infrastructure_wmean":"AI infrastructure (wmean)", | |
| 11 | + "ai_disruption_risk_wmean":"AI disruption risk (wmean)","fwd_ret":"Forward 12m return", | |
| 12 | + "fwd_ret_mktadj":"Forward return, mkt-adj.","mom_12m":"Momentum (12m)","vol_12m":"Volatility (ann.)", | |
| 13 | + "log_mktcap":"Log market cap"} | |
| 14 | +rows="".join(f"{nice.get(i,i)} & {s.loc[i,'mean']:.3f} & {s.loc[i,'std']:.3f} & {s.loc[i,'5%']:.3f} & {s.loc[i,'50%']:.3f} & {s.loc[i,'95%']:.3f} \\\\\n" for i in nice) | |
| 15 | +w("tab_summary", r"""\begin{table}[H]\centering\small | |
| 16 | +\caption{Summary statistics, firm-year panel with tradeable forward returns (N=%d firm-years, %d firms, formation years %s).}\label{tab:summ} | |
| 17 | +\begin{tabular}{lrrrrr}\toprule | |
| 18 | +Variable & Mean & SD & p5 & Median & p95 \\\midrule | |
| 19 | +%s\bottomrule | |
| 20 | +\end{tabular}\end{table}""" % (RES["n_obs"],RES["n_firms"],RES["yrs"],rows)) | |
| 21 | + | |
| 22 | +# --- Table 2: portfolio sorts --- | |
| 23 | +sd=pd.read_csv(f"{T}/t2_portfolio_sorts.csv",index_col=0) | |
| 24 | +def row(key,label): | |
| 25 | + r=sd.loc[key] | |
| 26 | + return f"{label} & {r.Q1*100:.1f} & {r.Q2*100:.1f} & {r.Q3*100:.1f} & {r.Q4*100:.1f} & {r.Q5*100:.1f} & {r.Q5_minus_Q1*100:+.1f} & {r.t_stat:.2f} \\\\\n" | |
| 27 | +body =row("AI_ADOPT_EW","AI adoption (EW)") | |
| 28 | +body+=row("AI_ADOPT_VW","\\quad value-weighted") | |
| 29 | +body+=row("AI_INFRA_EW","AI infrastructure (EW)") | |
| 30 | +body+=row("AI_INFRA_VW","\\quad value-weighted") | |
| 31 | +body+=row("AI_RISK_EW","AI disruption risk (EW)") | |
| 32 | +body+=row("AI_RISK_VW","\\quad value-weighted") | |
| 33 | +body+="\\midrule\n"+row("AI_COMPOS_EW","AI composite (EW)") | |
| 34 | +body+=row("AI_COMPOS_VW","\\quad value-weighted") | |
| 35 | +w("tab_sorts", r"""\begin{table}[H]\centering\small | |
| 36 | +\caption{Forward 12-month returns (\%%) by AI-disclosure quintile. Q5$-$Q1 is the high-minus-low spread; \textit{t} uses Newey--West (3 lag) errors on the 15 annual spreads.}\label{tab:sorts} | |
| 37 | +\begin{tabular}{lrrrrrrr}\toprule | |
| 38 | +Signal (weighting) & Q1 & Q2 & Q3 & Q4 & Q5 & Q5$-$Q1 & \textit{t} \\\midrule | |
| 39 | +%s\bottomrule | |
| 40 | +\end{tabular}\end{table}""" % body) | |
| 41 | + | |
| 42 | +# --- Table 3: factor alphas --- | |
| 43 | +a=RES["ls_alpha"] | |
| 44 | +def arow(k,label): | |
| 45 | + x=a[k] | |
| 46 | + return (f"{label} & {x['mean_ls_ann']*100:+.1f} & {x['capm_alpha_m']*1200:+.1f} & {x['capm_alpha_t']:.2f} " | |
| 47 | + f"& {x['ff6_alpha_ann']*100:+.1f} & {x['ff6_alpha_t']:.2f} \\\\\n") | |
| 48 | +body=arow("AI_ADOPT","AI adoption")+arow("AI_INFRA","AI infrastructure")+arow("AI_COMPOS","AI composite")+arow("AI_RISK","AI disruption risk") | |
| 49 | +w("tab_alpha", r"""\begin{table}[H]\centering\small | |
| 50 | +\caption{Risk-adjusted performance of the equal-weight high-minus-low (Q5$-$Q1) long-short portfolio, annually rebalanced (%d monthly observations). Alphas annualized; \textit{t} from Newey--West (3 lag) HAC errors.}\label{tab:alpha} | |
| 51 | +\begin{tabular}{lrrrrr}\toprule | |
| 52 | +& Mean LS & CAPM $\alpha$ & \textit{t} & FF6 $\alpha$ & \textit{t} \\ | |
| 53 | +Signal & (\%%/yr) & (\%%/yr) & & (\%%/yr) & \\\midrule | |
| 54 | +%s\bottomrule | |
| 55 | +\end{tabular}\end{table}""" % (a["AI_ADOPT"]["n_months"], body)) | |
| 56 | + | |
| 57 | +# --- Table 4: panel FE + Fama-MacBeth --- | |
| 58 | +fe=RES["panel_fe"]; fm=RES["fama_macbeth"] | |
| 59 | +def g(d,v): | |
| 60 | + return d["coefs"].get(v) | |
| 61 | +m5=fe["M5_all"]; fmall=fm["all"] | |
| 62 | +def cell(coef,t): return f"{coef:+.4f} \\tstat{{{t:.2f}}}" | |
| 63 | +rows=[] | |
| 64 | +labels=[("z_AI_ADOPT","AI adoption ($z$)"),("z_AI_INFRA","AI infrastructure ($z$)"), | |
| 65 | + ("z_AI_RISK","AI disruption risk ($z$)"),("z_size","Size ($z$)"), | |
| 66 | + ("z_mom","Momentum ($z$)"),("z_vol","Volatility ($z$)")] | |
| 67 | +for v,lab in labels: | |
| 68 | + fec=m5["coefs"].get(v); fmc=fmall.get(v) | |
| 69 | + fecell = cell(fec["coef"],fec["t"]) if fec else "---" | |
| 70 | + fmcell = cell(fmc["mean_coef"],fmc["t"]) if fmc else "---" | |
| 71 | + rows.append(f"{lab} & {fecell} & {fmcell} \\\\") | |
| 72 | +body="\n".join(rows) | |
| 73 | +w("tab_panel", r"""\begin{table}[H]\centering\small | |
| 74 | +\caption{Forward-return regressions. Column (1): two-way (firm $\times$ year) fixed-effects panel, SE double-clustered by firm and year. Column (2): Fama--MacBeth, Newey--West \textit{t}. Dependent variable is the winsorized forward 12-month return; signals are within-year $z$-scores.}\label{tab:panel} | |
| 75 | +\begin{tabular}{lcc}\toprule | |
| 76 | +& (1) Two-way FE & (2) Fama--MacBeth \\\midrule | |
| 77 | +%s | |
| 78 | +\midrule | |
| 79 | +Firm FE & Yes & No \\ | |
| 80 | +Year FE & Yes & (by construction) \\ | |
| 81 | +N (obs / years) & %d & %d \\ | |
| 82 | +\bottomrule | |
| 83 | +\end{tabular}\end{table}""" % (body, fe["M5_all"]["n"], fmall["n_years"])) | |
| 84 | + | |
| 85 | +# --- Table 5: structural break --- | |
| 86 | +br=RES["structural_break"]; sp=RES["subperiod_spread"] | |
| 87 | +def brow(k,label): | |
| 88 | + b=br[k]; s=sp[k] | |
| 89 | + pre=s["pre_2010_2021"]; post=s["post_2022_2024"] | |
| 90 | + return (f"{label} & {pre[0]*100:+.1f} \\tstat{{{pre[1]:.2f}}} & {post[0]*100:+.1f} \\tstat{{{post[1]:.2f}}} " | |
| 91 | + f"& {b['interaction']:+.4f} \\tstat{{{b['interaction_t']:.2f}}} \\\\\n") | |
| 92 | +body=brow("AI_ADOPT","AI adoption")+brow("AI_INFRA","AI infrastructure")+brow("AI_COMPOS","AI composite") | |
| 93 | +w("tab_break", r"""\begin{table}[H]\centering\small | |
| 94 | +\caption{The post-ChatGPT structural break. Columns 2--3: Q5$-$Q1 forward-return spread (\%%/yr, Newey--West \textit{t}) in each sub-period. Column 4: coefficient on AI~$z$\,$\times$\,Post-2022 from a pooled OLS (size and momentum controls, year-clustered SE).}\label{tab:break} | |
| 95 | +\begin{tabular}{lccc}\toprule | |
| 96 | +& \multicolumn{2}{c}{Q5$-$Q1 spread} & Interaction \\ | |
| 97 | +\cmidrule(lr){2-3} | |
| 98 | +Signal & Pre (2010--21) & Post (2022--24) & AI$\times$Post \\\midrule | |
| 99 | +%s\bottomrule | |
| 100 | +\end{tabular}\end{table}""" % body) | |
| 101 | + | |
| 102 | +print("LaTeX table fragments written.") | |
added
scripts/06_extended.py
+274 −0
@@ -0,0 +1,274 @@ | ||
| 1 | +""" | |
| 2 | +06_extended.py -- Extended / rigorous tests for the AI-disclosure return study. | |
| 3 | +Produces results/tables/results2.json and several CSV/parquet artifacts. | |
| 4 | + | |
| 5 | +Blocks: | |
| 6 | + A. Placebo: replicate the post-2022 break on the 5 NON-AI semantic factors. | |
| 7 | + B. Sector-neutral sorts and AIxSector / AIxSize double sorts. | |
| 8 | + C. Magnificent-7 and mega-cap exclusion robustness. | |
| 9 | + D. Alternative signal definitions (mean, top5pct) and horizons (6m, 24m). | |
| 10 | + E. Year-by-year Fama-MacBeth slopes (for time-variation figure). | |
| 11 | + F. PCA of the three AI signals -> AI_PC1; re-test. | |
| 12 | + G. Difference-in-differences around ChatGPT (binary & continuous treatment). | |
| 13 | + H. Forward realized volatility as an alternative performance outcome. | |
| 14 | +""" | |
| 15 | +import json, warnings | |
| 16 | +import numpy as np, pandas as pd | |
| 17 | +import statsmodels.api as sm, statsmodels.formula.api as smf | |
| 18 | +from statsmodels.stats.sandwich_covariance import cov_hac | |
| 19 | +warnings.filterwarnings("ignore") | |
| 20 | + | |
| 21 | +D="data/processed"; T="results/tables" | |
| 22 | +df=pd.read_parquet(f"{D}/analysis_panel.parquet") | |
| 23 | +mret=pd.read_parquet(f"{D}/monthly_returns.parquet") | |
| 24 | +mret["date"]=pd.to_datetime(mret["date"]).dt.to_period("M").dt.to_timestamp("M") | |
| 25 | +R2={} | |
| 26 | + | |
| 27 | +def nw_t(x,lags=3): | |
| 28 | + x=pd.Series(x).dropna().values | |
| 29 | + if len(x)==0: return np.nan,np.nan | |
| 30 | + if len(x)<3: return float(x.mean()),np.nan | |
| 31 | + r=sm.OLS(x,np.ones((len(x),1))).fit() | |
| 32 | + se=np.sqrt(cov_hac(r,nlags=lags)[0,0]); return x.mean(),x.mean()/se | |
| 33 | + | |
| 34 | +def zс(g): return (g-g.mean())/g.std(ddof=0) | |
| 35 | + | |
| 36 | +def subperiod_spread(d, zcol, yrs, oc="fwd_ret"): | |
| 37 | + sp=[] | |
| 38 | + for yr,g in d[d.fiscal_year.isin(list(yrs))].groupby("fiscal_year"): | |
| 39 | + g=g.dropna(subset=[zcol,oc]) | |
| 40 | + if len(g)<25: continue | |
| 41 | + g=g.copy(); g["q"]=pd.qcut(g[zcol],5,labels=False,duplicates="drop")+1 | |
| 42 | + sp.append(g[g.q==5][oc].mean()-g[g.q==1][oc].mean()) | |
| 43 | + mu,t=nw_t(sp); return round(mu,4),round(t,2),len(sp) | |
| 44 | + | |
| 45 | +# ========================================================= | |
| 46 | +# A. PLACEBO -- all 8 semantic factors, pre vs post + interaction | |
| 47 | +# ========================================================= | |
| 48 | +FACTORS={"AI adoption":"ai_adoption_wmean","AI infrastructure":"ai_infrastructure_wmean", | |
| 49 | + "AI disruption risk":"ai_disruption_risk_wmean","ESG commitment":"esg_commitment_wmean", | |
| 50 | + "Climate risk":"climate_risk_wmean","Cybersecurity":"cybersecurity_wmean", | |
| 51 | + "Automation/labor":"automation_labor_wmean","Macro risk":"macro_risk_wmean"} | |
| 52 | +placebo={} | |
| 53 | +for name,col in FACTORS.items(): | |
| 54 | + z=f"_z_{col}" | |
| 55 | + df[z]=df.groupby("fiscal_year")[col].transform(zс) | |
| 56 | + pre=subperiod_spread(df,z,range(2010,2022)); post=subperiod_spread(df,z,range(2022,2025)) | |
| 57 | + d2=df.dropna(subset=["fwd_w",z,"z_size","z_mom"]).copy() | |
| 58 | + r=smf.ols(f"fwd_w ~ {z} * post + z_size + z_mom",data=d2).fit(cov_type="cluster",cov_kwds={"groups":d2["fiscal_year"]}) | |
| 59 | + iv=f"{z}:post" | |
| 60 | + placebo[name]={"pre":pre,"post":post,"interaction":round(r.params[iv],4),"interaction_t":round(r.tvalues[iv],2), | |
| 61 | + "is_ai":name.startswith("AI")} | |
| 62 | +R2["placebo"]=placebo | |
| 63 | +print("=== A. PLACEBO (Q5-Q1 spread pre vs post, interaction t) ===") | |
| 64 | +for n,v in placebo.items(): | |
| 65 | + print(f" {n:20s} pre={v['pre'][0]*100:+5.1f}pp post={v['post'][0]*100:+6.1f}pp(t={v['post'][1]:.2f}) interact_t={v['interaction_t']:+.2f}") | |
| 66 | + | |
| 67 | +# ========================================================= | |
| 68 | +# B. SECTOR-NEUTRAL sorts + double sorts | |
| 69 | +# ========================================================= | |
| 70 | +# sector-neutral: demean AI composite within sector-year, then sort | |
| 71 | +df["z_AI_sectneu"]=df.groupby(["fiscal_year","sector"])["ai_infrastructure_wmean"].transform( | |
| 72 | + lambda g: zс(g) if g.std(ddof=0)>0 else g*0) | |
| 73 | +# use composite of adoption+infra sector-neutral | |
| 74 | +tmp_a=df.groupby(["fiscal_year","sector"])["ai_adoption_wmean"].transform(lambda g: zс(g) if g.std(ddof=0)>0 else g*0) | |
| 75 | +tmp_i=df.groupby(["fiscal_year","sector"])["ai_infrastructure_wmean"].transform(lambda g: zс(g) if g.std(ddof=0)>0 else g*0) | |
| 76 | +df["z_AI_COMPOS_sn"]=(tmp_a+tmp_i)/2 | |
| 77 | +sn={} | |
| 78 | +sn["full"]=subperiod_spread(df,"z_AI_COMPOS_sn",range(2010,2025)) | |
| 79 | +sn["pre"]=subperiod_spread(df,"z_AI_COMPOS_sn",range(2010,2022)) | |
| 80 | +sn["post"]=subperiod_spread(df,"z_AI_COMPOS_sn",range(2022,2025)) | |
| 81 | +R2["sector_neutral"]=sn | |
| 82 | +print("\n=== B. SECTOR-NEUTRAL composite Q5-Q1 ===") | |
| 83 | +print(f" full={sn['full'][0]*100:+.1f}pp pre={sn['pre'][0]*100:+.1f}pp post={sn['post'][0]*100:+.1f}pp(t={sn['post'][1]})") | |
| 84 | + | |
| 85 | +# AI x Sector heatmap data: mean fwd_ret of high-AI minus low-AI within each sector, post-period | |
| 86 | +heat=[] | |
| 87 | +for (sec),g in df[df.fiscal_year>=2022].groupby("sector"): | |
| 88 | + g=g.dropna(subset=["z_AI_COMPOS","fwd_ret"]) | |
| 89 | + if len(g)<15: continue | |
| 90 | + med=g["z_AI_COMPOS"].median() | |
| 91 | + hi=g[g.z_AI_COMPOS>med].fwd_ret.mean(); lo=g[g.z_AI_COMPOS<=med].fwd_ret.mean() | |
| 92 | + heat.append({"sector":sec,"hi_minus_lo":(hi-lo)*100,"n":len(g)}) | |
| 93 | +pd.DataFrame(heat).to_csv(f"{T}/t6_sector_aieffect_post.csv",index=False) | |
| 94 | + | |
| 95 | +# AI x Size double sort (post-period): 2x3 | |
| 96 | +def double_sort(d,zcol,bycol,oc="fwd_ret"): | |
| 97 | + d=d.dropna(subset=[zcol,bycol,oc]).copy() | |
| 98 | + d["sz"]=d.groupby("fiscal_year")[bycol].transform(lambda g: pd.qcut(g,2,labels=["Small","Large"],duplicates="drop")) | |
| 99 | + d["ai"]=d.groupby("fiscal_year")[zcol].transform(lambda g: pd.qcut(g,3,labels=["Lo","Mid","Hi"],duplicates="drop")) | |
| 100 | + return d.groupby(["sz","ai"],observed=True)[oc].mean().mul(100).round(2).unstack() | |
| 101 | +ds_post=double_sort(df[df.fiscal_year>=2022],"z_AI_COMPOS","log_mktcap") | |
| 102 | +ds_pre=double_sort(df[df.fiscal_year<2022],"z_AI_COMPOS","log_mktcap") | |
| 103 | +ds_post.to_csv(f"{T}/t6_double_sort_post.csv"); ds_pre.to_csv(f"{T}/t6_double_sort_pre.csv") | |
| 104 | +R2["double_sort_post"]=ds_post.to_dict(); R2["double_sort_pre"]=ds_pre.to_dict() | |
| 105 | +print("\n=== B. AIxSize double sort POST (mean fwd ret %) ===\n",ds_post.to_string()) | |
| 106 | + | |
| 107 | +# ========================================================= | |
| 108 | +# C. MAGNIFICENT-7 / mega-cap exclusion | |
| 109 | +# ========================================================= | |
| 110 | +MAG7=["AAPL","MSFT","NVDA","AMZN","GOOGL","META","TSLA","GOOG","AVGO"] | |
| 111 | +def spread_excl(d,zcol,yrs,exclude=None,topn_drop=0): | |
| 112 | + sp=[] | |
| 113 | + for yr,g in d[d.fiscal_year.isin(list(yrs))].groupby("fiscal_year"): | |
| 114 | + g=g.dropna(subset=[zcol,"fwd_ret"]).copy() | |
| 115 | + if exclude: g=g[~g.ticker.isin(exclude)] | |
| 116 | + if topn_drop: g=g[g.mktcap < g.mktcap.nlargest(topn_drop).min()] | |
| 117 | + if len(g)<25: continue | |
| 118 | + g["q"]=pd.qcut(g[zcol],5,labels=False,duplicates="drop")+1 | |
| 119 | + sp.append(g[g.q==5].fwd_ret.mean()-g[g.q==1].fwd_ret.mean()) | |
| 120 | + mu,t=nw_t(sp); return round(mu,4),round(t,2),len(sp) | |
| 121 | +excl={"baseline_post":spread_excl(df,"z_AI_COMPOS",range(2022,2025)), | |
| 122 | + "ex_mag7_post":spread_excl(df,"z_AI_COMPOS",range(2022,2025),exclude=MAG7), | |
| 123 | + "ex_top10_post":spread_excl(df,"z_AI_COMPOS",range(2022,2025),topn_drop=10), | |
| 124 | + "ex_mag7_pre":spread_excl(df,"z_AI_COMPOS",range(2010,2022),exclude=MAG7)} | |
| 125 | +R2["mag7"]=excl | |
| 126 | +print("\n=== C. Mega-cap exclusion (composite Q5-Q1) ===") | |
| 127 | +for k,v in excl.items(): print(f" {k:18s} {v[0]*100:+.1f}pp (t={v[1]})") | |
| 128 | + | |
| 129 | +# ========================================================= | |
| 130 | +# D. ALTERNATIVE signals & horizons | |
| 131 | +# ========================================================= | |
| 132 | +# alt signal defs (mean, top5pct) for adoption+infra composite | |
| 133 | +for suff in ["mean","top5pct"]: | |
| 134 | + a=df.groupby("fiscal_year")[f"ai_adoption_{suff}"].transform(zс) | |
| 135 | + i=df.groupby("fiscal_year")[f"ai_infrastructure_{suff}"].transform(zс) | |
| 136 | + df[f"z_AI_{suff}"]=(a+i)/2 | |
| 137 | +alt_sig={} | |
| 138 | +for suff in ["wmean(base)","mean","top5pct"]: | |
| 139 | + col="z_AI_COMPOS" if suff=="wmean(base)" else f"z_AI_{suff}" | |
| 140 | + alt_sig[suff]={"pre":subperiod_spread(df,col,range(2010,2022)),"post":subperiod_spread(df,col,range(2022,2025))} | |
| 141 | +R2["alt_signal"]=alt_sig | |
| 142 | +print("\n=== D. Alt signal defs (composite Q5-Q1 pre|post) ===") | |
| 143 | +for k,v in alt_sig.items(): print(f" {k:14s} pre={v['pre'][0]*100:+.1f} post={v['post'][0]*100:+.1f}(t={v['post'][1]})") | |
| 144 | + | |
| 145 | +# alt horizons: compute 6m and 24m forward returns | |
| 146 | +px_by={t:g.sort_values("date") for t,g in mret.groupby("ticker")} | |
| 147 | +def cum(d,start,end,minn): | |
| 148 | + m=d[(d.date>start)&(d.date<=end)] | |
| 149 | + if m["ret"].notna().sum()<minn: return np.nan | |
| 150 | + return (1+m["ret"].fillna(0)).prod()-1 | |
| 151 | +for H,mm,minn in [(6,6,3),(24,24,12)]: | |
| 152 | + vals=[] | |
| 153 | + for _,r in df.iterrows(): | |
| 154 | + d=px_by.get(r.ticker) | |
| 155 | + if d is None: vals.append(np.nan); continue | |
| 156 | + form=pd.Timestamp(int(r.fiscal_year)+1,6,30)+pd.offsets.MonthEnd(0) | |
| 157 | + end=form+pd.offsets.MonthEnd(mm) | |
| 158 | + vals.append(cum(d,form,end,minn)) | |
| 159 | + df[f"fwd_ret_{H}m"]=vals | |
| 160 | +alt_hor={} | |
| 161 | +for H in [6,24]: | |
| 162 | + alt_hor[f"{H}m"]={"pre":subperiod_spread(df,"z_AI_COMPOS",range(2010,2022),oc=f"fwd_ret_{H}m"), | |
| 163 | + "post":subperiod_spread(df,"z_AI_COMPOS",range(2022,2024),oc=f"fwd_ret_{H}m")} | |
| 164 | +R2["alt_horizon"]=alt_hor | |
| 165 | +print("\n=== D. Alt horizons (composite Q5-Q1 pre|post) ===") | |
| 166 | +for k,v in alt_hor.items(): print(f" {k:4s} pre={v['pre'][0]*100:+.1f} post={v['post'][0]*100:+.1f}(t={v['post'][1]})") | |
| 167 | + | |
| 168 | +# ========================================================= | |
| 169 | +# E. YEAR-BY-YEAR Fama-MacBeth slope (AI composite, controls) | |
| 170 | +# ========================================================= | |
| 171 | +fm_year=[] | |
| 172 | +for yr,g in df.groupby("fiscal_year"): | |
| 173 | + g=g.dropna(subset=["fwd_ret","z_AI_COMPOS","z_size","z_mom","z_vol"]) | |
| 174 | + if len(g)<30: continue | |
| 175 | + X=sm.add_constant(g[["z_AI_COMPOS","z_size","z_mom","z_vol"]]) | |
| 176 | + r=sm.OLS(g["fwd_ret"],X).fit(cov_type="HC1") | |
| 177 | + fm_year.append({"year":int(yr),"coef":r.params["z_AI_COMPOS"],"se":r.bse["z_AI_COMPOS"],"t":r.tvalues["z_AI_COMPOS"]}) | |
| 178 | +pd.DataFrame(fm_year).to_csv(f"{T}/t6_fm_byyear.csv",index=False) | |
| 179 | +R2["fm_byyear"]=fm_year | |
| 180 | +print("\n=== E. Year-by-year FM slope on AI composite ===") | |
| 181 | +print(" "+", ".join(f"{x['year']}:{x['coef']*100:+.1f}" for x in fm_year)) | |
| 182 | + | |
| 183 | +# ========================================================= | |
| 184 | +# F. PCA of three AI signals -> AI_PC1 | |
| 185 | +# ========================================================= | |
| 186 | +from numpy.linalg import svd | |
| 187 | +Z=df[["z_AI_ADOPT","z_AI_INFRA","z_AI_RISK"]].dropna() | |
| 188 | +Zc=Z-Z.mean() | |
| 189 | +U,S,Vt=svd(Zc.values,full_matrices=False) | |
| 190 | +evr=(S**2)/np.sum(S**2) | |
| 191 | +pc1=Zc.values@Vt[0] | |
| 192 | +df.loc[Z.index,"z_AI_PC1"]=(pc1-pc1.mean())/pc1.std() | |
| 193 | +# orient so positive = more AI | |
| 194 | +if df[["z_AI_PC1","z_AI_ADOPT"]].corr().iloc[0,1]<0: df["z_AI_PC1"]*=-1 | |
| 195 | +df["z_AI_PC1"]=df.groupby("fiscal_year")["z_AI_PC1"].transform(zс) | |
| 196 | +R2["pca"]={"explained_var_ratio":[round(float(x),3) for x in evr], | |
| 197 | + "loadings_pc1":[round(float(x),3) for x in Vt[0]], | |
| 198 | + "pre":subperiod_spread(df,"z_AI_PC1",range(2010,2022)), | |
| 199 | + "post":subperiod_spread(df,"z_AI_PC1",range(2022,2025))} | |
| 200 | +print(f"\n=== F. PCA: EVR={R2['pca']['explained_var_ratio']} PC1 loadings={R2['pca']['loadings_pc1']}") | |
| 201 | +print(f" PC1 Q5-Q1 pre={R2['pca']['pre'][0]*100:+.1f} post={R2['pca']['post'][0]*100:+.1f}(t={R2['pca']['post'][1]})") | |
| 202 | + | |
| 203 | +# ========================================================= | |
| 204 | +# G. DIFFERENCE-IN-DIFFERENCES around ChatGPT | |
| 205 | +# ========================================================= | |
| 206 | +from linearmodels.panel import PanelOLS | |
| 207 | +# pre-period exposure fixed at firm's mean AI composite over 2019-2021 | |
| 208 | +pre_exp=df[df.fiscal_year.isin([2019,2020,2021])].groupby("ticker")["ai_infrastructure_wmean"].mean() | |
| 209 | +exp_comp=df[df.fiscal_year.isin([2019,2020,2021])].groupby("ticker")[["ai_adoption_wmean","ai_infrastructure_wmean"]].mean().mean(axis=1) | |
| 210 | +df["pre_AI_cont"]=df.ticker.map((exp_comp-exp_comp.mean())/exp_comp.std()) | |
| 211 | +df["treated"]=df.ticker.map((exp_comp>exp_comp.median()).astype(float)) | |
| 212 | +did=df.dropna(subset=["fwd_w","pre_AI_cont","z_size","z_mom"]).copy() | |
| 213 | +did=did.set_index(["ticker","fiscal_year"]) | |
| 214 | +# binary DiD: treated x post with entity+time FE (treated & post absorbed; interaction identified) | |
| 215 | +did["tp"]=did["treated"]*did["post"] | |
| 216 | +m_did=PanelOLS.from_formula("fwd_w ~ tp + z_size + z_mom + EntityEffects + TimeEffects", | |
| 217 | + data=did,drop_absorbed=True).fit(cov_type="clustered",cluster_entity=True,cluster_time=True) | |
| 218 | +# continuous DiD | |
| 219 | +did["cp"]=did["pre_AI_cont"]*did["post"] | |
| 220 | +m_didc=PanelOLS.from_formula("fwd_w ~ cp + z_size + z_mom + EntityEffects + TimeEffects", | |
| 221 | + data=did,drop_absorbed=True).fit(cov_type="clustered",cluster_entity=True,cluster_time=True) | |
| 222 | +R2["did"]={"binary":{"coef":round(m_did.params["tp"],4),"t":round(m_did.tstats["tp"],2),"n":int(m_did.nobs)}, | |
| 223 | + "continuous":{"coef":round(m_didc.params["cp"],4),"t":round(m_didc.tstats["cp"],2),"n":int(m_didc.nobs)}} | |
| 224 | +print("\n=== G. DiD around ChatGPT (firm+year FE, double-clustered) ===") | |
| 225 | +print(f" binary treated x post = {R2['did']['binary']['coef']:+.4f} (t={R2['did']['binary']['t']})") | |
| 226 | +print(f" continuous exposure x post = {R2['did']['continuous']['coef']:+.4f} (t={R2['did']['continuous']['t']})") | |
| 227 | + | |
| 228 | +# event-time DiD: continuous exposure interacted with each year dummy (ref=2021) | |
| 229 | +df["pre_AI_cont2"]=df["pre_AI_cont"] | |
| 230 | +ev=df.dropna(subset=["fwd_w","pre_AI_cont2","z_size","z_mom"]).copy() | |
| 231 | +ev=ev[ev.fiscal_year.between(2015,2024)] | |
| 232 | +ev["yr"]=ev.fiscal_year.astype(int).astype(str) | |
| 233 | +m_ev=smf.ols("fwd_w ~ C(yr, Treatment('2021')):pre_AI_cont2 + C(yr) + z_size + z_mom",data=ev).fit( | |
| 234 | + cov_type="cluster",cov_kwds={"groups":ev["fiscal_year"]}) | |
| 235 | +evt=[] | |
| 236 | +for yr in range(2015,2025): | |
| 237 | + cand=[f"C(yr, Treatment('2021'))[{yr}]:pre_AI_cont2", | |
| 238 | + f"C(yr, Treatment('2021'))[T.{yr}]:pre_AI_cont2"] | |
| 239 | + key=next((k for k in cand if k in m_ev.params.index),None) | |
| 240 | + if key: | |
| 241 | + evt.append({"year":yr,"coef":m_ev.params[key],"se":m_ev.bse[key]}) | |
| 242 | + elif yr==2021: | |
| 243 | + evt.append({"year":yr,"coef":0.0,"se":0.0}) | |
| 244 | +pd.DataFrame(evt).to_csv(f"{T}/t6_did_eventtime.csv",index=False) | |
| 245 | +R2["did_eventtime"]=evt | |
| 246 | +print(" event-time slopes:", ", ".join(f"{e['year']}:{e['coef']*100:+.1f}" for e in evt)) | |
| 247 | + | |
| 248 | +# ========================================================= | |
| 249 | +# H. FORWARD VOLATILITY outcome | |
| 250 | +# ========================================================= | |
| 251 | +fvol=[] | |
| 252 | +for _,r in df.reset_index(drop=True).iterrows(): | |
| 253 | + d=px_by.get(r.ticker) | |
| 254 | + if d is None: fvol.append(np.nan); continue | |
| 255 | + form=pd.Timestamp(int(r.fiscal_year)+1,6,30)+pd.offsets.MonthEnd(0) | |
| 256 | + end=form+pd.offsets.MonthEnd(12) | |
| 257 | + w=d[(d.date>form)&(d.date<=end)] | |
| 258 | + fvol.append(w["ret"].std()*np.sqrt(12) if w["ret"].notna().sum()>=6 else np.nan) | |
| 259 | +df["fwd_vol"]=fvol | |
| 260 | +volr={} | |
| 261 | +for yrs,lab in [(range(2010,2022),"pre"),(range(2022,2025),"post")]: | |
| 262 | + sp=[] | |
| 263 | + for yr,g in df[df.fiscal_year.isin(list(yrs))].groupby("fiscal_year"): | |
| 264 | + g=g.dropna(subset=["z_AI_COMPOS","fwd_vol"]) | |
| 265 | + if len(g)<25: continue | |
| 266 | + g=g.copy(); g["q"]=pd.qcut(g.z_AI_COMPOS,5,labels=False,duplicates="drop")+1 | |
| 267 | + sp.append(g[g.q==5].fwd_vol.mean()-g[g.q==1].fwd_vol.mean()) | |
| 268 | + mu,t=nw_t(sp); volr[lab]=(round(mu,4),round(t,2),len(sp)) | |
| 269 | +R2["fwd_vol"]=volr | |
| 270 | +print(f"\n=== H. Forward vol Q5-Q1: pre={volr['pre'][0]:+.3f} post={volr['post'][0]:+.3f}(t={volr['post'][1]})") | |
| 271 | + | |
| 272 | +json.dump(R2,open(f"{T}/results2.json","w"),indent=2,default=str) | |
| 273 | +df.to_parquet(f"{D}/analysis_panel.parquet") | |
| 274 | +print("\nSaved results2.json and updated analysis_panel.parquet") | |
added
scripts/07_event_study.py
+132 −0
@@ -0,0 +1,132 @@ | ||
| 1 | +""" | |
| 2 | +07_event_study.py -- Market-model event study around the public launch of | |
| 3 | +ChatGPT (30 November 2022). Tests whether firms with HIGHER pre-event AI | |
| 4 | +disclosure (from their last pre-event 10-K, FY2021) earned higher cumulative | |
| 5 | +abnormal returns (CAR) after the AI-narrative shock. | |
| 6 | + | |
| 7 | +Design: | |
| 8 | + Event date t0 = 2022-11-30. | |
| 9 | + Estimation window: 2022-01-03 .. 2022-10-31 (market model AR = r - a - b*rmkt). | |
| 10 | + Event window: 2022-11-01 .. 2024-06-30. | |
| 11 | + Treatment: tercile of pre-event AI exposure (composite adoption+infra, FY2021). | |
| 12 | +Outputs daily CAR paths per tercile + cross-sectional CAR regressions. | |
| 13 | +""" | |
| 14 | +import time, warnings | |
| 15 | +import numpy as np, pandas as pd, yfinance as yf | |
| 16 | +import statsmodels.api as sm | |
| 17 | +warnings.filterwarnings("ignore") | |
| 18 | +D="data/processed"; T="results/tables" | |
| 19 | + | |
| 20 | +panel=pd.read_parquet(f"{D}/analysis_panel.parquet") | |
| 21 | +tickers=sorted(panel.ticker.dropna().unique().tolist()) | |
| 22 | + | |
| 23 | +# ---- download daily prices (cache) ---- | |
| 24 | +import os | |
| 25 | +DPATH=f"{D}/prices_daily_event.parquet" | |
| 26 | + | |
| 27 | +def extract_close(d, t): | |
| 28 | + """Return Close series for ticker t from a yf.download frame (any layout).""" | |
| 29 | + try: | |
| 30 | + if isinstance(d.columns, pd.MultiIndex): | |
| 31 | + if t in d.columns.get_level_values(0): | |
| 32 | + return d[t]["Close"].dropna() | |
| 33 | + if "Close" in d.columns.get_level_values(0): | |
| 34 | + return d["Close"][t].dropna() | |
| 35 | + return d["Close"].dropna() | |
| 36 | + except Exception: | |
| 37 | + return None | |
| 38 | + | |
| 39 | +if not os.path.exists(DPATH): | |
| 40 | + frames=[] | |
| 41 | + for i in range(0,len(tickers),60): | |
| 42 | + b=tickers[i:i+60] | |
| 43 | + d=yf.download(b,start="2021-09-01",end="2024-07-15",interval="1d",auto_adjust=True, | |
| 44 | + progress=False,group_by="ticker",threads=True) | |
| 45 | + for t in b: | |
| 46 | + s=extract_close(d,t) | |
| 47 | + if s is None or len(s)==0: continue | |
| 48 | + tmp=s.reset_index(); tmp.columns=["date","px"]; tmp["ticker"]=t; frames.append(tmp) | |
| 49 | + time.sleep(1); print("daily batch",i//60+1, flush=True) | |
| 50 | + spy=yf.download("SPY",start="2021-09-01",end="2024-07-15",interval="1d",auto_adjust=True,progress=False) | |
| 51 | + sc=extract_close(spy,"SPY") | |
| 52 | + sdf=sc.reset_index(); sdf.columns=["date","px"]; sdf["ticker"]="SPY" | |
| 53 | + frames.append(sdf) | |
| 54 | + dp=pd.concat(frames,ignore_index=True) | |
| 55 | + dp.to_parquet(DPATH,index=False) | |
| 56 | +else: | |
| 57 | + dp=pd.read_parquet(DPATH) | |
| 58 | + | |
| 59 | +dp["date"]=pd.to_datetime(dp["date"]) | |
| 60 | +dp=dp.sort_values(["ticker","date"]) | |
| 61 | +dp["ret"]=dp.groupby("ticker")["px"].pct_change() | |
| 62 | +spy=dp[dp.ticker=="SPY"][["date","ret"]].rename(columns={"ret":"mkt"}) | |
| 63 | + | |
| 64 | +t0=pd.Timestamp("2022-11-30") | |
| 65 | +est0,est1=pd.Timestamp("2022-01-03"),pd.Timestamp("2022-10-31") | |
| 66 | +ev0,ev1=pd.Timestamp("2022-11-01"),pd.Timestamp("2024-06-30") | |
| 67 | + | |
| 68 | +# pre-event AI exposure from FY2021 filing | |
| 69 | +exp=panel[panel.fiscal_year==2021].copy() | |
| 70 | +exp["ai_pre"]=(exp.groupby("fiscal_year")["ai_adoption_wmean"].transform(lambda g:(g-g.mean())/g.std()) | |
| 71 | + +exp.groupby("fiscal_year")["ai_infrastructure_wmean"].transform(lambda g:(g-g.mean())/g.std()))/2 | |
| 72 | +exp=exp[["ticker","ai_pre","log_mktcap","sector"]].dropna(subset=["ai_pre"]) | |
| 73 | +exp["tercile"]=pd.qcut(exp.ai_pre,3,labels=["Low","Mid","High"]) | |
| 74 | + | |
| 75 | +# compute AR per ticker | |
| 76 | +car_rows=[]; daily_ar={} | |
| 77 | +beta_map={} | |
| 78 | +for t,g in dp[dp.ticker!="SPY"].groupby("ticker"): | |
| 79 | + g=g.merge(spy,on="date",how="left").dropna(subset=["ret","mkt"]) | |
| 80 | + est=g[(g.date>=est0)&(g.date<=est1)] | |
| 81 | + if len(est)<60: continue | |
| 82 | + X=sm.add_constant(est["mkt"]); m=sm.OLS(est["ret"],X).fit() | |
| 83 | + a,b=m.params["const"],m.params["mkt"]; beta_map[t]=b | |
| 84 | + ev=g[(g.date>=ev0)&(g.date<=ev1)].copy() | |
| 85 | + ev["ar"]=ev["ret"]-(a+b*ev["mkt"]) | |
| 86 | + ev["car"]=ev["ar"].cumsum() | |
| 87 | + daily_ar[t]=ev.set_index("date")["car"] | |
| 88 | + for hz,lab in [(60,"car_60d"),(125,"car_6m"),(250,"car_1y"),(395,"car_18m")]: | |
| 89 | + sub=ev.iloc[:hz] | |
| 90 | + car_rows.append({"ticker":t,"hz":lab,"car":sub["ar"].sum()}) | |
| 91 | +car=pd.DataFrame(car_rows).pivot(index="ticker",columns="hz",values="car").reset_index() | |
| 92 | +car=car.merge(exp,on="ticker",how="inner"); car["beta"]=car.ticker.map(beta_map) | |
| 93 | +car.to_parquet(f"{D}/event_car.parquet",index=False) | |
| 94 | + | |
| 95 | +# mean CAR path by tercile | |
| 96 | +allc=pd.DataFrame(daily_ar) # cols=tickers, index=date | |
| 97 | +allc=allc.dropna(how="all") | |
| 98 | +paths={} | |
| 99 | +for terc in ["Low","Mid","High"]: | |
| 100 | + tks=[t for t in exp[exp.tercile==terc].ticker if t in allc.columns] | |
| 101 | + paths[terc]=allc[tks].mean(axis=1) | |
| 102 | +path_df=pd.DataFrame(paths) | |
| 103 | +path_df["High_minus_Low"]=path_df["High"]-path_df["Low"] | |
| 104 | +path_df.to_parquet(f"{D}/event_car_paths.parquet") | |
| 105 | + | |
| 106 | +# tests | |
| 107 | +RES={} | |
| 108 | +print("=== ChatGPT event study: mean CAR by pre-event AI tercile ===") | |
| 109 | +for hz in ["car_60d","car_6m","car_1y","car_18m"]: | |
| 110 | + hi=car[car.tercile=="High"][hz].dropna(); lo=car[car.tercile=="Low"][hz].dropna() | |
| 111 | + from scipy import stats | |
| 112 | + tt=stats.ttest_ind(hi,lo,equal_var=False) | |
| 113 | + RES[hz]={"High":round(hi.mean()*100,2),"Mid":round(car[car.tercile=='Mid'][hz].mean()*100,2), | |
| 114 | + "Low":round(lo.mean()*100,2),"H_minus_L":round((hi.mean()-lo.mean())*100,2), | |
| 115 | + "t":round(tt.statistic,2),"p":round(tt.pvalue,4)} | |
| 116 | + print(f" {hz:8s} High={RES[hz]['High']:+6.2f}% Low={RES[hz]['Low']:+6.2f}% H-L={RES[hz]['H_minus_L']:+6.2f}% (t={RES[hz]['t']}, p={RES[hz]['p']})") | |
| 117 | + | |
| 118 | +# cross-sectional regression: CAR_1y on ai_pre + controls | |
| 119 | +reg=car.dropna(subset=["car_1y","ai_pre","log_mktcap","beta"]).copy() | |
| 120 | +X=sm.add_constant(reg[["ai_pre","log_mktcap","beta"]]) | |
| 121 | +m=sm.OLS(reg["car_1y"],X).fit(cov_type="HC1") | |
| 122 | +RES["xsec_reg_1y"]={"ai_pre_coef":round(m.params["ai_pre"]*100,3),"ai_pre_t":round(m.tvalues["ai_pre"],2), | |
| 123 | + "n":int(m.nobs),"r2":round(m.rsquared,3)} | |
| 124 | +# add sector FE version | |
| 125 | +import statsmodels.formula.api as smf | |
| 126 | +m2=smf.ols("car_1y ~ ai_pre + log_mktcap + beta + C(sector)",data=reg).fit(cov_type="HC1") | |
| 127 | +RES["xsec_reg_1y_sectfe"]={"ai_pre_coef":round(m2.params["ai_pre"]*100,3),"ai_pre_t":round(m2.tvalues["ai_pre"],2),"n":int(m2.nobs)} | |
| 128 | +print(f"\n Cross-sec: CAR_1y on AI_pre: {RES['xsec_reg_1y']['ai_pre_coef']:+.2f}%/SD (t={RES['xsec_reg_1y']['ai_pre_t']}, n={RES['xsec_reg_1y']['n']})") | |
| 129 | +print(f" + sector FE: {RES['xsec_reg_1y_sectfe']['ai_pre_coef']:+.2f}%/SD (t={RES['xsec_reg_1y_sectfe']['ai_pre_t']})") | |
| 130 | + | |
| 131 | +import json; json.dump(RES,open(f"{T}/results_event.json","w"),indent=2,default=str) | |
| 132 | +print("\nSaved event-study results.") | |
added
scripts/08_figures_ext.py
+121 −0
@@ -0,0 +1,121 @@ | ||
| 1 | +"""08_figures_ext.py -- additional figures (6-13) for the extended paper.""" | |
| 2 | +import json | |
| 3 | +import numpy as np, pandas as pd | |
| 4 | +import matplotlib.pyplot as plt, matplotlib as mpl | |
| 5 | +from matplotlib.patches import Patch | |
| 6 | +mpl.rcParams.update({"font.size":11,"axes.spines.top":False,"axes.spines.right":False, | |
| 7 | + "figure.dpi":140,"savefig.dpi":200,"axes.grid":True,"grid.alpha":.25, | |
| 8 | + "font.family":"DejaVu Sans"}) | |
| 9 | +D="data/processed"; F="figures"; T="results/tables" | |
| 10 | +df=pd.read_parquet(f"{D}/analysis_panel.parquet") | |
| 11 | +R2=json.load(open(f"{T}/results2.json")) | |
| 12 | +EV=json.load(open(f"{T}/results_event.json")) | |
| 13 | +NAVY="#1b3a6b"; RED="#b22222"; GREY="#9a9a9a"; GREEN="#2e7d32"; ORANGE="#e08214" | |
| 14 | + | |
| 15 | +# --- Fig 6: year-by-year Fama-MacBeth slope on AI composite --- | |
| 16 | +fm=pd.DataFrame(R2["fm_byyear"]) | |
| 17 | +fig,ax=plt.subplots(figsize=(11,4.8)) | |
| 18 | +cols=[RED if y>=2022 else NAVY for y in fm.year] | |
| 19 | +ax.bar(fm.year,fm.coef*100,yerr=fm.se*100*1.0,color=cols,edgecolor="k",lw=.5,capsize=3,error_kw={"alpha":.5}) | |
| 20 | +ax.axhline(0,color="k",lw=.8); ax.set_xticks(fm.year); ax.tick_params(axis="x",rotation=45) | |
| 21 | +ax.set_title("Year-by-Year Fama–MacBeth Slope on the AI-Disclosure Composite\n(forward 12m return per cross-sectional SD, with size/momentum/volatility controls)",fontweight="bold") | |
| 22 | +ax.set_ylabel("Slope coefficient (pp per SD)"); ax.set_xlabel("Formation year (10-K fiscal year)") | |
| 23 | +ax.legend(handles=[Patch(color=NAVY,label="Pre-ChatGPT"),Patch(color=RED,label="Post-ChatGPT")],frameon=False) | |
| 24 | +fig.tight_layout(); fig.savefig(f"{F}/fig6_fm_byyear.png",bbox_inches="tight"); plt.close() | |
| 25 | + | |
| 26 | +# --- Fig 7: PLACEBO -- post-2022 Q5-Q1 spread for all 8 factors --- | |
| 27 | +pb=R2["placebo"] | |
| 28 | +names=list(pb.keys()); post=[pb[n]["post"][0]*100 for n in names]; isai=[pb[n]["is_ai"] for n in names] | |
| 29 | +order=np.argsort(post)[::-1] | |
| 30 | +names=[names[i] for i in order]; post=[post[i] for i in order]; isai=[isai[i] for i in order] | |
| 31 | +fig,ax=plt.subplots(figsize=(11,5)) | |
| 32 | +cols=[RED if a else GREY for a in isai] | |
| 33 | +ax.barh(names,post,color=cols,edgecolor="k",lw=.5) | |
| 34 | +ax.axvline(0,color="k",lw=.8); ax.invert_yaxis() | |
| 35 | +for i,(n,v) in enumerate(zip(names,post)): | |
| 36 | + t=pb[n]["post"][1]; ax.annotate(f"{v:+.1f} (t={t})",xy=(v,i),xytext=(4 if v>=0 else -4,0), | |
| 37 | + textcoords="offset points",va="center",ha="left" if v>=0 else "right",fontsize=8.5) | |
| 38 | +ax.set_title("Placebo Test: Post-ChatGPT High-minus-Low Return Spread by Semantic Factor\n(AI factors in red; non-AI factors in grey)",fontweight="bold") | |
| 39 | +ax.set_xlabel("Q5 − Q1 forward 12m return, 2022–2024 (pp)") | |
| 40 | +ax.legend(handles=[Patch(color=RED,label="AI-related factor"),Patch(color=GREY,label="Non-AI factor")],frameon=False,loc="lower right") | |
| 41 | +fig.tight_layout(); fig.savefig(f"{F}/fig7_placebo.png",bbox_inches="tight"); plt.close() | |
| 42 | + | |
| 43 | +# --- Fig 8: Event-study CAR paths --- | |
| 44 | +paths=pd.read_parquet(f"{D}/event_car_paths.parquet") | |
| 45 | +fig,(ax1,ax2)=plt.subplots(1,2,figsize=(13,4.8),gridspec_kw={"width_ratios":[1.4,1]}) | |
| 46 | +for c,col in [("High",RED),("Mid",ORANGE),("Low",NAVY)]: | |
| 47 | + ax1.plot(paths.index,paths[c]*100,color=col,lw=1.8,label=f"{c} AI tercile") | |
| 48 | +ax1.axhline(0,color="k",lw=.7); ax1.axvline(pd.Timestamp("2022-11-30"),color="grey",ls="--",lw=1) | |
| 49 | +ax1.set_title("Cumulative Abnormal Return after ChatGPT,\nby pre-event AI disclosure (market-model)",fontweight="bold",fontsize=11) | |
| 50 | +ax1.set_ylabel("Mean CAR (%)"); ax1.legend(frameon=False) | |
| 51 | +ax1.tick_params(axis="x",rotation=30) | |
| 52 | +# H-L with horizon markers | |
| 53 | +ax2.plot(paths.index,paths["High_minus_Low"]*100,color="black",lw=2) | |
| 54 | +ax2.fill_between(paths.index,0,paths["High_minus_Low"]*100,color=RED,alpha=.15) | |
| 55 | +ax2.axhline(0,color="k",lw=.7); ax2.axvline(pd.Timestamp("2022-11-30"),color="grey",ls="--",lw=1) | |
| 56 | +ax2.set_title("High − Low AI CAR spread",fontweight="bold",fontsize=11) | |
| 57 | +ax2.set_ylabel("Spread (pp)"); ax2.tick_params(axis="x",rotation=30) | |
| 58 | +fig.tight_layout(); fig.savefig(f"{F}/fig8_event_car.png",bbox_inches="tight"); plt.close() | |
| 59 | + | |
| 60 | +# --- Fig 9: AI x Size double sort (pre vs post) --- | |
| 61 | +dpre=pd.read_csv(f"{T}/t6_double_sort_pre.csv",index_col=0) | |
| 62 | +dpost=pd.read_csv(f"{T}/t6_double_sort_post.csv",index_col=0) | |
| 63 | +fig,axes=plt.subplots(1,2,figsize=(12,4.6),sharey=True) | |
| 64 | +x=np.arange(3); w=.35; lab=["Lo","Mid","Hi"] | |
| 65 | +for ax,(tt,dd) in zip(axes,[("Pre-ChatGPT (2010–2021)",dpre),("Post-ChatGPT (2022–2024)",dpost)]): | |
| 66 | + ax.bar(x-w/2,dd.loc["Small",lab],w,label="Small firms",color=NAVY,edgecolor="k",lw=.5) | |
| 67 | + ax.bar(x+w/2,dd.loc["Large",lab],w,label="Large firms",color=ORANGE,edgecolor="k",lw=.5) | |
| 68 | + ax.set_xticks(x); ax.set_xticklabels(["Low AI","Mid AI","High AI"]); ax.set_title(tt) | |
| 69 | +axes[0].set_ylabel("Mean forward 12m return (%)"); axes[0].legend(frameon=False) | |
| 70 | +fig.suptitle("AI Disclosure × Firm Size Double Sort",fontweight="bold",y=1.02) | |
| 71 | +fig.tight_layout(); fig.savefig(f"{F}/fig9_double_sort.png",bbox_inches="tight"); plt.close() | |
| 72 | + | |
| 73 | +# --- Fig 10: Mega-cap exclusion robustness --- | |
| 74 | +mg=R2["mag7"] | |
| 75 | +labs=["Post baseline","Post ex-Mag7","Post ex-top10","Pre ex-Mag7"] | |
| 76 | +keys=["baseline_post","ex_mag7_post","ex_top10_post","ex_mag7_pre"] | |
| 77 | +vals=[mg[k][0]*100 for k in keys]; ts=[mg[k][1] for k in keys] | |
| 78 | +fig,ax=plt.subplots(figsize=(9,4.4)) | |
| 79 | +cols=[RED,RED,RED,NAVY] | |
| 80 | +b=ax.bar(labs,vals,color=cols,edgecolor="k",lw=.5) | |
| 81 | +for i,(v,t) in enumerate(zip(vals,ts)): ax.annotate(f"{v:+.1f}\n(t={t})",xy=(i,v),xytext=(0,4),textcoords="offset points",ha="center",fontsize=9) | |
| 82 | +ax.axhline(0,color="k",lw=.8); ax.set_ylabel("AI composite Q5−Q1 (pp)") | |
| 83 | +ax.set_title("Robustness: AI Return Spread Excluding Mega-Cap Winners",fontweight="bold") | |
| 84 | +fig.tight_layout(); fig.savefig(f"{F}/fig10_mag7.png",bbox_inches="tight"); plt.close() | |
| 85 | + | |
| 86 | +# --- Fig 11: event-time DiD coefficient profile --- | |
| 87 | +et=pd.DataFrame(R2["did_eventtime"]) | |
| 88 | +fig,ax=plt.subplots(figsize=(10,4.6)) | |
| 89 | +ax.errorbar(et.year,et.coef*100,yerr=et.se*100*1.96,fmt="o-",color=NAVY,capsize=3,lw=1.6) | |
| 90 | +ax.axhline(0,color="k",lw=.7); ax.axvline(2021.5,color=RED,ls="--",lw=1.2) | |
| 91 | +ax.annotate("ChatGPT",xy=(2021.55,ax.get_ylim()[1]*.8),color=RED,fontsize=9) | |
| 92 | +ax.set_title("Return Premium on Pre-Determined (2019–21) AI Exposure, by Year\n(event-study coefficients, 95% CI)",fontweight="bold") | |
| 93 | +ax.set_ylabel("Premium (pp per SD of fixed AI exposure)"); ax.set_xlabel("Formation year") | |
| 94 | +ax.set_xticks(et.year) | |
| 95 | +fig.tight_layout(); fig.savefig(f"{F}/fig11_eventtime.png",bbox_inches="tight"); plt.close() | |
| 96 | + | |
| 97 | +# --- Fig 12: AI score distribution by sector (boxplot) --- | |
| 98 | +order=df.groupby("sector")["ai_infrastructure_wmean"].median().sort_values().index.tolist() | |
| 99 | +data=[df[df.sector==s]["ai_adoption_wmean"].dropna().values for s in order] | |
| 100 | +fig,ax=plt.subplots(figsize=(11,5)) | |
| 101 | +bp=ax.boxplot(data,vert=False,patch_artist=True,showfliers=False,widths=.6) | |
| 102 | +for patch in bp["boxes"]: patch.set_facecolor(NAVY); patch.set_alpha(.6) | |
| 103 | +for med in bp["medians"]: med.set_color(RED); med.set_linewidth(1.6) | |
| 104 | +ax.set_yticklabels(order); ax.set_xlabel("AI-adoption score (section-weighted cosine similarity)") | |
| 105 | +ax.set_title("AI-Adoption Disclosure Intensity by GICS Sector (2010–2026)",fontweight="bold") | |
| 106 | +fig.tight_layout(); fig.savefig(f"{F}/fig12_sector_box.png",bbox_inches="tight"); plt.close() | |
| 107 | + | |
| 108 | +# --- Fig 13: cross-sectional event CAR_1y vs pre-event AI exposure (binscatter) --- | |
| 109 | +car=pd.read_parquet(f"{D}/event_car.parquet").dropna(subset=["car_1y","ai_pre"]) | |
| 110 | +car=car.copy(); car["bin"]=pd.qcut(car.ai_pre,12,labels=False,duplicates="drop") | |
| 111 | +b=car.groupby("bin").agg(x=("ai_pre","mean"),y=("car_1y","mean")) | |
| 112 | +fig,ax=plt.subplots(figsize=(8.5,5)) | |
| 113 | +ax.scatter(b.x,b.y*100,color=NAVY,s=48,zorder=3) | |
| 114 | +z=np.polyfit(b.x,b.y*100,1); xs=np.linspace(b.x.min(),b.x.max(),50) | |
| 115 | +ax.plot(xs,np.polyval(z,xs),color=RED,lw=2) | |
| 116 | +ax.axhline(0,color="k",lw=.6) | |
| 117 | +ax.set_title(f"1-Year Abnormal Return after ChatGPT vs. Pre-Event AI Exposure\n(binned; slope ≈ {z[0]:.1f} pp per SD)",fontweight="bold") | |
| 118 | +ax.set_xlabel("Pre-event AI disclosure (FY2021, z-score)"); ax.set_ylabel("Market-model CAR, +1 year (%)") | |
| 119 | +fig.tight_layout(); fig.savefig(f"{F}/fig13_event_binscatter.png",bbox_inches="tight"); plt.close() | |
| 120 | + | |
| 121 | +print("figures 6-13 written") | |
added
scripts/09_make_tables_ext.py
+110 −0
@@ -0,0 +1,110 @@ | ||
| 1 | +"""09_make_tables_ext.py -- LaTeX fragments for the extended tables (correlation, placebo, | |
| 2 | +event study, double sort, robustness, DiD).""" | |
| 3 | +import json, pandas as pd, numpy as np | |
| 4 | +T="results/tables"; R="paper/tables" | |
| 5 | +R2=json.load(open(f"{T}/results2.json")); EV=json.load(open(f"{T}/results_event.json")) | |
| 6 | +def w(n,b): open(f"{R}/{n}.tex","w").write(b) | |
| 7 | + | |
| 8 | +# --- correlation matrix --- | |
| 9 | +c=pd.read_csv(f"{T}/t1b_correlations.csv",index_col=0) | |
| 10 | +lbl={"z_AI_ADOPT":"(1) AI adoption","z_AI_INFRA":"(2) AI infrastructure","z_AI_RISK":"(3) AI disruption risk", | |
| 11 | + "z_size":"(4) Size","z_mom":"(5) Momentum","fwd_ret":"(6) Forward return"} | |
| 12 | +c=c.rename(index=lbl,columns={k:f"({i+1})" for i,k in enumerate(c.columns)}) | |
| 13 | +rows="".join(f"{idx} & "+" & ".join(f"{c.loc[idx,col]:.2f}" for col in c.columns)+" \\\\\n" for idx in c.index) | |
| 14 | +w("tab_corr", r"""\begin{table}[H]\centering\small | |
| 15 | +\caption{Pearson correlations among standardized signals, controls, and the forward return.}\label{tab:corr} | |
| 16 | +\begin{tabular}{l"""+"r"*len(c.columns)+r"""}\toprule | |
| 17 | +& """+" & ".join(c.columns)+r""" \\\midrule | |
| 18 | +"""+rows+r"""\bottomrule | |
| 19 | +\end{tabular}\end{table}""") | |
| 20 | + | |
| 21 | +# --- placebo --- | |
| 22 | +pb=R2["placebo"] | |
| 23 | +rows="" | |
| 24 | +for n,v in pb.items(): | |
| 25 | + star="$^{\\dagger}$" if v["is_ai"] else "" | |
| 26 | + rows+=(f"{n}{star} & {v['pre'][0]*100:+.1f} \\tstat{{{v['pre'][1]:.2f}}} & {v['post'][0]*100:+.1f} \\tstat{{{v['post'][1]:.2f}}} " | |
| 27 | + f"& {v['interaction']:+.4f} \\tstat{{{v['interaction_t']:.2f}}} \\\\\n") | |
| 28 | +w("tab_placebo", r"""\begin{table}[H]\centering\small | |
| 29 | +\caption{Placebo test across all eight semantic factors. For each factor we report the Q5$-$Q1 forward-return spread (\%%/yr) in each sub-period and the coefficient on factor\,$z$\,$\times$\,Post-2022 (size/momentum controls, year-clustered SE). The post-ChatGPT jump is concentrated in AI-related factors ($\dagger$); ESG and climate go the other way.}\label{tab:placebo} | |
| 30 | +\begin{tabular}{lccc}\toprule | |
| 31 | +& \multicolumn{2}{c}{Q5$-$Q1 spread (\%%/yr)} & Interaction \\\cmidrule(lr){2-3} | |
| 32 | +Semantic factor & Pre (2010--21) & Post (2022--24) & $z\times$Post \\\midrule | |
| 33 | +%s\bottomrule | |
| 34 | +\end{tabular}\end{table}""" % rows) | |
| 35 | + | |
| 36 | +# --- event study --- | |
| 37 | +rows="" | |
| 38 | +hzlab={"car_60d":"+60 trading days","car_6m":"+6 months","car_1y":"+1 year","car_18m":"+18 months"} | |
| 39 | +for hz in ["car_60d","car_6m","car_1y","car_18m"]: | |
| 40 | + e=EV[hz] | |
| 41 | + rows+=f"{hzlab[hz]} & {e['High']:+.2f} & {e['Mid']:+.2f} & {e['Low']:+.2f} & {e['H_minus_L']:+.2f} & {e['t']:.2f} & {e['p']:.3f} \\\\\n" | |
| 42 | +xr=EV["xsec_reg_1y"]; xrs=EV["xsec_reg_1y_sectfe"] | |
| 43 | +w("tab_event", r"""\begin{table}[H]\centering\small | |
| 44 | +\caption{ChatGPT event study (event date 30 Nov 2022; market-model abnormal returns estimated over Jan--Oct 2022). Mean cumulative abnormal return (CAR, \%%) by pre-event AI-disclosure tercile (from the FY2021 10-K), and the High$-$Low difference with a Welch \textit{t}-test.}\label{tab:event} | |
| 45 | +\begin{tabular}{lrrrrrr}\toprule | |
| 46 | +Horizon & High & Mid & Low & High$-$Low & \textit{t} & \textit{p} \\\midrule | |
| 47 | +%s\midrule | |
| 48 | +\multicolumn{7}{l}{\footnotesize Cross-sectional regression, CAR(+1y) on pre-event AI exposure (per SD):}\\ | |
| 49 | +\multicolumn{7}{l}{\footnotesize\quad No sector FE: $%+.2f$\%% \tstat{%.2f}, $n=%d$, $R^2=%.3f$ \quad | |
| 50 | +With sector FE: $%+.2f$\%% \tstat{%.2f}}\\ | |
| 51 | +\bottomrule | |
| 52 | +\end{tabular}\end{table}""" % (rows, xr["ai_pre_coef"],xr["ai_pre_t"],xr["n"],xr["r2"],xrs["ai_pre_coef"],xrs["ai_pre_t"])) | |
| 53 | + | |
| 54 | +# --- double sort --- | |
| 55 | +dpre=pd.read_csv(f"{T}/t6_double_sort_pre.csv",index_col=0) | |
| 56 | +dpost=pd.read_csv(f"{T}/t6_double_sort_post.csv",index_col=0) | |
| 57 | +def dsrows(dd): | |
| 58 | + out="" | |
| 59 | + for sz in ["Small","Large"]: | |
| 60 | + out+=f"{sz} & {dd.loc[sz,'Lo']:.1f} & {dd.loc[sz,'Mid']:.1f} & {dd.loc[sz,'Hi']:.1f} & {dd.loc[sz,'Hi']-dd.loc[sz,'Lo']:+.1f} \\\\\n" | |
| 61 | + return out | |
| 62 | +w("tab_doublesort", r"""\begin{table}[H]\centering\small | |
| 63 | +\caption{AI~disclosure $\times$ size double sort: mean forward 12-month return (\%%). Within each size half, firms are split into AI terciles.}\label{tab:doublesort} | |
| 64 | +\begin{tabular}{lcccc}\toprule | |
| 65 | +& Low AI & Mid AI & High AI & Hi$-$Lo \\\midrule | |
| 66 | +\multicolumn{5}{l}{\textit{Panel A. Pre-ChatGPT (2010--2021)}}\\ | |
| 67 | +%s\midrule | |
| 68 | +\multicolumn{5}{l}{\textit{Panel B. Post-ChatGPT (2022--2024)}}\\ | |
| 69 | +%s\bottomrule | |
| 70 | +\end{tabular}\end{table}""" % (dsrows(dpre),dsrows(dpost))) | |
| 71 | + | |
| 72 | +# --- robustness combined --- | |
| 73 | +mg=R2["mag7"]; sg=R2["alt_signal"]; hr=R2["alt_horizon"]; sn=R2["sector_neutral"]; pca=R2["pca"] | |
| 74 | +def cellv(pair): | |
| 75 | + v,t=pair[0]*100,pair[1] | |
| 76 | + return f"{v:+.1f}"+(f" \\tstat{{{t:.2f}}}" if t==t else "") | |
| 77 | +def line(label,pre,post): | |
| 78 | + return f"{label} & {cellv(pre)} & {cellv(post)} \\\\\n" | |
| 79 | +body =r"\multicolumn{3}{l}{\textit{Panel A. Alternative signal definition (composite)}}\\"+"\n" | |
| 80 | +for k in ["wmean(base)","mean","top5pct"]: | |
| 81 | + body+=line({"wmean(base)":"Section-weighted (base)","mean":"Simple mean","top5pct":"Top-5\\% tail"}[k], sg[k]["pre"],sg[k]["post"]) | |
| 82 | +body+=r"\midrule\multicolumn{3}{l}{\textit{Panel B. Alternative holding horizon}}\\"+"\n" | |
| 83 | +body+=line("6-month forward return",hr["6m"]["pre"],hr["6m"]["post"]) | |
| 84 | +body+=line("24-month forward return",hr["24m"]["pre"],hr["24m"]["post"]) | |
| 85 | +body+=r"\midrule\multicolumn{3}{l}{\textit{Panel C. Construction / universe}}\\"+"\n" | |
| 86 | +body+=line("Sector-neutral composite",sn["pre"],sn["post"]) | |
| 87 | +body+=line("First principal component",pca["pre"],pca["post"]) | |
| 88 | +body+=f"Excl.\\ Magnificent-7 & {mg['ex_mag7_pre'][0]*100:+.1f} \\tstat{{{mg['ex_mag7_pre'][1]:.2f}}} & {mg['ex_mag7_post'][0]*100:+.1f} \\tstat{{{mg['ex_mag7_post'][1]:.2f}}} \\\\\n" | |
| 89 | +body+=f"Excl.\\ top-10 by market cap & --- & {mg['ex_top10_post'][0]*100:+.1f} \\tstat{{{mg['ex_top10_post'][1]:.2f}}} \\\\\n" | |
| 90 | +w("tab_robust", r"""\begin{table}[H]\centering\small | |
| 91 | +\caption{Robustness of the AI return spread (composite Q5$-$Q1, \%%/yr, Newey--West \textit{t}). The post-ChatGPT spread is stable across signal definitions, horizons, sector-neutralization, dimension reduction, and the exclusion of mega-cap winners.}\label{tab:robust} | |
| 92 | +\begin{tabular}{lcc}\toprule | |
| 93 | +& Pre (2010--21) & Post (2022--24) \\\midrule | |
| 94 | +%s\bottomrule | |
| 95 | +\end{tabular}\end{table}""" % body) | |
| 96 | + | |
| 97 | +# --- DiD --- | |
| 98 | +did=R2["did"] | |
| 99 | +w("tab_did", r"""\begin{table}[H]\centering\small | |
| 100 | +\caption{Difference-in-differences around ChatGPT. Dependent variable is the winsorized forward 12-month return; firm and year fixed effects; SE double-clustered by firm and year. Treatment is fixed at the firm's pre-event (2019--2021) AI exposure.}\label{tab:did} | |
| 101 | +\begin{tabular}{lcc}\toprule | |
| 102 | +& Treated$\times$Post & Exposure$\times$Post \\ | |
| 103 | +& (binary) & (continuous, per SD) \\\midrule | |
| 104 | +Coefficient & %.4f & %.4f \\ | |
| 105 | +\textit{t}-statistic & (%.2f) & (%.2f) \\ | |
| 106 | +N (firm-years) & %d & %d \\ | |
| 107 | +Firm \& Year FE & Yes & Yes \\\bottomrule | |
| 108 | +\end{tabular}\end{table}""" % (did["binary"]["coef"],did["continuous"]["coef"],did["binary"]["t"],did["continuous"]["t"],did["binary"]["n"],did["continuous"]["n"])) | |
| 109 | + | |
| 110 | +print("extended LaTeX tables written") | |
| 111 | ||