Files
signal-platform/reports/earnings-2b-sue-20260720-dolthub-final.json
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

350 lines
10 KiB
JSON

{
"generated_at": "2026-07-20T07:02:10.934892+00:00",
"snapshot": "C:\\Workspace\\signal-platform\\backtest_snapshots\\research.sqlite",
"snapshot_depth": {
"manifest": {
"schema_version": 1,
"snapshot": "research.sqlite",
"snapshot_resolved": "C:\\Workspace\\signal-platform\\backtest_snapshots\\research.sqlite",
"complete": true,
"finished_at": "2026-07-19T14:22:15.706192+00:00",
"ticker_count": 4650,
"ohlcv_row_count": 5081073,
"rank_only_count": 4144,
"sources": {
"pool": "source_snapshot"
},
"history_days": 5000,
"min_bars": 1262,
"fetch_ok": 505,
"fetch_fail": 1,
"limit": null,
"extra": {
"prod_symbols_at_start": 506,
"pool_size": 506,
"to_fetch": 506,
"source_symbols_only": true,
"benchmark_spy_rows": 2649
},
"live_counts": {
"ticker_count": 4650,
"ohlcv_row_count": 5081073,
"rank_only_count": 4144
}
},
"requested_symbols": 506,
"tradable_symbols": 505,
"missing_symbols": [],
"zero_bar_symbols": [
"RHM"
],
"bar_count": {
"min": 24,
"median": 2649,
"max": 2649
},
"symbols_with_pre2021_bars": 491,
"symbols_with_pre2021_bars_pct": 97.2,
"shallow_symbols_lt_1000_bars": [
{
"symbol": "SPCX",
"first_bar": "2026-06-12",
"last_bar": "2026-07-17",
"bars": 24
},
{
"symbol": "Q",
"first_bar": "2025-11-03",
"last_bar": "2026-07-17",
"bars": 176
},
{
"symbol": "PSKY",
"first_bar": "2025-08-07",
"last_bar": "2026-07-17",
"bars": 237
},
{
"symbol": "SNDK",
"first_bar": "2025-02-13",
"last_bar": "2026-07-17",
"bars": 357
},
{
"symbol": "GEV",
"first_bar": "2024-04-02",
"last_bar": "2026-07-17",
"bars": 575
},
{
"symbol": "SOLV",
"first_bar": "2024-04-01",
"last_bar": "2026-07-17",
"bars": 576
},
{
"symbol": "VLTO",
"first_bar": "2023-10-02",
"last_bar": "2026-07-17",
"bars": 700
},
{
"symbol": "KVUE",
"first_bar": "2023-05-04",
"last_bar": "2026-07-17",
"bars": 803
},
{
"symbol": "GEHC",
"first_bar": "2022-12-15",
"last_bar": "2026-07-17",
"bars": 898
}
],
"price_window": {
"min": "2016-01-04",
"max": "2026-07-17"
},
"benchmark_spy": {
"rows": 2649,
"min": "2016-01-04",
"max": "2026-07-17"
},
"gate_threshold": {
"min_tradable_symbols": 505,
"max_missing_or_zero_bar": 1,
"min_symbols_with_pre2021_bars_pct": 80.0,
"benchmark_min_rows": 1000,
"benchmark_must_begin_pre2021": true
},
"gate_pass": true
},
"data_quality": {
"window": {
"from": "2020-01-22",
"to": "2026-07-17"
},
"prod_symbols": 505,
"events": 12414,
"symbols_with_any_event": 504,
"symbols_with_ge8_announcements": 498,
"symbols_with_ge8_announcements_pct": 98.6,
"symbols_with_ge8_paired_announcements": 495,
"symbols_with_ge8_paired_announcements_pct": 98.0,
"events_with_actual_and_estimate": 12311,
"events_with_actual_and_estimate_pct": 99.2,
"duplicate_rows_in_table": 0,
"duplicate_rows_fetched": 0,
"restated_rows_fetched": 940,
"dedupe_policy": "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",
"events_per_symbol_year": {
"mean_active_span_rate": 4.08,
"expected": "approximately 4",
"far_off_rule": "active-span rate <2 or >6, plus zero-event symbols",
"far_off_count": 1,
"far_off_symbols": [
{
"symbol": "SPCX",
"events": 0,
"events_per_year": 0.0
}
]
},
"announcement_session": {
"recognised_bmo_amc_or_during": 11520,
"recognised_pct": 92.8,
"reliable": true,
"assessment": "usable"
},
"point_in_time_policy": "announce_date_plus_1_trading_day_for_all_events",
"sue_scaling": {
"primary": "eps_surprise_over_stdev_of_prior_8_surprises_min_4",
"fallback_trigger": "paired event coverage <50% or symbols with >=8 paired events <50%",
"fallback_needed": false,
"fallback_name": "not_used"
},
"backfill": {
"mode": "dolthub_public_bulk_clone",
"window": {
"from": "2020-01-22",
"to": "2026-07-17"
},
"coverage_amendment": {
"approved_by_user": true,
"reason": "FMP free tier blocks historical bulk earnings",
"original_start": "2016-01-04",
"amended_announcement_start": "2020-01-22"
},
"source": {
"repository": "https://www.dolthub.com/repositories/post-no-preference/earnings",
"commit": "9n0et3hpj9j7vue8f3qsldon3qa5sdjj",
"license": "CC-BY-SA-4.0",
"upstream_provider_documented": false
},
"bulk_windows_total": 1,
"bulk_windows_done": 1,
"bulk_requests_logged_total": 1,
"bulk_exports": 2,
"calendar": {
"raw_rows": 117482,
"universe_rows_in_window": 12342,
"deduped_rows_in_window": 12342,
"duplicate_rows": 0,
"restated_rows": 0
},
"eps_history": {
"raw_rows": 165050,
"universe_rows": 18515,
"deduped_rows": 18515,
"duplicate_rows": 0,
"restated_rows": 0,
"complete_actual_and_estimate": 18304
},
"pairing": {
"method": "minimum-cost monotonic alignment per symbol",
"allowed_announce_minus_period_end_days": [
-14,
90
],
"matched_calendar_events": 12271,
"unmatched_calendar_events": 71,
"unmatched_periods_in_pairing_window": 538,
"announce_minus_period_end_days": {
"min": -10,
"median": 30,
"max": 89
},
"pre_2020_eps_history_use": "trailing_surprise_stdev_only; never treated as an announcement or live signal event"
},
"duplicate_rows_logged_total": 0,
"restated_rows_logged_total": 940,
"conflicting_existing_rows": 940,
"conflicting_existing_fields": 1526,
"preserved_existing_fields": 2945,
"existing_enrichment_events_not_in_dolthub_calendar": 72,
"dedupe_policy": "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",
"events_in_window": 12414,
"events_with_actual_and_estimate": 12311,
"symbols_done": 506,
"symbols_universe": 506,
"symbols_with_dolthub_calendar": 504,
"symbols_without_dolthub_calendar": [
"RHM",
"SPCX"
],
"announce_date_range": {
"min": "2020-01-22",
"max": "2026-07-17"
},
"complete": true
}
},
"production_impact": "none",
"experiment": "2b",
"result": {
"verdict": "FAIL",
"verdict_detail": "SUE DEAD for this stack",
"grade_rule": {
"mean_ic_ge_0_03_positive": false,
"reliable_ge_12_windows": true,
"positive_sign_pre_and_post_2021": true,
"pass": false
},
"sue_unconditional": {
"signal": "sue_latest",
"weeks": 56,
"avg_cross_section": 451.4,
"mean_ic": 0.0151,
"ic_t_stat": 1.29,
"ic_positive_pct": 51.8,
"mean_quintile_spread": 0.0041,
"reliable": true
},
"era_split": {
"pre_2021": {
"signal": "sue_latest",
"weeks": 9,
"avg_cross_section": 398.3,
"mean_ic": 0.0286,
"ic_t_stat": 0.7,
"ic_positive_pct": 55.6,
"mean_quintile_spread": 0.0084,
"reliable": false
},
"post_2021": {
"signal": "sue_latest",
"weeks": 48,
"avg_cross_section": 461.9,
"mean_ic": 0.0172,
"ic_t_stat": 1.34,
"ic_positive_pct": 64.6,
"mean_quintile_spread": 0.0038,
"reliable": true
}
},
"signal_eval_identical_cross_sections": {
"sue_latest": {
"signal": "sue_latest",
"weeks": 56,
"avg_cross_section": 450.9,
"mean_ic": 0.0148,
"ic_t_stat": 1.27,
"ic_positive_pct": 51.8,
"mean_quintile_spread": 0.004,
"reliable": true
},
"mom_12_1": {
"signal": "mom_12_1",
"weeks": 56,
"avg_cross_section": 450.9,
"mean_ic": 0.0195,
"ic_t_stat": 0.74,
"ic_positive_pct": 58.9,
"mean_quintile_spread": 0.0104,
"reliable": true
},
"mom_12_1_resid": {
"signal": "mom_12_1_resid",
"weeks": 56,
"avg_cross_section": 450.9,
"mean_ic": 0.0262,
"ic_t_stat": 1.07,
"ic_positive_pct": 55.4,
"mean_quintile_spread": 0.0114,
"reliable": true
}
},
"identical_cross_section_definition": "same week-symbol-forward-return cells where sue_latest, mom_12_1, and mom_12_1_resid are all non-null",
"momentum_conditional_top_quintile": {
"mean_ic": 0.0213,
"ic_t_stat": 1.3,
"weeks": 56,
"avg_cross_section": 89.8,
"population": "top_mom_12_1_quintile_only"
},
"coverage": {
"symbols_with_live_sue": 501,
"avg_weekly_live_n_all_weeks": 453.1,
"avg_cross_section_n_scored_nonoverlap": 451.4,
"thin_cross_section_lt_100": false,
"warning": null
},
"scaling": {
"method": "eps_surprise_over_stdev_of_prior_8_surprises_min_4",
"fallback": "not_used",
"counts": {
"standard_scaled_events": 12149,
"events_scaled_from_period_history": 12149,
"price_fallback_events": 0,
"dropped_insufficient_trailing_history": 95,
"dropped_missing_period_alignment": 67,
"dropped_zero_stdev": 0
},
"pre_coverage_history_policy": "period-end EPS surprises may scale later events but are never treated as live signals without an announcement date",
"availability": "announce_date_plus_1_trading_day",
"carry_trading_days": 63
},
"universe_symbols": 505
}
}