Thinking Fast, Trading Late: System One Decision Models vs the Market
Organizations: Independent Researcher · TailState Intelligence Ltd · Zanista AI Ltd · Increase Alpha, LLC
Abstract
Large language models (LLMs) read company news at scale, and backtests suggest that their readings predict stock returns. We ask how much of that predictability survives a test that rules out look-ahead, memorization and selection. We propose OLIVIA, a protocol for such tests: point-in-time inputs with company identities masked, selection on validation data only, an analysis plan frozen by cryptographic hash, and a test period unblinded once through a logged lock. We apply it to AI decision models, non-generative language models that return probabilities for typed questions, reading news about S&P 500 stocks: an open-weights model we fine-tuned on 2024-2025 data, three commercial models and standard baselines. The fine-tuned model's signal replicated on two validation quarters (daily information coefficients 0.055 and 0.065) but fell to 0.020 (t = 1.7) on the blinded January-July 2026 test. The commercial models' readings line up with the overnight move to the open (information coefficient 0.074 to 0.077) but not with the move after it, so the news is priced by the time a trader can act on it at the open. No model can tell over- from under-reaction, and no pre-registered strategy survives costs and a deflated Sharpe ratio. Commercial models identify masked companies in 62% to 74% of cases against a 28% baseline: masking hides names, not companies. The market reads the news first.
Figures & tables
| Safeguard | Guards against | In this study | A replication needs |
|---|---|---|---|
| O ne-time unblinding | Repeated looks at the test period | The 2026 prices were sealed behind a lock that checks the frozen hash; it released the test outcomes only after the freeze, to the frozen analyses, and logs every read | Sealed outcomes and a log of every access |
| L ook-ahead-free states | Inputs that were not public at the decision | Every input carries the time it became known; the news ends at 09:15 ET, a rounded time stamp counts from the end of its hour or day, and rolling statistics end the day before | An availability time for every input |
| I dentity masking | A model recalling what happened to a company it recognizes | Names, tickers, people, dates and price moves are removed; an independent scanner checks the result; a matched-distractor test measures recognition (Section ) | A masker, a leak check and a recognition test |
| V alidation-only selection | Choosing models, filters or thresholds on the test | Search and calibration on val-A; confirmation and the final selection on val-B | Two validation periods before the test |
| I mmutable plan | Changing hypotheses or tests after seeing results | The pre-registration and the analysis code were frozen by a SHA-256 hash and a version-control tag before any test-period call; later changes go to a dated, append-only deviations log | A hash, a tag and a deviations log |
| A udit trail | Unreported variants | Append-only ledgers of every evaluated variant (their count sets the bar of the deflated Sharpe ratio), of API spend and of every access to test-period data | A trial ledger kept from the first analysis |
| Laya-Fin (primary) | Anchor | ||||||
|---|---|---|---|---|---|---|---|
| Hypothesis | Estimate | 95% CI | Holm | Estimate | Verdict | ||
| H1 | [ , ] | not supported | |||||
| H1b | [ , ] | not supported | |||||
| H2 | — | not supported | |||||
| H3 | [ , ] | not supported | |||||
| H4 | [ , ] | not supported | |||||
| Val-B | Test | |||||
| Model | ||||||
| Trained and zero-shot | ||||||
| Laya-Fin | ||||||
| ( ) | ( ) | ( ) | ( ) | ( ) | ( ) | |
| anchor | ||||||
| ( ) | ( ) | ( ) | ( ) | ( ) | ( ) | |
| Decision point | SE | SE | Events | ||||
|---|---|---|---|---|---|---|---|
| Laya-Fin (primary) | |||||||
| D2, close (H2) | ( ) | ( ) | |||||
| D1, 10:00 | ( ) | ( ) | |||||
| D0, open | ( ) | — | — | — | |||
| Anchor (uninformative) | |||||||
| D2, close (H2) | ( ) | ( ) | |||||
| Laya-Fin | d1-ultra | Anchor | ||||
|---|---|---|---|---|---|---|
| Step | ||||||
| Panel A: the explanation ladder, out-of-sample of (%) | ||||||
| + ex-ante news (D0) | — | — | — | |||
| + same-day news | ||||||
| + explanation (reads the move) | — | — | — | — | ||
| share knowable before the open (%) | — | — | — | |||
| Sharpe ratio | |||||||
| Book | Holding | Gross | Net | Turnover | Break-even (bp) | Placebo pct. | DSR |
| Laya-Fin (primary) | |||||||
| S-CONV | D2 to | ||||||
| S-D0 | open to close | ||||||
| S-D0, gated | open to | ||||||
| S-D1 | 10:00 to close | ||||||
Appendix figures & tables9 assets
Supplementary material from the paper’s appendix.
Appendix
| Symbol | Meaning |
|---|---|
| D0, D1, D2 | Decision points: 09:15 ET before the open (pre-open reading); 10:00 ET after the first 30-minute bar and after the close (post-reaction readings). |
| val-A, val-B, test | 2025-07-01 to 2025-09-30; 2025-10-01 to 2025-12-31; 2026-01-02 to 2026-07-31. |
| Close-to-close, overnight (close to open) and intraday (open to close) returns, with ; Equation ( ). | |
| , | Abnormal return (market and leave-one-out sector removed, betas over 252 sessions to ); its ex-ante scale (1.4826 times the median absolute deviation over 126 sessions to , floored at the day’s cross-sectional 10th percentile). |
| ; | , the move in typical daily moves (clipped at ). |
| Outcomes after D0, D1 and D2: ; the move from 10:00 to the close; the move from the next open to the close of , each over its ex-ante volatility. |
| Model | IC val-B | IC test | Events | USD/1,000 | p50 (ms) | ||
|---|---|---|---|---|---|---|---|
| Laya-Fin | — | ||||||
| anchor | — | ||||||
| Laya zero-shot | |||||||
| d1-ultra | |||||||
| span-02 ‡ | |||||||
| drex-v2.0 |
| Model, cut | Events | Wald | BH | SE | SE | |||
|---|---|---|---|---|---|---|---|---|
| Laya-Fin, Top 100 | ( ) | ( ) | ||||||
| Laya-Fin, 101 to 250 | ( ) | ( ) | ||||||
| Laya-Fin, 251 to 500 | ( ) | ( ) | ||||||
| Laya-Fin, quantified | ( ) | ( ) | ||||||
| Laya-Fin, small move | ( ) | ( ) | ||||||
| Laya-Fin, press wire | ( ) | ( ) |
| Model, test | Estimate | 95% CI | SE | BH | Pooled | |
| Laya-Fin, H5 | — | — | ||||
| Laya-Fin, H6 | — | — | — | — | — | — |
| Laya-Fin, H7 | [ , ] | — | ||||
| Laya-Fin, H2-C, at | — | ( ) | ||||
| Laya-Fin, H2-C, increase | [ , ] | — | ||||
| Laya-Fin, H2-C, | — | ( ) |
| 10:00 | Half-life | ||||||||
| Panel A: convergence ladder (D0 events) | |||||||||
| Laya-Fin | — | ||||||||
| ( ) | ( ) | ( ) | ( ) | ( ) | ( ) | ( ) | ( ) | — | |
| d1-ultra | — | ||||||||
| ( ) | ( ) | ( ) | ( ) | ( ) | ( ) | ( ) | ( ) | — | |
| anchor | — | ||||||||
| Model, target | ECE | Log-loss skill | Brier skill | AUC | ECE before | ECE after | |
|---|---|---|---|---|---|---|---|
| Laya-Fin, | — | — | — | — | |||
| Laya-Fin, | — | — | — | — | |||
| Laya-Fin, | — | — | — | — | — | — | |
| Laya-Fin, , temperature scaling | — | — | — | — | |||
| anchor, | — | — | — | — | |||
| anchor, | — | — | — | — |