Files
signal-platform/reports/earnings-2a-gap-20260720-dolthub-final.md
T
dennisthiessenandClaude Fable 5 c7c60a64f2 research: Task 2 closed — SUE dead, earnings gap informational
Earnings backfill sourced from the public DoltHub earnings repo at a
pinned commit rather than the FMP API: reproducible for anyone re-running
the study, and it burns no request quota. 12,414 events, 98.6% of symbols
with >=8 announcements, 99.2% paired actual/estimate, no keyed duplicates.

2a earnings-gap diagnostic: INFORMATIONAL, no filter shipped. The
pre-earnings cohort's right tail was better, so the registered
avoid-earnings condition failed. Note the raw 23/266 vs 115/574 incidence
gap is largely a duration confound -- severe losses stop out fast and have
less time to span an announcement -- so it is not evidence that holding
through earnings is safe.

2b SUE: FAIL against the pre-registered +0.03 bar (unconditional IC
+0.0151 over 56 reliable windows, momentum-conditional +0.0213). Signs
stable across eras, so this is a clean null rather than an ambiguous one,
consistent with post-earnings drift having decayed in large caps.

Closes the Tier-1 arc: Task 1 dead on deep evidence, Task 2 dead here,
Task 3 complete as diagnostic. No in-sample research thread remains open.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 21:10:46 +02:00

2.8 KiB

Earnings Task 2a - gap diagnostic

Data quality gate

Approved earnings window: 2020-01-22 to 2026-07-17. Source mode: dolthub_public_bulk_clone.

check result
Prod symbols requested / tradable 506 / 505
Manifest complete + live counts match True
Prod symbols with pre-2021 bars 491 (97.2%)
SPY benchmark depth 2649 rows, 2016-01-04 to 2026-07-17
Snapshot depth gate True
Bulk source windows / requests logged 1/1 / 1
Source repository / pinned commit https://www.dolthub.com/repositories/post-no-preference/earnings @ 9n0et3hpj9j7vue8f3qsldon3qa5sdjj
Source license / upstream provider documented CC-BY-SA-4.0 / False
Existing-source conflicts preserved 940 rows / 1526 fields
Symbols with >=8 announcements 498 (98.6%)
Symbols with >=8 paired announcements 495 (98.0%)
Events with estimate + actual 12311/12414 (99.2%)
Duplicate rows in keyed table 0
Duplicate / restated payload rows fetched 0 / 940
Mean announcements per active symbol-year 4.08 (expected about 4)
Symbols far off (<2 or >6/year, incl. zero) 1
Recognised BMO/AMC/during 92.8% (reliable=True)
Point-in-time policy announce_date_plus_1_trading_day_for_all_events
SUE price fallback not_used

Deduplication: UNIQUE(symbol, announce_date); normalise dot/dash symbols; retain one calendar row per key; preserve existing non-null session/EPS values from the prior FMP/Alpha Vantage partial backfill, then fill nulls and all remaining symbols from DoltHub; attach DoltHub period-end alignment

Far-off announcement-rate symbols: SPCX

Experiment 2a - earnings-gap risk diagnostic

Verdict: INFORMATIONAL. Report-only; no filter arm or implementation.

Trade cohort is restricted to the approved earnings-coverage window 2020-01-22 to 2026-07-17; 0 simulated trades outside that window were excluded.

cohort count fraction
Realized net R <= -1.0 266 -
Losses with announcement strictly inside hold 23 0.0865
All trades with announcement strictly inside hold 115 0.2003
Entry cohort count mean R median R win rate p05 R p95 R
Within 3 sessions before earnings 27 0.4837 -1.0265 0.3333 -1.1463 5.981
All other entries 547 0.2734 -0.8316 0.3565 -1.1228 4.5888

Tail deltas (pre minus other): p05=-0.0235, p95=1.3922.

Registered directional tail condition is not present.

Exit cohort count mean R median R win rate p05 R p95 R
Stops within 1 session after earnings 26 -0.6434 -0.9753 0.2308 -2.4614 1.1142
All other stops 433 -0.5035 -1.0278 0.1963 -1.1373 1.3591
All other exits 548 0.3273 -0.8361 0.3613 -1.0644 4.7224