From a4d5ed7a93acf058d9fe4e3da89b3cbe490caf71 Mon Sep 17 00:00:00 2001 From: Dennis Thiessen Date: Sun, 19 Jul 2026 14:21:05 +0200 Subject: [PATCH] tests done --- docs/research/prod-book-universe-horizon.md | 19 +-- ...book-universe-horizon-20260719-140737.json | 137 ++++++++++++++++++ ...d-book-universe-horizon-20260719-140737.md | 54 +++++++ 3 files changed, 201 insertions(+), 9 deletions(-) create mode 100644 reports/prod-book-universe-horizon-20260719-140737.json create mode 100644 reports/prod-book-universe-horizon-20260719-140737.md diff --git a/docs/research/prod-book-universe-horizon.md b/docs/research/prod-book-universe-horizon.md index 070ad8f..b7110b0 100644 --- a/docs/research/prod-book-universe-horizon.md +++ b/docs/research/prod-book-universe-horizon.md @@ -71,17 +71,18 @@ or depth changes the risk story. ## Results -*(filled after run)* +Generated: `2026-07-19T14:07:37.458454` -| arm | universe | entry start | Sharpe | SE | CAGR % | max DD % | trades | notes | -|---|---|---|---:|---:|---:|---:|---:|---| -| A | 505 | 2022-07-01 | | | | | | | -| B | 505+liquid | 2022-07-01 | | | | | | | -| C | 505 | 2016-07-01 | | | | | | | -| D | 505+liquid | 2016-07-01 | | | | | | | +| arm | universe | entry start | Sharpe | SE | CAGR % | max DD % | trades | +|---|---|---|---:|---:|---:|---:|---:| +| A_prod_4y_505 | prod_505 | 2022-07-01 | 1.32 | 0.49 | 31.8 | 18.9 | 374 | +| B_prod_4y_505_liquid | prod_plus_liquid | 2022-07-01 | 0.14 | 0.499 | -1.8 | 55.3 | 706 | +| C_prod_2016_505 | prod_505 | 2016-07-01 | 0.88 | 0.314 | 16.7 | 24.4 | 763 | +| D_prod_2016_505_liquid | prod_plus_liquid | 2016-07-01 | -0.06 | 0.316 | -7.0 | 73.9 | 1567 | ---- +Full report: `reports/prod-book-universe-horizon-20260719-140737.json` ## Verdict -**PENDING_HUMAN** after numbers land. +**PENDING_HUMAN** — descriptive only; production knobs unchanged. + diff --git a/reports/prod-book-universe-horizon-20260719-140737.json b/reports/prod-book-universe-horizon-20260719-140737.json new file mode 100644 index 0000000..c76d2cf --- /dev/null +++ b/reports/prod-book-universe-horizon-20260719-140737.json @@ -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 +} diff --git a/reports/prod-book-universe-horizon-20260719-140737.md b/reports/prod-book-universe-horizon-20260719-140737.md new file mode 100644 index 0000000..4628100 --- /dev/null +++ b/reports/prod-book-universe-horizon-20260719-140737.md @@ -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` +