Files
signal-platform/reports/tr-rank-agreement-mechanism.json
T
dennisthiessenandClaude Opus 5 ebe9047403 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
2026-09-07 19:29:34 +02:00

106 lines
2.4 KiB
JSON

{
"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
]
}
}