research: survivorship sensitivity and total-return momentum investigation
Three questions answered against snapshot copies, with no production change. Step 1 — how sensitive is the backtest to the ranking universe? Restoring 85 S&P 500 constituents removed between 2021-06 and 2026-07 moves the same window from 2.09 Sharpe / 51.6% CAGR to 1.57 / 38.1%. The failed banks never reached either book (identical best/worst trade R), so this measures universe recomposition, not survivorship bias. The removals list is curated by hand with per-symbol sources; only three explicitly confirmed terminal events get marks, and four unresolved endings are reported as caveats rather than inferred. Step 2 — does a total-return basis change the ranking? Ordered lists differ on 1009 of 1009 evaluated dates, 4.56 replacements per date. The shift correlates with trailing implied yield (mean Spearman +0.79), which is strong evidence consistent with a dividend effect but does not isolate own-yield, since both the stock and benchmark legs change. Step 3a — does that reach P&L? A paired replay reusing one shared candidate set (control reproduces the production row exactly) changes ~30% of entries. Treatment is -3.7pp CAGR and -1.9pp drawdown, with the entire return gap in 2025. A paired moving-block bootstrap (seed 20260907, 5000 replicates, 21/63 blocks, both reported) puts every interval across zero. Decision: production stays unchanged. No schema, no ingestion, no wider sweep. The observed window does not resolve which basis is better, and choosing a threshold now — with -3.7pp on the table — would be fitting the rule to the answer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HAH7vVtn7qbcn1EVheecHQ
This commit is contained in:
1 parent
8453b87290
commit
ebe9047403
16 files changed
+442522
No files matched your search
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"generated_at": "2026-09-07T10:55:05.693160+00:00",
|
||||
"snapshot": "C:\\Workspace\\signal-platform\\backtest_snapshots\\survivorship-a.sqlite",
|
||||
"cache": "C:\\Workspace\\signal-platform\\backtest_snapshots\\tr-rank-cache.sqlite",
|
||||
"window": {
|
||||
"start": "2021-06-24",
|
||||
"end": "2026-07-02"
|
||||
},
|
||||
"universe_size": 505,
|
||||
"sample_every_n_sessions": 25,
|
||||
"result": {
|
||||
"what_it_measures": "Spearman correlation, per sampled date, between a name's trailing 12-month implied yield (from the ALL/SPLIT ratio over the formation window) and the change in its momentum percentile between the two arms.",
|
||||
"caveat": "Both the stock series and the benchmark leg change between arms, so this is strong evidence consistent with a dividend effect - it does not isolate the stock's own yield from the beta-weighted benchmark yield.",
|
||||
"formation_window_bars": 252,
|
||||
"min_symbols_per_date": 30,
|
||||
"sampled_dates": 40,
|
||||
"sample_date_list": [
|
||||
"2022-07-28",
|
||||
"2022-09-01",
|
||||
"2022-10-07",
|
||||
"2022-11-11",
|
||||
"2022-12-19",
|
||||
"2023-01-26",
|
||||
"2023-03-03",
|
||||
"2023-04-10",
|
||||
"2023-05-15",
|
||||
"2023-06-21",
|
||||
"2023-07-27",
|
||||
"2023-08-31",
|
||||
"2023-10-06",
|
||||
"2023-11-10",
|
||||
"2023-12-18",
|
||||
"2024-01-25",
|
||||
"2024-03-01",
|
||||
"2024-04-08",
|
||||
"2024-05-13",
|
||||
"2024-06-18",
|
||||
"2024-07-25",
|
||||
"2024-08-29",
|
||||
"2024-10-04",
|
||||
"2024-11-08",
|
||||
"2024-12-16",
|
||||
"2025-01-24",
|
||||
"2025-03-03",
|
||||
"2025-04-07",
|
||||
"2025-05-13",
|
||||
"2025-06-18",
|
||||
"2025-07-25",
|
||||
"2025-08-29",
|
||||
"2025-10-06",
|
||||
"2025-11-10",
|
||||
"2025-12-16",
|
||||
"2026-01-23",
|
||||
"2026-03-02",
|
||||
"2026-04-07",
|
||||
"2026-05-12",
|
||||
"2026-06-17"
|
||||
],
|
||||
"mean_spearman_yield_vs_percentile_shift": 0.7924,
|
||||
"min": 0.7138,
|
||||
"max": 0.8459,
|
||||
"per_date_spearman": [
|
||||
0.7814,
|
||||
0.7933,
|
||||
0.8216,
|
||||
0.8325,
|
||||
0.8108,
|
||||
0.8147,
|
||||
0.8074,
|
||||
0.8421,
|
||||
0.7867,
|
||||
0.7907,
|
||||
0.7682,
|
||||
0.7568,
|
||||
0.7849,
|
||||
0.7536,
|
||||
0.7138,
|
||||
0.7385,
|
||||
0.7414,
|
||||
0.7697,
|
||||
0.8078,
|
||||
0.8325,
|
||||
0.8132,
|
||||
0.8459,
|
||||
0.8397,
|
||||
0.7966,
|
||||
0.7808,
|
||||
0.8285,
|
||||
0.8068,
|
||||
0.8376,
|
||||
0.7974,
|
||||
0.8256,
|
||||
0.8046,
|
||||
0.7762,
|
||||
0.8008,
|
||||
0.8046,
|
||||
0.7793,
|
||||
0.7978,
|
||||
0.7678,
|
||||
0.7549,
|
||||
0.7501,
|
||||
0.7384
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user