REVIEW REPORT — Editorial board, 2026-10-17
WP 17 — 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 (Kammoun, Tandjambianda, Boucher). Version reviewed: 1.0 (June 2026, 39 p.,
docs/main_pre-revision-20261017.pdf). Version produced: 1.1 (October 2026, 54 p., paper/main.pdf). Board composition for this
paper: empirical asset pricing, textual analysis / NLP in finance, accounting and disclosure, panel econometrics. Target
journals considered: JFE, RFS, JF, JFQA, Review of Accounting Studies, JAR, Journal of Empirical Finance, Finance Research
Letters, IRFA. The audit trail of every change is in docs/CHANGELOG-REVISION.md.
1. Summary verdict
The paper asks a good question with a genuinely useful measurement technology, and its timing design (filing year Y → July Y+1 to June Y+2) is look-ahead-free. But the June 2026 draft contained one factual misdescription of the data serious enough to invalidate the paper as written, and several inferential overstatements that together turned a thin, one-cohort result into a "regime change" narrative. Specifically:
- The corpus is not what the paper said it was. The text, abstract, tables and appendix describe "the full text of annual
reports (Form 10-K), parsed section by section", filed in February–March of Y+1. Inspection of the EDGAR Research Database
shows that the scoring engine had processed only Form 8-K current reports (103,926, all 500 firms) and 3,710 Form 10-Q
reports belonging to 84 alphabetically contiguous firms (SMCI→ZTS); zero 10-K filings were parsed, and
fiscal_yearis the calendar year of the filing date. The AI measure is therefore a measure of announcement language (median 28 chunks per firm-year, two chunks per 8-K), and 16 % of firm-years get a mechanical boost (+0.67 SD on the composite z-score, t = 6.7) from the presence of a scored 10-Q. The look-ahead argument survives (gap ≥ 6 months), but the whole description of the measurement had to be rewritten, and the headline results re-estimated on an 8-K-only signal (they hold: +1.6 → +16.3 pp). - The post-2022 "regime" rests on one cohort. The three post-launch cohorts earned +9.3, −4.0 and +38.4 pp. The draft wrote "uniformly large and positive for every post-2022 cohort", which its own Figure 3 contradicts. Without the 2024 cohort the post-period spread is +2.6 pp, equal to the pre-period. Winsorizing returns halves the pooled post spread (+14.7 → +7.2 pp) because three memory/storage stocks (WDC, MU, STX) returned +600 % to +970 % in the 2024 cohort.
- The post-period Newey–West t-statistics (2.07–2.44) are computed on three annual observations and carry no information. Inference was re-based on 36 monthly long-short returns (HAC t = 2.20, Sharpe 1.32) and on pooled firm-clustered tests.
- The signal is largely a technology-sector bet after 2022. Adding an IT-sector factor built from the panel reduces the post-period FF6 alpha from 5.2 % (t 1.72) to 1.9 % per year (t 0.86), with β_TECH = 0.47; sector dummies halve the Fama–MacBeth slope (5.5 → 2.9, t 1.4); sector×year FE leave +1.3 (t 1.2); the sector-neutral sort gives +3.8 (t 0.8).
- A coding error produced degenerate standard errors in the event-time DiD (clustering by year on year-specific coefficients: SE ≈ 0.001, t ≈ 20–30). With firm-clustered SEs the pre-launch premium on fixed exposure is significantly positive in 2015 (+3.9, t 2.8) and 2016 (+3.0, t 2.3), as large as in 2022 (+3.4); the "flat pre-trend" claim is withdrawn.
- The event-study inference ignored cross-sectional dependence (single event date; Welch t = 1.97). Dependence-robust portfolio tests give t = 2.28 at one year but only 1.35 at sixty days — the horizon at which an attention shock should show.
After revision the paper's defensible claim is narrower: AI language in current reports was essentially unpriced in 2010–2021, became strongly related to returns in the 2024 cohort and modestly in 2022, mostly through the technology sector and persistent firm-level exposure; this is consistent with a sector-level re-rating during the AI investment cycle, not with a stable premium or a sharp attention shock. We regard the revised paper as an honest and useful working paper, publishable in a field journal after the extensions in §7 are done, but not yet competitive at a top-three finance journal.
2. Diagnosis by section
| Section | Strengths | Weaknesses found | Action |
|---|---|---|---|
| Abstract | Clear question, clear design | 10-K claim false; "sextuples", "exceptional"; Sharpe 0.15/1.33 from an unversioned file; t = 1.97 presented as significant | Rewritten (corpus, numbers, tone) |
| Introduction | Good motivation, four-angle structure | "every post-2022 cohort"; "the very same sort"; Mag-7 argument correct but beside the point (the drivers are mid-caps); contribution overstated | Rewritten; third contribution now = the fragility analysis |
| Literature | Well chosen core references | No embedding-based disclosure papers (Hanley–Hoberg, Li et al.), no FinBERT, no multiple-testing or event-study-inference literature, no survivorship reference; Acemoglu key mislabelled | 21 verified references added; new §2.6 on short samples and event-study inference; hypotheses sharpened |
| Data | Timing convention sound; within-year standardization appropriate | Corpus misdescribed; "fiscal year" wrong; persistence numbers unsourced; survivorship under-discussed; no equations for the measure | §3.1 rewritten with Table 1 (corpus); equations (1)–(5); new §3.4 universe; persistence verified (0.883/0.726) |
| Methodology | Six complementary designs | One equation; no discussion of 3-observation inference, 15 year clusters, cross-sectional dependence; event-time clustering error | 15 numbered equations; inferential limits explicit; TECH factor; CDA statistic |
| Results | Tables clean, figures informative | Cohort claim false; interaction coefficients in decimals; Sharpe unsourced; outliers not examined; "largest single-theme effect in the recent record" | New Table 9 (cohorts, leave-one-out, pooled raw/winsorized, monthly series with TECH); economic-significance section rewritten |
| Robustness | Broad battery | Placebo ignores that cybersecurity (+13.5) and automation (+7.2) also rise and that both anchors mention AI; event study independence; DiD SE bug; 6-month horizon "holds" with +1.1 pp on 2 cohorts; no 8-K-only or entrant checks | Table 13 (CDA), Table 16 (8-K-only, entrants, break definition, sector), §6.3 rewritten, 6-month claim corrected |
| Discussion | Thoughtful mechanism discussion | Mechanism (attention shock) not supported by timing (effect peaks 2.5 years after launch, weak at 60 days / 6 months) | Rewritten around sector-cycle interpretation; limitations ranked |
| Conclusion | — | Overstated | Rewritten; next steps: score 10-Ks, point-in-time index, new cohorts |
| Appendix | Variable table | No anchor texts; reproducibility section generic | Exact anchor texts; corpus composition and the 84 tickers; reproducibility updated |
| Tables | Generated by scripts (05/09), then hand-polished | Two template fragments with fictitious numbers (125,400 obs.) in the repo; 10-K wording; mixed units | Fragments deleted; notes corrected; units harmonized |
| Bibliography | Correct entries | No DOIs; two working papers now published/updated | 57 entries, 56 DOIs, all Crossref-verified |
3. Methodology — verdict on each point of the master prompt §3
- Specification justified: yes for sorts, FM, panel; the DiD "treatment" (pre-determined exposure × Post) is a reasonable device but parallel trends fail (2015–2016 premia). Documented.
- Estimation assumptions explicit: now yes (equations 1–15; HAC lags; cluster dimensions; estimation/event windows).
- Variables correctly defined: corrected (filing year; 8-K/10-Q; composite; TECH; pre-determined exposure).
- Fixed effects appropriate: firm + year FE absorb the persistent signal by construction — correctly interpreted as a finding about levels vs changes; sector×year FE added as the relevant alternative.
- Temporal dependence: annual holding windows do not overlap (12-month return, annual formation), so NW(3) on annual spreads is defensible for the 15-year series; it is meaningless for 3 observations — replaced. Monthly LS returns do overlap in membership but not in time; HAC(3) is adequate.
- Standard errors: double clustering with 15 year clusters is thin (Petersen 2009; Thompson 2011) — now stated, with firm-clustered alternatives. Event-time clustering corrected. Event-study dependence corrected.
- Sample construction transparent: now yes (Table 1, Appendix C, §3.4).
- Robustness addresses genuine threats: the original battery addressed mega-caps, signal construction, horizon, PCA; it did not address corpus composition, entrants, sector factor, outliers, break definition — all added.
- Coefficient interpretation: units fixed; monthly vs annual spread difference explained (monthly rebalancing caps compounding of extreme winners).
- Statistical vs economic significance: Sharpe standard error (~0.58) now stated; winsorized spread given as the better summary.
- Causal claims: removed; "consistent with" language throughout.
4. Literature — references verified / added / removed
All 36 original entries were verified on Crossref (DOI resolved; author, journal, volume, pages checked) and received DOIs;
cong2022textfactor, kelly2019textregression, lopezlira2023risk, webb2020, reimers2019sbert, eisfeldt2023generative
were corrected or completed. 21 references were added (list and DOIs in the CHANGELOG §2); each is cited in the text where it
does work (embedding-based disclosure measurement; AI and markets; multiple testing; event-study inference; survivorship;
clustering; momentum factor). No reference was removed. MacKinlay (1997) has no Crossref DOI; JSTOR id noted.
5. Results — inconsistencies found and resolved
- Abstract +2.4 vs tables +2.5 for the pre-period composite spread (0.02449): harmonized to +2.5.
- "Sharpe 0.15 → 1.33" (unversioned
results_extra.json) vs recomputed 0.22 → 1.32 with cohort-consistent sub-periods. - Interaction coefficients 0.0199 etc. in decimals next to spreads in %: converted to pp/SD.
- 6- and 24-month post spreads shown without t (NaN, 2 cohorts): flagged.
- Caption of Fig. 3 ("uniformly positive") contradicted by the figure: corrected.
- README: "survivorship handled through point-in-time membership" contradicted the paper (current membership): corrected.
tab_panelnote "firm × year" FE (interaction) vs two-way (additive) FE: corrected.- Persistence 0.88/0.73 unsourced: verified (0.883/0.726) and versioned.
- Two template table fragments with fictitious numbers in
paper/tables/: deleted. - Figure axis labels "Fiscal year of 10-K": regenerated.
6. Remaining limitations (after revision)
- Three post-launch cohorts; one drives the average; last cohort ends with a partial month (prices to 17 June 2026).
- Corpus = 8-K + partial 10-Q; the original question about annual-report narrative is untested.
- Current-membership universe; exits not observed; return levels biased upward.
- AI language ≈ technology sector after 2022; within-sector premium positive but insignificant everywhere.
- Constant-shares market-cap proxy; Yahoo Finance rather than CRSP; French factors end April 2026 (34 of 36 post months).
- Single anchor set; sensitivity to anchor wording untested.
- Long-horizon market-model event study; DiD parallel trends violated.
- Multiple comparisons across 4 signals × 3 aggregations × 3 horizons × 8 placebo factors × sub-periods; no formal adjustment.
7. Recommended analyses NOT executed (and why)
| Analysis | Why not executed | What it would need |
|---|---|---|
| Score the 7,655 Form 10-K filings and re-run everything on annual-report text | Parsing + embedding of 88 GB of HTML; hours on the cluster; outside the < 30 min local rule and the no-download rule | project-db ingest pipeline on the EDGAR DB; then 02_build_panel.py on a 10-K panel |
| Point-in-time S&P 500 membership (historical constituents, exits) | Not available locally | CRSP/Compustat index constituents or a curated constituent-history file |
Alternative anchor sets (paraphrased anchors; keyword baseline; all-mpnet-base-v2) |
Requires re-embedding/re-scoring 491k chunks | EDGAR DB build_factors.py with modified anchors.py |
| External semiconductor/AI factor (SOX index, SMH) and CRSP-based size proxy | External downloads forbidden by protocol | Yahoo/CRSP download; add to 11_review_reanalysis.py block A |
| Weighting filings by chunk count in the annual aggregation (chunk-weighted score) | Needs chunk-level or filing-level scores for all firms; filing-level scores exported only by form type | Extend 10_filing_type_scores.py to export filing-level rows (107k rows, feasible, ~10 MB) |
| Block bootstrap / randomization inference on the break date | With 3 post cohorts the distribution is degenerate; placebo break dates on 12 pre cohorts would be informative | Add to 11_review_reanalysis.py (feasible, < 1 min) |
| Calendar-time portfolio with FF6 for the event study (Mitchell–Stafford) | Partly covered by the monthly LS series; daily factors not in repo | Daily French factors (download) |
| Additional post-2024 cohorts | Data do not exist yet | Re-run in July 2027 |
8. Maturity for publication
- Target venues: Finance Research Letters / Journal of Empirical Finance / IRFA as a short, cautious empirical note on the fragility of post-ChatGPT "AI factors"; Review of Accounting Studies / JAR would require the 10-K corpus and a point-in-time universe; JFE/RFS/JF would additionally require a longer post-period and a sharper identification of firm-level vs sector-level repricing.
- Rejection risks as it stands: (i) corpus composition (8-K + partial 10-Q) will be read as a data-quality problem even if honestly disclosed; (ii) one-cohort result; (iii) current-membership universe; (iv) sector confound; (v) the paper now partly reads as a critique of its own first version, which is right for a working paper but will need to be rewritten as a positive contribution ("how fragile are AI-text factors?") for submission.
- What would make it strong: the three not-executed items at the top of §7, plus one more year of data.
9. Integrity statement
No number in the revised paper was changed without a recomputation by a versioned script; the original files are preserved
(docs/original_report_*.tex, docs/main_pre-revision-20261017.pdf, tag pre-revision-20261017). The only change to an
original script is the clustering fix in 06_extended.py; all other blocks of its output are bit-identical. The revised text
states explicitly which claims of version 1.0 are withdrawn.