Compare commits
2
Commits
main
...
127499eceb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
127499eceb | ||
|
|
d0c65b892c |
@@ -46,3 +46,4 @@ backtest_snapshots/
|
|||||||
# Rebuildable pickle caches are local accelerators, not decision evidence.
|
# Rebuildable pickle caches are local accelerators, not decision evidence.
|
||||||
reports/*.pkl
|
reports/*.pkl
|
||||||
reports/*.pk1
|
reports/*.pk1
|
||||||
|
reports/.cache/
|
||||||
|
|||||||
@@ -71,17 +71,57 @@ or depth changes the risk story.
|
|||||||
|
|
||||||
## Results
|
## Results
|
||||||
|
|
||||||
*(filled after run)*
|
Generated: `2026-07-19T14:07:37` · artifact
|
||||||
|
`reports/prod-book-universe-horizon-20260719-140737.json`
|
||||||
|
Snapshot: MacBook deep `research.sqlite` (506 prod + breadth prices; 2.39M raw
|
||||||
|
GTL candidates). Strategy knobs = live production (residual 80, 80/20 high-vol
|
||||||
|
rank, ATR trail 3×, hold 30, gate-reset, `fill_mode=close`).
|
||||||
|
|
||||||
| arm | universe | entry start | Sharpe | SE | CAGR % | max DD % | trades | notes |
|
> Survivorship: today's constituents backfilled. **Compare arms relatively.**
|
||||||
|---|---|---|---:|---:|---:|---:|---:|---|
|
> Absolute deep CAGR/Sharpe are not deployable forecasts.
|
||||||
| A | 505 | 2022-07-01 | | | | | | |
|
|
||||||
| B | 505+liquid | 2022-07-01 | | | | | | |
|
|
||||||
| C | 505 | 2016-07-01 | | | | | | |
|
|
||||||
| D | 505+liquid | 2016-07-01 | | | | | | |
|
|
||||||
|
|
||||||
---
|
| arm | universe | entries from | Sharpe | SE | CAGR % | max DD % | total ret % | trades | win % | vs SPY |
|
||||||
|
|---|---|---|---:|---:|---:|---:|---:|---:|---:|---:|
|
||||||
|
| **A** | 505 only | 2022-07-01 | **1.32** | 0.49 | **31.8** | **18.9** | +205 | 374 | 35.6 | +96.5 |
|
||||||
|
| **B** | 505 + liquid 1500 | 2022-07-01 | 0.14 | 0.50 | −1.8 | 55.3 | −7 | 706 | 29.3 | +95.0 |
|
||||||
|
| **C** | 505 only | 2016-07-01 | **0.88** | 0.31 | **16.7** | **24.4** | +369 | 763 | 36.7 | +257 |
|
||||||
|
| **D** | 505 + liquid 1500 | 2016-07-01 | −0.06 | 0.32 | −7.0 | 73.9 | −52 | 1567 | 28.0 | +254 |
|
||||||
|
|
||||||
|
Qualified longs: A 1 448 · B 6 587 · C 2 450 · D 11 551.
|
||||||
|
|
||||||
|
### Read (relative only)
|
||||||
|
|
||||||
|
1. **Same strategy, broader liquid universe kills the book** (A→B and C→D).
|
||||||
|
Sharpe collapses; DD roughly triples; win rate drops ~6–8pp; trade count
|
||||||
|
~doubles. This matches earlier breadth IC work: the production residual +
|
||||||
|
high-vol package is a **large-cap / prod-universe** edge, not a
|
||||||
|
“more names = better” edge.
|
||||||
|
|
||||||
|
2. **Longer history on 505 stays positive but softer** (A→C). Sharpe 1.32 → 0.88,
|
||||||
|
CAGR 32% → 17%, DD 19% → 24%. Still well above the liquid-breadth arms.
|
||||||
|
Levels are optimistic (survivorship); the useful message is “edge does not
|
||||||
|
vanish when 2018/2020 are included,” not “expect 17% CAGR forever.”
|
||||||
|
|
||||||
|
3. **Arm A vs older Phase‑A / short-window controls** (~Sharpe 1.7–2.1): this
|
||||||
|
matrix re-ranked on deep research.sqlite with a fixed entry start; numbers
|
||||||
|
need not match prior reports row-for-row. Use **this table for A–D
|
||||||
|
comparisons**, not for rewriting the production baseline number.
|
||||||
|
|
||||||
|
4. **No production change implied.** Keep the live ~505 universe. Do not broaden
|
||||||
|
the tradable set to liquid Nasdaq under current knobs without a new
|
||||||
|
pre-registered design (and almost certainly a different rank/tilt package).
|
||||||
|
|
||||||
## Verdict
|
## Verdict
|
||||||
|
|
||||||
**PENDING_HUMAN** after numbers land.
|
**Descriptive matrix complete.**
|
||||||
|
|
||||||
|
| question | answer from this matrix |
|
||||||
|
|---|---|
|
||||||
|
| Prod book @ ~4y / 505 | Positive (arm A) |
|
||||||
|
| Same + liquid Nasdaq | **No** — large degradation (arm B) |
|
||||||
|
| Prod book since 2016 / 505 | Still positive, milder (arm C) |
|
||||||
|
| Same + liquid Nasdaq deep | **No** — worst arm (arm D) |
|
||||||
|
|
||||||
|
**PENDING_HUMAN** only for whether to log “universe broaden under current knobs”
|
||||||
|
as rejected in the main research index. Strategy knobs unchanged either way.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,137 @@
|
|||||||
|
{
|
||||||
|
"generated_at": "2026-07-19T14:07:37.458454",
|
||||||
|
"snapshot": "/Users/taathde3/git/lab/signal_platform/backtest_snapshots/research.sqlite",
|
||||||
|
"snapshot_meta": {
|
||||||
|
"prod_universe_n": 506,
|
||||||
|
"price_symbols_n": 4654,
|
||||||
|
"raw_candidates": 2389258,
|
||||||
|
"liquid_top_n": 1500,
|
||||||
|
"liquid_min_price": 5.0,
|
||||||
|
"short_start": "2022-07-01",
|
||||||
|
"long_start": "2016-07-01"
|
||||||
|
},
|
||||||
|
"strategy": {
|
||||||
|
"note": "Live production knobs \u2014 no modifications",
|
||||||
|
"momentum": "residual_12_1 gate 80",
|
||||||
|
"rank": "residual_high_vol_blend_80_20",
|
||||||
|
"fill_mode": "close",
|
||||||
|
"cost_per_side": 0.001,
|
||||||
|
"exit": {
|
||||||
|
"mode": "atr_trailing",
|
||||||
|
"trailing_pct": 12.0,
|
||||||
|
"atr_multiplier": 3.0,
|
||||||
|
"hold_days": 30
|
||||||
|
},
|
||||||
|
"max_positions": 10,
|
||||||
|
"risk_per_trade": 0.01,
|
||||||
|
"reentry": "gate_reset"
|
||||||
|
},
|
||||||
|
"arms": [
|
||||||
|
{
|
||||||
|
"id": "A_prod_4y_505",
|
||||||
|
"label": "Prod book \u00b7 ~4y \u00b7 505 only",
|
||||||
|
"start": "2022-07-01",
|
||||||
|
"universe": "prod_505",
|
||||||
|
"n_candidates": 81626,
|
||||||
|
"n_qualified_longs": 1448,
|
||||||
|
"fill_mode": "close",
|
||||||
|
"ranking_key": "residual_high_vol_blend_80_20_score",
|
||||||
|
"exit_policy": "atr_trail3",
|
||||||
|
"hold_days": 30,
|
||||||
|
"sharpe": 1.32,
|
||||||
|
"sharpe_se": 0.49,
|
||||||
|
"cagr_pct": 31.8,
|
||||||
|
"max_drawdown_pct": 18.9,
|
||||||
|
"total_return_pct": 204.7,
|
||||||
|
"calmar": 1.68,
|
||||||
|
"trades": 374,
|
||||||
|
"win_rate": 35.6,
|
||||||
|
"n_returns": 1009,
|
||||||
|
"psr": 0.9965,
|
||||||
|
"start_date": "2022-07-01",
|
||||||
|
"end_date": "2026-07-13",
|
||||||
|
"spy_return_pct": 96.5,
|
||||||
|
"final_equity": 30467.86
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "B_prod_4y_505_liquid",
|
||||||
|
"label": "Prod book \u00b7 ~4y \u00b7 505 + liquid top-1500",
|
||||||
|
"start": "2022-07-01",
|
||||||
|
"universe": "prod_plus_liquid",
|
||||||
|
"n_candidates": 267579,
|
||||||
|
"n_qualified_longs": 6587,
|
||||||
|
"fill_mode": "close",
|
||||||
|
"ranking_key": "residual_high_vol_blend_80_20_score",
|
||||||
|
"exit_policy": "atr_trail3",
|
||||||
|
"hold_days": 30,
|
||||||
|
"sharpe": 0.14,
|
||||||
|
"sharpe_se": 0.499,
|
||||||
|
"cagr_pct": -1.8,
|
||||||
|
"max_drawdown_pct": 55.3,
|
||||||
|
"total_return_pct": -7.1,
|
||||||
|
"calmar": -0.03,
|
||||||
|
"trades": 706,
|
||||||
|
"win_rate": 29.3,
|
||||||
|
"n_returns": 1013,
|
||||||
|
"psr": 0.6107,
|
||||||
|
"start_date": "2022-07-01",
|
||||||
|
"end_date": "2026-07-17",
|
||||||
|
"spy_return_pct": 95.0,
|
||||||
|
"final_equity": 9287.52
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "C_prod_2016_505",
|
||||||
|
"label": "Prod book \u00b7 since 2016-07 \u00b7 505 only",
|
||||||
|
"start": "2016-07-01",
|
||||||
|
"universe": "prod_505",
|
||||||
|
"n_candidates": 190179,
|
||||||
|
"n_qualified_longs": 2450,
|
||||||
|
"fill_mode": "close",
|
||||||
|
"ranking_key": "residual_high_vol_blend_80_20_score",
|
||||||
|
"exit_policy": "atr_trail3",
|
||||||
|
"hold_days": 30,
|
||||||
|
"sharpe": 0.88,
|
||||||
|
"sharpe_se": 0.314,
|
||||||
|
"cagr_pct": 16.7,
|
||||||
|
"max_drawdown_pct": 24.4,
|
||||||
|
"total_return_pct": 369.4,
|
||||||
|
"calmar": 0.68,
|
||||||
|
"trades": 763,
|
||||||
|
"win_rate": 36.7,
|
||||||
|
"n_returns": 2519,
|
||||||
|
"psr": 0.9975,
|
||||||
|
"start_date": "2016-07-01",
|
||||||
|
"end_date": "2026-07-13",
|
||||||
|
"spy_return_pct": 256.9,
|
||||||
|
"final_equity": 46938.66
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "D_prod_2016_505_liquid",
|
||||||
|
"label": "Prod book \u00b7 since 2016-07 \u00b7 505 + liquid top-1500",
|
||||||
|
"start": "2016-07-01",
|
||||||
|
"universe": "prod_plus_liquid",
|
||||||
|
"n_candidates": 649305,
|
||||||
|
"n_qualified_longs": 11551,
|
||||||
|
"fill_mode": "close",
|
||||||
|
"ranking_key": "residual_high_vol_blend_80_20_score",
|
||||||
|
"exit_policy": "atr_trail3",
|
||||||
|
"hold_days": 30,
|
||||||
|
"sharpe": -0.06,
|
||||||
|
"sharpe_se": 0.316,
|
||||||
|
"cagr_pct": -7.0,
|
||||||
|
"max_drawdown_pct": 73.9,
|
||||||
|
"total_return_pct": -52.0,
|
||||||
|
"calmar": -0.1,
|
||||||
|
"trades": 1567,
|
||||||
|
"win_rate": 28.0,
|
||||||
|
"n_returns": 2523,
|
||||||
|
"psr": 0.4287,
|
||||||
|
"start_date": "2016-07-01",
|
||||||
|
"end_date": "2026-07-17",
|
||||||
|
"spy_return_pct": 254.1,
|
||||||
|
"final_equity": 4800.5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"survivorship_banner": "Today's constituents backfilled. Relative arm comparison only.",
|
||||||
|
"pending_human": true
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
# Production book × universe × horizon — results
|
||||||
|
|
||||||
|
Generated: `2026-07-19T14:07:37.458454`
|
||||||
|
|
||||||
|
> Survivorship: today's constituents backfilled. Compare arms relatively; do not treat deep CAGR/Sharpe levels as deployable forecasts.
|
||||||
|
|
||||||
|
## Arms
|
||||||
|
|
||||||
|
| arm | universe | entry start | Sharpe | SE | CAGR % | max DD % | ret % | trades | qual longs | span |
|
||||||
|
|---|---|---|---:|---:|---:|---:|---:|---:|---:|---|
|
||||||
|
| A_prod_4y_505 | prod_505 | 2022-07-01 | 1.32 | 0.49 | 31.8 | 18.9 | 204.7 | 374 | 1448 | 2022-07-01→2026-07-13 |
|
||||||
|
| B_prod_4y_505_liquid | prod_plus_liquid | 2022-07-01 | 0.14 | 0.499 | -1.8 | 55.3 | -7.1 | 706 | 6587 | 2022-07-01→2026-07-17 |
|
||||||
|
| C_prod_2016_505 | prod_505 | 2016-07-01 | 0.88 | 0.314 | 16.7 | 24.4 | 369.4 | 763 | 2450 | 2016-07-01→2026-07-13 |
|
||||||
|
| D_prod_2016_505_liquid | prod_plus_liquid | 2016-07-01 | -0.06 | 0.316 | -7.0 | 73.9 | -52.0 | 1567 | 11551 | 2016-07-01→2026-07-17 |
|
||||||
|
|
||||||
|
## Config (production, unchanged)
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"note": "Live production knobs \u2014 no modifications",
|
||||||
|
"momentum": "residual_12_1 gate 80",
|
||||||
|
"rank": "residual_high_vol_blend_80_20",
|
||||||
|
"fill_mode": "close",
|
||||||
|
"cost_per_side": 0.001,
|
||||||
|
"exit": {
|
||||||
|
"mode": "atr_trailing",
|
||||||
|
"trailing_pct": 12.0,
|
||||||
|
"atr_multiplier": 3.0,
|
||||||
|
"hold_days": 30
|
||||||
|
},
|
||||||
|
"max_positions": 10,
|
||||||
|
"risk_per_trade": 0.01,
|
||||||
|
"reentry": "gate_reset"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Snapshot
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"prod_universe_n": 506,
|
||||||
|
"price_symbols_n": 4654,
|
||||||
|
"raw_candidates": 2389258,
|
||||||
|
"liquid_top_n": 1500,
|
||||||
|
"liquid_min_price": 5.0,
|
||||||
|
"short_start": "2022-07-01",
|
||||||
|
"long_start": "2016-07-01"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
PENDING_HUMAN — descriptive matrix only; no auto promotion.
|
||||||
|
|
||||||
|
JSON: `reports/prod-book-universe-horizon-20260719-140737.json`
|
||||||
|
|
||||||
Reference in New Issue
Block a user