617 книг · 68 состояний · 68 цепочек · 617/617 завершено · 1.62 ч движка · config drift 0
обучение до 2026-08-29 · dev 2026-08-29 → 2026-08-31 · основное окно 2026-08-31 → 2026-09-05 · свежий holdout 2026-09-05 → 2026-09-07617 книг · 68 состояний · 68 цепочек · 617/617 завершено · 1.58 ч движка · config drift 0
обучение до 2026-08-29 · dev 2026-08-29 → 2026-08-31 · основное окно 2026-08-31 → 2026-09-05 · свежий holdout 2026-09-05 → 2026-09-07
B_tmo720__thm3__tp40__f77 · горизонт 720 минfrz_t20 · все гейты решаются на этом базисеB_tmo720__thm3__tp40__f77 · горизонт 720 минfrz_t20 · все гейты решаются на этом базисеПороги заморожены в context/00_PLAN.md
до запуска свипа. Всё решающее считается на общем потолке капитала; standalone-числа
без потолка публикуются, но решений не несут.
t20 по capped c50 $/день на обоих окнах. Победа на одном окне — INCONCLUSIVE.REGIME_LOADING: 268 · медиана доли среди прошедших P1: -9 % осн. / 12 % holdout · по всем рукам: 3 %$/день на $1k среднего капитала не хуже 0.95× контроля. Ось «дольше» по построению держит капитал дольше.n_eff после кластеризации по ключу за 30 мин ≥ 1000, и доля прибыльных падает не более чем на 3 пп между окнами.lib.metrics.MIN_OBS = 30 дневных наблюдений. Окна 264 — 5 и 2 дня.lib.metrics.MIN_OBS не достигнут ни на одном окне, Sharpe не публикуетсяt20 по capped c50 $/день на обоих окнах. Победа на одном окне — INCONCLUSIVE.REGIME_LOADING: 277 · медиана доли среди прошедших P1: -17 % осн. / 29 % holdout · по всем рукам: 2 %$/день на $1k среднего капитала не хуже 0.95× контроля. Ось «дольше» по построению держит капитал дольше.n_eff после кластеризации по ключу за 30 мин ≥ 1000, и доля прибыльных падает не более чем на 3 пп между окнами.lib.metrics.MIN_OBS = 30 дневных наблюдений. Окна 264 — 5 и 2 дня.lib.metrics.MIN_OBS не достигнут ни на одном окне, Sharpe не публикуетсяСводный вердикт свипа: REGIME_LOADING — преимущество не переживает бета-контроль. Через все пять решающих гейтов (P1–P5) прошли 0 рук из 616. Разбивка: NO_EDGE 348 · REGIME_LOADING 268 · CONTROL 1. P6 — не решающий гейт, а классификатор: он отделяет эдж от ёмкости и никого не продвигает. Ни одна рука этим отчётом не промотируется в деплой.Сводный вердикт свипа: REGIME_LOADING — преимущество не переживает бета-контроль. Через все пять решающих гейтов (P1–P5) прошли 0 рук из 616. Разбивка: NO_EDGE 339 · REGIME_LOADING 277 · CONTROL 1. P6 — не решающий гейт, а классификатор: он отделяет эдж от ёмкости и никого не продвигает. Ни одна рука этим отчётом не промотируется в деплой.
только форвард, с 31 авг · капитал как торговался
2026-09-07 18:00. Весь свип пересчитан на этой ленте;
подробности подставляются сюда при переключении. Разбор края — в секции «Лента до упора»,
популяционное сравнение двух лент — в «Что удлинение ленты сделало со всем свипом».
PnL реализуется в момент policy_exit на общей часовой сетке;
перцентильная полоса берётся по всем книгам свипа в каждый час, поэтому край полосы — это
не одна модель, и ни одна из опорных линий в неё не входит. Опорных линий четыре: рецепт
t20 и рецепт t26, переобученные на календаре 29/31, и те же две
боевые линии с замороженными весами, переигранные на этой же ленте. Переключатель
базы решает, относительно какой из них считается разница; в режиме разница она
становится нулевой линией. Переключатель ленты меняет прогон целиком: те же 617
точек, тот же календарь обучения, конец ленты сдвинут с 07.09 00:00 на
07.09 18:00 — и вместе с кривыми переключается весь свип: лидерборд справа,
KPI, гейты P1–P6, кривая горизонта и сетка θ/TP. Линия с замороженными весами рисуется
ровно до конца своего реплея и там обрывается с подписью, а не тянется плоско до края.
Полосы предпосчитаны в 02_analyze.py для каждой
комбинации переключателей. Кликабельна любая строка лидерборда: все кривые вшиты в
страницу как base64-дельты int16 и разжимаются по клику.
Взвешенный по времени задействованный капитал: каждый час — средние USD,
реально стоящие под риском, собранные поминутно по всем открытым позициям. На оси «дольше»
это не формальность: рука на 720 мин паркует тот же доллар вчетверо дольше, и именно здесь
ось платит за себя. Читать вместе с колонкой $/д на $1k — это гейт P3.
Строка — одна книга. гор. — LABEL_TIMEOUT_MIN, главная
ось эксперимента. Колонка вердикт — это результат последовательного применения
P1→P6 из 02_analyze.py, а не ранжирование по деньгам: NO_EDGE не
прошла P1, REGIME_LOADING прошла P1 и провалила бета-контроль P2,
CAPITAL_COST — P3, DRAWDOWN — P4, TOO_NARROW — P5,
CAPACITY_ONLY — P6. Метрики следуют за переключателем потолка капитала.
Срез лестница A+B — единственное место, где разница между
горизонтами есть разница в горизонте: один и тот же рецепт, одна ось, идентичный веер
5θ × 5TP на каждом горизонте. Срез все группы смешивает разметку, глубину и
гейты, поэтому он описывает свип, а не измеряет ось. Пунктирная линия — переобученный
контроль t20 на 180 мин.
Что говорит машина о форме этой кривой. Ниже — вывод lib.forensics.read_bin_curve на тех же двух массивах, что нарисованы выше (срез лестница A+B, агрегат по всем θ и TP). Ни одно утверждение о монотонности, плато или пике в тексте отчёта не сделано по картинке: если детектор молчит про тренд, значит тренда в этих числах нет, как бы линия ни выглядела. Колонка n — сколько книг стоит за каждой точкой; там, где она мала, форма — это шум одной книги.
FINDINGS (2 fired, 3 clean) [MED ] BIN/sample · 10 of 10 bins have n < 30 (min 25) — those points are noise [MED ] BIN/label_timeout_min-noisy · 75% of steps reverse direction — curve is not a trend median capped c50 $/day (paper) by label_timeout_min (10 bins) bin y n 180 3271.19 25 240 3611.61 25 300 2062.16 25 360 3352.18 25 420 3236.00 25 480 3450.54 25 540 2662.34 25 600 2993.52 25 720 3574.88 25 900 4342.25 25 CLEAN: monotone (rho +0.24), spread, interior-span (68%) NOTE: 10 bins · median capped c50 $/day (paper) 3,271 -> 4,342 · min 2,062 max 4,342
FINDINGS (2 fired, 3 clean) [MED ] BIN/sample · 10 of 10 bins have n < 30 (min 25) — those points are noise [MED ] BIN/label_timeout_min-noisy · 100% of steps reverse direction — curve is not a trend median capped c50 $/effective day (holdout) by label_timeout_min (10 bins) bin y n 180 361.1250 25 240 1077.4300 25 300 30.5619 25 360 2481.2900 25 420 -44.9963 25 480 3424.5600 25 540 671.2200 25 600 2483.4100 25 720 1497.4700 25 900 1951.9900 25 CLEAN: monotone (rho +0.45), spread, interior-span (100%) NOTE: 10 bins · median capped c50 $/effective day (holdout) 361.1 -> 1,952 · min -45 max 3,425
Что говорит машина о форме этой кривой. Ниже — вывод lib.forensics.read_bin_curve на тех же двух массивах, что нарисованы выше (срез лестница A+B, агрегат по всем θ и TP). Ни одно утверждение о монотонности, плато или пике в тексте отчёта не сделано по картинке: если детектор молчит про тренд, значит тренда в этих числах нет, как бы линия ни выглядела. Колонка n — сколько книг стоит за каждой точкой; там, где она мала, форма — это шум одной книги.
FINDINGS (2 fired, 3 clean) [MED ] BIN/sample · 10 of 10 bins have n < 30 (min 25) — those points are noise [MED ] BIN/label_timeout_min-noisy · 50% of steps reverse direction — curve is not a trend median capped c50 $/day (paper) by label_timeout_min (10 bins) bin y n 180 3271.19 25 240 3433.06 25 300 2048.44 25 360 3246.71 25 420 3326.71 25 480 3522.07 25 540 2635.67 25 600 3048.63 25 720 3575.24 25 900 4273.85 25 CLEAN: monotone (rho +0.39), spread, interior-span (69%) NOTE: 10 bins · median capped c50 $/day (paper) 3,271 -> 4,274 · min 2,048 max 4,274
FINDINGS (3 fired, 2 clean) [MED ] BIN/sample · 10 of 10 bins have n < 30 (min 25) — those points are noise [MED ] BIN/label_timeout_min-monotone · monotone in label_timeout_min (rho=+0.84): -2,581 -> 2,109 [MED ] BIN/label_timeout_min-noisy · 75% of steps reverse direction — curve is not a trend median capped c50 $/effective day (holdout) by label_timeout_min (10 bins) bin y n 180 -2580.930 25 240 -1624.020 25 300 -2772.320 25 360 -383.185 25 420 -1976.110 25 480 1163.260 25 540 -1127.400 25 600 1159.830 25 720 1290.110 25 900 2109.030 25 CLEAN: spread, interior-span (83%) NOTE: 10 bins · median capped c50 $/effective day (holdout) -2,581 -> 2,109 · min -2,772 max 2,109
Сетка — группа B (плюс контрольный горизонт 180 из A): полный веер 5θ × 5TP на каждом горизонте. Колонка θ −3.0 — это самый низкий порог дизайна, а не выключенный выход. Раньше в этом месте стояло «learned exit не срабатывает вообще»; книги это опровергают, и панель выше теперь печатает измеренные доли. Клетка θ −3.0 × без TP названа «чистый клок» по конфигу (θ на полу и без take-profit), но по факту клоком не является: выход всё равно срабатывает. Таких книг ровно по одной на состояние.
Если чистый клок на длинном горизонте зарабатывает столько же, сколько настроенные руки, то деньги идут от срока удержания, а не от модели, — и это ровно тот вывод, ради которого в плане стоит гейт P2. Сравнение ведётся на общем потолке капитала.
Форензика среза: клок против настроенных рук. Первый блок — сам чистый клок по горизонтам, второй — разность «чистый клок минус медиана настроенных» на том же горизонте. Второй и есть проверка беты: если разность не уходит вниз с ростом горизонта, модель выхода не добавляет ничего сверх времени удержания. Чистый клок — одна книга на горизонт, поэтому n = 1 в первой таблице, и любая её «форма» обязана читаться как единичное наблюдение, а не как кривая отклика.
FINDINGS (3 fired, 2 clean) [MED ] BIN/sample · 10 of 10 bins have n < 30 (min 1) — those points are noise [MED ] BIN/label_timeout_min-monotone · monotone in label_timeout_min (rho=+0.84): 2,707 -> 6,819 [MED ] BIN/label_timeout_min-noisy · 62% of steps reverse direction — curve is not a trend pure-clock capped c50 $/day (paper) by label_timeout_min (10 bins) bin y n 180 2706.88 1 240 3177.33 1 300 4146.96 1 360 3352.18 1 420 5013.76 1 480 3898.32 1 540 3786.07 1 600 5694.61 1 720 7452.14 1 900 6819.42 1 CLEAN: spread, interior-span (90%) NOTE: 10 bins · pure-clock capped c50 $/day (paper) 2,707 -> 6,819 · min 2,707 max 7,452
FINDINGS (3 fired, 2 clean) [MED ] BIN/sample · 10 of 10 bins have n < 30 (min 1) — those points are noise [MED ] BIN/label_timeout_min-monotone · monotone in label_timeout_min (rho=+0.81): -564.3 -> 2,477 [MED ] BIN/label_timeout_min-noisy · 62% of steps reverse direction — curve is not a trend pure clock MINUS tuned median, $/day by label_timeout_min (10 bins) bin y n 180 -564.31 1 240 -434.28 1 300 2084.80 1 360 0.00 1 420 1777.76 1 480 447.78 1 540 1123.73 1 600 2701.09 1 720 3877.26 1 900 2477.17 1 CLEAN: spread, interior-span (97%) NOTE: 10 bins · pure clock MINUS tuned median, $/day -564.3 -> 2,477 · min -564.3 max 3,877
Форензика среза: клок против настроенных рук. Первый блок — сам чистый клок по горизонтам, второй — разность «чистый клок минус медиана настроенных» на том же горизонте. Второй и есть проверка беты: если разность не уходит вниз с ростом горизонта, модель выхода не добавляет ничего сверх времени удержания. Чистый клок — одна книга на горизонт, поэтому n = 1 в первой таблице, и любая её «форма» обязана читаться как единичное наблюдение, а не как кривая отклика.
FINDINGS (3 fired, 2 clean) [MED ] BIN/sample · 10 of 10 bins have n < 30 (min 1) — those points are noise [MED ] BIN/label_timeout_min-monotone · monotone in label_timeout_min (rho=+0.84): 2,707 -> 6,908 [MED ] BIN/label_timeout_min-noisy · 62% of steps reverse direction — curve is not a trend pure-clock capped c50 $/day (paper) by label_timeout_min (10 bins) bin y n 180 2706.88 1 240 3095.89 1 300 3901.82 1 360 3208.49 1 420 4863.19 1 480 3895.89 1 540 3849.35 1 600 5621.33 1 720 7459.26 1 900 6908.37 1 CLEAN: spread, interior-span (92%) NOTE: 10 bins · pure-clock capped c50 $/day (paper) 2,707 -> 6,908 · min 2,707 max 7,459
FINDINGS (3 fired, 2 clean) [MED ] BIN/sample · 10 of 10 bins have n < 30 (min 1) — those points are noise [MED ] BIN/label_timeout_min-monotone · monotone in label_timeout_min (rho=+0.83): -564.3 -> 2,635 [MED ] BIN/label_timeout_min-noisy · 62% of steps reverse direction — curve is not a trend pure clock MINUS tuned median, $/day by label_timeout_min (10 bins) bin y n 180 -564.31 1 240 -337.17 1 300 1853.38 1 360 -38.22 1 420 1536.48 1 480 373.82 1 540 1213.68 1 600 2572.70 1 720 3884.02 1 900 2634.52 1 CLEAN: spread, interior-span (95%) NOTE: 10 bins · pure clock MINUS tuned median, $/day -564.3 -> 2,635 · min -564.3 max 3,884
Удаляются не три самых прибыльных токена руки, а три токена с
наибольшим вкладом в разность рука − контроль, знаково развёрнутую в сторону этой
разности. Разница принципиальная: длинная рука на растущей ленте держит тех же победителей,
что и контроль, поэтому ранжирование по абсолютному PnL удалило бы общие токены и почти не
тронуло дельту. доля сохраняет знак: отрицательная означает, что преимущество
не уменьшилось, а перевернулось. Порог — ≥ 50 % на обоих окнах.
Форензика распределения долей P2. lib.forensics.read_distribution по всем рукам, прошедшим P1. Смотреть надо не на медиану, а на левый хвост: доля ниже нуля означает, что после удаления трёх токенов преимущество не сжалось, а сменило знак — такая рука зарабатывала на трёх именах, а не на правиле. Порог 50 % отсекает по обоим окнам сразу.
FINDINGS (3 fired, 2 clean) [MED ] DIST/skew · skew = -8.84 — mean is not the typical outcome [MED ] DIST/kurtosis · excess kurtosis = 101.0 — fat tails [MED ] DIST/outliers · 43 values beyond 5x MAD (max 114.8) QUANTILES (P2 share of edge kept (paper)) q P2 share of edge kept (paper) 0.00 -114.808585 0.01 -36.654662 0.05 -11.638170 0.25 -1.330717 0.50 -0.076804 0.75 0.365905 0.95 0.613902 0.99 0.650073 1.00 0.679059 CLEAN: tail-mass (28.0%), zero-mass NOTE: n=270 · mean -2.233 · median -0.0768 · std 8.847 · total -603
FINDINGS (4 fired, 1 clean) [HIGH] DIST/tail-mass · top 1% (3 of 270) carry 97.1% of total magnitude [MED ] DIST/skew · skew = -16.41 — mean is not the typical outcome [MED ] DIST/kurtosis · excess kurtosis = 269.4 — fat tails [MED ] DIST/outliers · 28 values beyond 5x MAD (max 5,365) QUANTILES (P2 share of edge kept (holdout)) q P2 share of edge kept (holdout) 0.00 -5364.941362 0.01 -21.243513 0.05 -2.011422 0.25 -0.403253 0.50 0.116281 0.75 0.279079 0.95 0.418427 0.99 0.447678 1.00 0.469131 CLEAN: zero-mass NOTE: n=270 · mean -20.93 · median +0.1163 · std 326.6 · total -5,651
Форензика распределения долей P2. lib.forensics.read_distribution по всем рукам, прошедшим P1. Смотреть надо не на медиану, а на левый хвост: доля ниже нуля означает, что после удаления трёх токенов преимущество не сжалось, а сменило знак — такая рука зарабатывала на трёх именах, а не на правиле. Порог 50 % отсекает по обоим окнам сразу.
FINDINGS (3 fired, 2 clean) [MED ] DIST/skew · skew = -9.09 — mean is not the typical outcome [MED ] DIST/kurtosis · excess kurtosis = 99.4 — fat tails [MED ] DIST/outliers · 43 values beyond 5x MAD (max 204.5) QUANTILES (P2 share of edge kept (paper)) q P2 share of edge kept (paper) 0.00 -204.518559 0.01 -61.791534 0.05 -13.128056 0.25 -1.450585 0.50 -0.162471 0.75 0.365429 0.95 0.612953 0.99 0.652629 1.00 0.679059 CLEAN: tail-mass (37.5%), zero-mass NOTE: n=279 · mean -3.515 · median -0.1625 · std 16.02 · total -980.6
FINDINGS (3 fired, 2 clean) [MED ] DIST/skew · skew = -7.75 — mean is not the typical outcome [MED ] DIST/kurtosis · excess kurtosis = 73.8 — fat tails [MED ] DIST/outliers · 43 values beyond 5x MAD (max 23.4) QUANTILES (P2 share of edge kept (holdout)) q P2 share of edge kept (holdout) 0.00 -23.398777 0.01 -9.008962 0.05 -1.746172 0.25 0.060763 0.50 0.286754 0.75 0.373622 0.95 0.500777 0.99 0.603647 1.00 0.618663 CLEAN: tail-mass (24.9%), zero-mass NOTE: n=279 · mean -0.1745 · median +0.2868 · std 2.024 · total -48.7
Слева — цена длинного горизонта в капитале: $/день против среднего задействованного капитала на основном окне. Правило P3 (≥ 0.95× контроля по $/день на $1k) — это диагональ, а не потолок: рука имеет право быть дороже, только если столько же и заработала. Справа — просадка под общим потолком против $/день; правило P4 — не глубже 1.25× контроля.
Каждая ungated-книга сопоставлена с гейтованной книгой в той же точке
overlay — та же θ, тот же take-profit на состоянии-близнеце, чей рецепт совпадает с ней
во всём, кроме двух полей гейтов. Близнецы находятся сравнением самих рецептов, не по
руками составленному списку; в 264 ungated-руки живут на двух горизонтах, поэтому каждая
находит своего близнеца на своём горизонте, а не схлопывается на контроль.
×DD — отношение просадки к близнецу. Правило P6: снятие безопасно только
внутри 1.10× просадки близнеца при PnL не ниже его.
Обе строки живут внутри свипа — тот же движок, та же лента, тот же потолок капитала. Решающий базис — A_ctl__thm3__tp25__f77; t26 публикуется как вторая ссылка и решений не несёт.
| линия | сплит | рецепт | осн. 31 авг → 5 сен | holdout 5 → 7 сен | holdout, $/эфф. день | форвард | просадка | bp за $·ч | сделок | пик кап. | Jaccard входов |
|---|---|---|---|---|---|---|---|---|---|---|---|
ctl t20A_ctl__thm3__tp25__f77 | 08-31 / 09-05 | рецепт t20, переобученный на 29/31 · tmo 180 | $3,440 | $251 | $268 | $2,529 | −$4,434 | 143.0 | 1,115 | $39,738 | 0.47 к прод-t20 |
ctl t26A2_t26__thm1__tp40__f77 | 08-31 / 09-05 | рецепт t26 (C_tmo120), переобученный на 29/31 · tmo 120 | $886 | −$329 | −$343 | $539 | −$3,210 | 130.7 | 1,038 | $17,478 | 0.48 к прод-t20 |
| линия | сплит | рецепт | осн. 31 авг → 5 сен | holdout 5 → 7 сен | holdout, $/эфф. день | форвард | просадка | bp за $·ч | сделок | пик кап. | Jaccard входов |
|---|---|---|---|---|---|---|---|---|---|---|---|
| прод t20 веса заморожены · парити: стабильный префикс, сверен на пересечении окон (слабее) (н/д) | 08-19 / 08-21 | optimized_K4__r14_zm05 · tmo 180 · θ −3.0 · TP 0.25 · сплит 19/21 | $4,724 | $2,195 | $2,341 | $4,001 | −$2,470 | 168.6 | 1,346 | $39,730 | 136 · 231 бьют: осн. · holdout |
↳ A_ctl__thm3__tp25__f77группа A: тот же рецепт t20, переобученный на 29/31 | 08-31 / 09-05 | тот же рецепт, веса переобучены на свежем сплите | $3,440 -27 % | $251 -89 % | $268 | $2,529 -37 % | −$4,434 | 143.0 | 1,115 | $39,738 | 0.47 Jaccard входов |
| прод t26 веса заморожены · парити: стабильный префикс книги (слабее) (н/д) | 08-25 / 08-27 | C_tmo120__thm1__tp40 · tmo 120 · θ −1.0 · TP 0.40 · сплит 25/27 | $5,094 | $6,170 | $6,438 | $5,401 | −$1,808 | 309.7 | 1,275 | $31,849 | 112 · 111 бьют: осн. · holdout |
↳ A2_t26__thm1__tp40__f77группа A2: тот же рецепт t26, переобученный на 29/31 | 08-31 / 09-05 | тот же рецепт, веса переобучены на свежем сплите | $886 -83 % | −$329 -105 % | −$343 | $539 -90 % | −$3,210 | 130.7 | 1,038 | $17,478 | 0.51 Jaccard входов |
Обе боевые линии переигрываются с замороженными весами на том же снапшоте, что и весь свип, поэтому их числа сравнимы со свипом напрямую. Под каждой — рука свипа с тем же рецептом, переобученная на календаре 29/31: разница между этими двумя строками и есть цена переобучения, всё остальное совпадает. Колонка «бьют» — сколько книг свипа из 617 обошли линию на основном окне и на holdout (по эффективным дням). Окно 2026-08-29 → 2026-08-31 для прод-линий вне обучения, а для свипа это его калибровка, поэтому честно сравнивать можно только по основному окну, holdout и форварду.
2026-09-07 00:00:00 · снапшот /workspace/modelier/workspace/snapshots/shock_v2_20260907_0000_264 · режимы парити: t26 — стабильный префикс книги (слабее), t20 — стабильный префикс, сверен на пересечении окон (слабее) · без паденийt26: 3,492 входов, $53,611 итогового c50, порог 0.6960 · t20: 4,916 входов, $51,320 итогового c50, порог —Форензика самой контрольной кривой. lib.forensics.read_series на накопленной кривой переобученного контроля t20 — той самой линии, относительно которой считаются P1–P4. Если у контроля своя концентрация или свой режим, то и всякая дельта к нему наследует эту же проблему; это единственная причина, по которой блок стоит здесь, а не в приложении.
TIMEFRAME n=216 · 1h spacing (regular) · 9.0d span · 2026-08-29 00:00..2026-09-06 23:00 UTC FINDINGS (4 fired, 12 clean) [HIGH] DD/unrecovered · worst drawdown never recovered — 23.0h under water to end of series [HIGH] STRUCTURE/segment-dominance · one slow_grind segment holds 53.9% of total (2026-08-30 14:00..2026-09-06 00:00, 73.3% of elapsed time) [MED ] REGIME/sign-flip · 1 of 6 segments net-negative; worst -6,934.50 at 2026-09-06 01:00 [MED ] DD/anatomy · single worst row is 63% of max DD (-4,344.30 of -6,934.50) SHAPE slow_grind(27.0h, +332$/h) -> spike(+1.05e+04$ in 4.0h) -> slow_grind(4.0h, +510$/h) -> slow_grind(6.4d, +139$/h) -> steep_selloff(5.0h, -1.39e+03$/h) -> slow_grind(16.0h, +239$/h) DRAWDOWNS (worst 3) #1 -6,934 (-16.2%) · peak 2026-09-06 00:00 -> trough 2026-09-06 06:00 (6.0h) · NOT recovered #2 -4,344 (-14.6%) · peak 2026-08-31 21:00 -> trough 2026-08-31 22:00 (1.0h) · recovered in 41.0h #3 -2,043 (-5.0%) · peak 2026-09-05 01:00 -> trough 2026-09-05 05:00 (4.0h) · recovered in 9.0h STABILITY worst_half=+2676 evenness=1723.309 sign_consistency=0.88 best_chunk_share=0.355 CLEAN: top-trade, top-day, drop-top-3, gini, segment-spread, arrival, dd-depth (-6,934), dd-repeat, ladder, worst_half, sign-consistency, evenness
Обе строки живут внутри свипа — тот же движок, та же лента, тот же потолок капитала. Решающий базис — A_ctl__thm3__tp25__f77; t26 публикуется как вторая ссылка и решений не несёт.
| линия | сплит | рецепт | осн. 31 авг → 5 сен | holdout 5 → 7 сен | holdout, $/эфф. день | форвард | просадка | bp за $·ч | сделок | пик кап. | Jaccard входов |
|---|---|---|---|---|---|---|---|---|---|---|---|
ctl t20A_ctl__thm3__tp25__f77 | 08-31 / 09-05 | рецепт t20, переобученный на 29/31 · tmo 180 | $3,440 | −$2,521 | −$2,641 | $1,325 | −$4,434 | 143.0 | 1,115 | $39,738 | 0.47 к прод-t20 |
ctl t26A2_t26__thm1__tp40__f77 | 08-31 / 09-05 | рецепт t26 (C_tmo120), переобученный на 29/31 · tmo 120 | $886 | −$1,543 | −$1,591 | $24 | −$3,210 | 130.7 | 1,038 | $17,478 | 0.48 к прод-t20 |
| линия | сплит | рецепт | осн. 31 авг → 5 сен | holdout 5 → 7 сен | holdout, $/эфф. день | форвард | просадка | bp за $·ч | сделок | пик кап. | Jaccard входов |
|---|---|---|---|---|---|---|---|---|---|---|---|
| прод t20 веса заморожены · парити: точное совпадение популяций выходного референса (точное) | 08-19 / 08-21 | optimized_K4__r14_zm05 · tmo 180 · θ −3.0 · TP 0.25 · сплит 19/21 | $4,724 | −$39 | −$41 | $3,034 | −$2,470 | 168.6 | 1,346 | $39,730 | 133 · 268 бьют: осн. · holdout |
↳ A_ctl__thm3__tp25__f77группа A: тот же рецепт t20, переобученный на 29/31 | 08-31 / 09-05 | тот же рецепт, веса переобучены на свежем сплите | $3,440 -27 % | −$2,521 +6295 % | −$2,641 | $1,325 -56 % | −$4,434 | 143.0 | 1,115 | $39,738 | 0.47 Jaccard входов |
| прод t26 веса заморожены · парити: точное совпадение популяций выходного референса (точное) | 08-25 / 08-27 | C_tmo120__thm1__tp40 · tmo 120 · θ −1.0 · TP 0.40 · сплит 25/27 | $5,094 | $4,022 | $4,148 | $4,714 | −$1,808 | 309.7 | 1,275 | $31,849 | 108 · 100 бьют: осн. · holdout |
↳ A2_t26__thm1__tp40__f77группа A2: тот же рецепт t26, переобученный на 29/31 | 08-31 / 09-05 | тот же рецепт, веса переобучены на свежем сплите | $886 -83 % | −$1,543 -138 % | −$1,591 | $24 -99 % | −$3,210 | 130.7 | 1,038 | $17,478 | 0.51 Jaccard входов |
Обе боевые линии переигрываются с замороженными весами на том же снапшоте, что и весь свип, поэтому их числа сравнимы со свипом напрямую. Под каждой — рука свипа с тем же рецептом, переобученная на календаре 29/31: разница между этими двумя строками и есть цена переобучения, всё остальное совпадает. Колонка «бьют» — сколько книг свипа из 617 обошли линию на основном окне и на holdout (по эффективным дням). Окно 2026-08-29 → 2026-08-31 для прод-линий вне обучения, а для свипа это его калибровка, поэтому честно сравнивать можно только по основному окну, holdout и форварду.
2026-09-07 18:00:00 · снапшот /workspace/modelier/workspace/snapshots/shock_v2_20260907_1800_264 · режимы парити: t20 — точное совпадение популяций выходного референса, t26 — точное совпадение популяций выходного референса · без паденийt20: 4,824 входов, $47,153 итогового c50, порог 0.6914 · t26: 3,660 входов, $52,334 итогового c50, порог 0.6960Форензика самой контрольной кривой. lib.forensics.read_series на накопленной кривой переобученного контроля t20 — той самой линии, относительно которой считаются P1–P4. Если у контроля своя концентрация или свой режим, то и всякая дельта к нему наследует эту же проблему; это единственная причина, по которой блок стоит здесь, а не в приложении.
TIMEFRAME n=234 · 1h spacing (regular) · 9.7d span · 2026-08-29 00:00..2026-09-07 17:00 UTC
FINDINGS (6 fired, 10 clean)
[HIGH] REGIME/segment · rate spread 3.3x across segments: +331.9/h (2026-08-29 00:00) -> +101.1/h (2026-08-30 14:00)
verify: forensics.segment_series(t, cum)
[HIGH] DD/depth · max drawdown -10,613.70 = 33% of final total, trough 2026-09-07 16:00
verify: forensics.drawdown_table(t, level)
[HIGH] DD/unrecovered · worst drawdown never recovered — 41.0h under water to end of series
[HIGH] STRUCTURE/segment-dominance · one slow_grind segment holds 58.1% of total (2026-08-30 14:00..2026-09-07 08:00, 81.2% of elapsed time)
[MED ] CONCENTRATION/day · top-1 day = 43.5% of total (2026-08-30)
[MED ] REGIME/sign-flip · 1 of 5 segments net-negative; worst -7,896.50 at 2026-09-07 09:00
SHAPE slow_grind(27.0h, +332$/h) -> spike(+1.05e+04$ in 4.0h) -> slow_grind(4.0h, +510$/h) -> slow_grind(7.8d, +101$/h) -> steep_selloff(8.0h, -987$/h)
DRAWDOWNS (worst 3)
#1 -1.061e+04 (-24.7%) · peak 2026-09-06 00:00 -> trough 2026-09-07 16:00 (40.0h) · NOT recovered
#2 -4,344 (-14.6%) · peak 2026-08-31 21:00 -> trough 2026-08-31 22:00 (1.0h) · recovered in 41.0h
#3 -2,043 (-5.0%) · peak 2026-09-05 01:00 -> trough 2026-09-05 05:00 (4.0h) · recovered in 9.0h
STABILITY worst_half=+501.3 evenness=1027.675 sign_consistency=0.75 best_chunk_share=0.404
CLEAN: top-trade, drop-top-3, gini, arrival, dd-repeat, dd-single-row, ladder, worst_half, sign-consistency, evennessПерцентили считаются по книгам внутри выбранной популяции; колонки
контроль — это позиция самого контроля в этом распределении, а не отдельная
популяция. Популяция лестница — группы A+B, чистый клок —
книги с θ = −3.0 и без take-profit. Название историческое и вводит в заблуждение:
выход в этих книгах срабатывает, см. секцию «Срез „выход выключен“».
Медиана по всем книгам с данным уровнем оси. Это маргинальный, а не
причинный эффект: уровни не сбалансированы между группами, поэтому ось, встречающаяся
в основном внутри одной группы, наследует её уровень. Срез лестница — это
единственный сбалансированный срез в дизайне.
2026-09-07 00:00:00 (TAPE_CUTOFF_INCLUSIVE=False, контракт cf84ac8920a654f5). Движок отказывается открывать позицию, чей клок не помещается в ленту.policy_exit ≥ cutoff. Списывать в «−капитал» нечего: закрывать на границе нечего.cutoff − LABEL_TIMEOUT_MIN. Отрицательное значение означало бы обрезанную позицию; их нет.LABEL_TIMEOUT_MIN минут новых входов нет вообще. У контроля 180 м это 3 часа, у 900 м — 15. Хвост кривой в этой зоне не сопоставим ни с её телом, ни между руками; он заштрихован на графике.06.09 09:00, одинакового для всех горизонтов, лучшая рука даёт $10,476/день против $2,385/день у контроля 180 м. В отчётном окне это было ×3.67. Край ленты занижал длинные горизонты, а не завышал.Проверка идёт по книгам: 617 паркетов прочитаны целиком в
lib/08_tail_artifact_audit.py, lib/09_tail_hourly.py,
lib/10_starved_tail_control.py и lib/11_capital_clip_bias.py;
ни одно число здесь не снято с картинки. Реконструкция кривой из книг совпала с
нарисованной с точностью до шага квантования (max|Δ| = $0.5 на всех 216 часах).
| горизонт, м | книг | последний вход | запас, мин | открыто на cutoff | выход ≥ cutoff | худший pnl_frac |
|---|---|---|---|---|---|---|
| 120 | 25 | 2026-09-06 21:24 | +36.00 | 0 | 0 | -1.00 |
| 180 | 103 | 2026-09-06 20:53 | +7.00 | 0 | 0 | -1.00 |
| 240 | 25 | 2026-09-06 19:56 | +4.00 | 0 | 0 | -1.00 |
| 300 | 25 | 2026-09-06 18:39 | +21.00 | 0 | 0 | -1.00 |
| 360 | 115 | 2026-09-06 17:56 | +4.00 | 0 | 0 | -1.00 |
| 420 | 25 | 2026-09-06 16:58 | +1.25 | 0 | 0 | -1.00 |
| 480 | 25 | 2026-09-06 15:43 | +17.00 | 0 | 0 | -1.00 |
| 540 | 67 | 2026-09-06 14:51 | +9.00 | 0 | 0 | -1.00 |
| 600 | 31 | 2026-09-06 13:35 | +24.77 | 0 | 0 | -1.00 |
| 720 | 145 | 2026-09-06 11:57 | +3.00 | 0 | 0 | -1.00 |
| 900 | 31 | 2026-09-06 08:58 | +2.00 | 0 | 0 | -1.00 |
Столбец запас — минуты между последним входом книги и
cutoff − горизонт. Он положителен во всех 617 книгах, то есть движок
ни разу не открыл позицию, которая не успевала бы отработать клок до конца ленты.
Поэтому «активные позиции засчитаны как −капитал» — не про этот свип:
активных позиций на конце ленты попросту нет. Худший pnl_frac = −1.00
достигается, но это раги в середине ленты, а не списание на границе.
| горизонт, м | разгрузка, ч | $/ч хвост | $/ч тело | exit сработал хвост | тело | медиан. удержание хвост | тело | доля плюсовых хвост | тело |
|---|---|---|---|---|---|---|---|---|---|
| 120 | 2 | −$21 | $166 | 0 % | 24 % | 120 м | 120 м | 40 % | 59 % |
| 180 | 3 | $263 | $199 | 23 % | 37 % | 180 м | 180 м | 48 % | 59 % |
| 240 | 4 | $163 | $226 | 45 % | 61 % | 240 м | 158 м | 55 % | 61 % |
| 300 | 5 | $0 | $164 | 80 % | 95 % | 286 м | 63 м | 50 % | 61 % |
| 360 | 6 | −$36 | $215 | 42 % | 62 % | 360 м | 194 м | 47 % | 61 % |
| 420 | 7 | −$69 | $203 | 93 % | 99 % | 97 м | 69 м | 32 % | 64 % |
| 480 | 8 | −$189 | $203 | 50 % | 85 % | 464 м | 175 м | 27 % | 61 % |
| 540 | 9 | −$139 | $207 | 32 % | 88 % | 540 м | 75 м | 30 % | 65 % |
| 600 | 10 | −$42 | $179 | 92 % | 99 % | 174 м | 82 м | 30 % | 64 % |
| 720 | 12 | −$248 | $304 | 30 % | 85 % | 720 м | 114 м | 27 % | 67 % |
| 900 | 15 | −$30 | $244 | 57 % | 95 % | 464 м | 71 м | 43 % | 69 % |
Просадка на конце кривой реальна, но её механизм — состав, а не
бухгалтерия. В последние горизонт минут новых входов нет, поэтому туда
попадают только позиции, открытые раньше и дожившие до этого часа, — то есть
ровно те, на которых take-profit и обученный выход не сработали. Для 720 м это видно
буквально: медианное удержание в хвосте 720 м (полный клок) против 114 м в теле,
выход срабатывает в 30 % случаев против 85 %, доля плюсовых сделок 27 % против 67 %.
Хвост — это осадок, а не торговля. Он заштрихован на графике выше, и его ширина
разная у разных рук: 3 часа у контроля 180 м, 12–15 часов у длинных.
| рука | горизонт | зона разгрузки | выходов | PnL зоны | входов внутри | доехали до клока | PnL клок-выходов | сработал выход | PnL выходов |
|---|---|---|---|---|---|---|---|---|---|
| B_tmo720__thm3__tp40__f77 | 720 м | 12 ч | 144 | −$7,424 | 0 | 129 | −$8,728 | 15 | $1,304 |
| A_ctl__thm3__tp25__f77 | 180 м | 3 ч | 25 | $832 | 0 | 18 | −$201 | 3 | $474 |
Вопрос по существу: чтобы закрыть сделку в последний час просадки,
нужны её следующие 12 часов — либо они в ленте, либо сделки не должно быть в книге.
В ленте. Последний вход руки 720 м — 2026-09-06 11:49:00, его клок кончается
2026-09-06 23:49:00, то есть до 2026-09-07 00:00:00. Все
144 выходов последних 12 часов принадлежат сделкам, открытым
2026-09-06 00:05:00 … 2026-09-06 11:49:00; входов внутри окна просадки —
0. Просадку делают не новые сделки, а
129 из 144 позиций, доехавших до полного клока: они дают
−$8,728, тогда как 15 сработавших выходов дают $1,304.
Цены живые, не залипшие: у этих клок-выходов 125 различных значений
pnl_frac на 129 сделок; форма та же, что у клок-выходов в теле
книги (медиана -0.155 против -0.111), просто левый хвост тяжелее
(-0.925 против -0.504) — это рынок тех часов, а не подмена марки.
Просадка ещё и концентрирована: 42 токенов, худшие три дают −$4,138
из −$7,424, то есть 56%. У контроля 180 м его собственная зона
разгрузки — 3 часа, 25 сделок, $832, входов внутри тоже 0.
| горизонт, м | книг | $/день как в отчёте | $/день на общем окне | Δ | holdout: дней входа из 2 | holdout $/день номинал | по доступному окну |
|---|---|---|---|---|---|---|---|
| 120 | 25 | $2,782 | $2,476 | -11.0 % | 1.92 | $2,261 | $2,360 |
| 180 | 103 | $2,626 | $2,589 | -1.4 % | 1.88 | $497 | $530 |
| 240 | 25 | $2,900 | $2,992 | +3.2 % | 1.83 | $988 | $1,077 |
| 300 | 25 | $1,492 | $1,572 | +5.4 % | 1.79 | $27 | $31 |
| 360 | 115 | $3,354 | $3,745 | +11.6 % | 1.75 | $2,383 | $2,723 |
| 420 | 25 | $2,274 | $2,504 | +10.1 % | 1.71 | −$38 | −$45 |
| 480 | 25 | $3,247 | $3,600 | +10.9 % | 1.67 | $2,854 | $3,424 |
| 540 | 67 | $1,959 | $2,072 | +5.8 % | 1.62 | $1,178 | $1,449 |
| 600 | 31 | $2,719 | $2,824 | +3.9 % | 1.58 | $1,997 | $2,522 |
| 720 | 145 | $3,496 | $3,894 | +11.4 % | 1.50 | $1,419 | $1,892 |
| 900 | 31 | $2,622 | $2,879 | +9.8 % | 1.38 | $1,079 | $1,569 |
Если это смещение и правда красит длинные горизонты, оно исчезнет
на окне, где у всех рук одинаковая возможность войти. Такое окно —
31.08 → 06.09 09:00: это cutoff − 900 м, самый широкий
горизонт дизайна, и любой вход в нём успевает отработать при любом таймауте свипа.
Преимущество не исчезает, а растёт: медиана $/день поднимается на каждом
горизонте от 240 м и выше. Основное окно (paper, 31.08 → 05.09) вообще
не затронуто — оно кончается на двое суток раньше cutoff, доступных дней входа там
5.00 при любом горизонте. Затронут holdout: у 900 м реально доступно
1.38 дня входа из номинальных 2.00, а делится всё равно на 2.00 — это
штраф длинным рукам до −31 %, а не подарок.
| горизонт, м | капитало-время недосчитано | P3 в отчёте, $/день/1k | P3 без обрезки края | завышение P3 |
|---|---|---|---|---|
| 120 | 1.52 % | 415 | 409 | +1.5 % |
| 180 | 1.77 % | 349 | 341 | +2.3 % |
| 240 | 1.87 % | 299 | 294 | +1.7 % |
| 300 | 3.13 % | 314 | 303 | +3.4 % |
| 360 | 1.10 % | 261 | 260 | +0.5 % |
| 420 | 3.23 % | 353 | 340 | +3.9 % |
| 480 | 0.85 % | 224 | 222 | +0.9 % |
| 540 | 3.93 % | 146 | 140 | +4.2 % |
| 600 | 1.85 % | 283 | 273 | +3.5 % |
| 720 | 3.53 % | 274 | 261 | +4.7 % |
| 900 | 5.30 % | 365 | 332 | +10.1 % |
lib.capital.window_capital_stats обрезает интервал
удержания правой границей окна, а _window_economics берёт PnL сделки
целиком, если её вход попал в окно. На правом краю paper эти два
правила расходятся: позиция, открытая 04.09 в 22:00 с горизонтом 720 м, приносит все
свои доллары, но отдаёт в знаменатель только 2 часа капитала из 12.
usd_per_day_per_1k_capital сводится к 24000 × PnL / капитало-часы,
поэтому недосчёт знаменателя завышает P3 — и тем сильнее, чем длиннее горизонт.
Масштаб мал: +4.7 % на 720 м и +10.1 % на 900 м против +2.3 % у контроля 180 м,
то есть чистая фора 2–8 п.п. Вердикт свипа это не двигает: связывающим был
P2 (бета-контроль), а он прошёл 0 рук из 268 и от капитала не зависит.
06.09 09:00 в 617 парах книг. Ноль расхождений в size, score, pnl_frac, entry и exit — цены, размеры и метки под длинной лентой те же до последнего бита. Двигается только выход: 22,930 позиций (1.59%) закрываются в другую минуту, 4,887 раз переключается triggered, максимальный сдвиг 898 мин. Это переобученная exit-модель, а не утечка в ленте. Единственная асимметрия входа — 31 позиций, которых на короткой ленте нет вовсе, при нуле в обратную сторону; на 1.4 млн сделок это шум допуска, но он не нулевой.2026-09-07 06:00:00 → 2026-09-07 18:00:00, 11 часов с выходами) снова отрицательны. Входов внутри — 0 при 63 выходах.Тот же дизайн из 617 точек, тот же календарь обучения
(train 29.08 · val 31.08 · paper 05.09), единственное отличие —
конец ленты сдвинут с 2026-09-07 00:00:00 на 2026-09-07 18:00:00,
до последней минуты, которая вообще есть в реплике. Книги сопоставлены по
_model_id, а не по point_id: другой cutoff меняет дайджест
конфига, поэтому одна и та же рука получает разный идентификатор ячейки.
Источник — lib/15_cutoff_compare.py, читает книги целиком.
Красная полоса — зона разгрузки короткой ленты
(2026-09-06 12:00:00 → 2026-09-07 00:00:00), зелёная — зона разгрузки длинной
(2026-09-07 06:00:00 → 2026-09-07 18:00:00). До 06.09 09:00 кривые
обязаны совпадать и совпадают: там сделки идентичны. Расходятся они ровно там,
где короткая лента уже запретила входы, а длинная — ещё нет. Контроль 180 м за то же время: 2,264 сделок и $39,813 на короткой ленте против 2,486 и $32,379 на длинной.
| горизонт, м | лента до | книг | PnL тела | выходов | $/выход тело | PnL разгрузки | выходов | $/выход разгрузка |
|---|---|---|---|---|---|---|---|---|
| 120 | 00:00 | 25 | $823,770 | 55,763 | $14.77 | −$1,446 | 112 | −$12.91 |
| 120 | 18:00 | 25 | $731,304 | 60,875 | $12.01 | $4,644 | 825 | $5.63 |
| 180 | 00:00 | 103 | $4,303,708 | 273,617 | $15.73 | $67,479 | 2,241 | $30.11 |
| 180 | 18:00 | 103 | $3,734,108 | 299,006 | $12.49 | −$151,824 | 4,086 | −$37.16 |
| 240 | 00:00 | 25 | $1,024,369 | 57,410 | $17.84 | $18,546 | 840 | $22.08 |
| 240 | 18:00 | 25 | $933,611 | 62,449 | $14.95 | −$60,874 | 951 | −$64.01 |
| 300 | 00:00 | 25 | $862,661 | 57,151 | $15.09 | $215 | 299 | $0.72 |
| 300 | 18:00 | 25 | $827,686 | 61,642 | $13.43 | −$138,009 | 1,808 | −$76.33 |
| 360 | 00:00 | 115 | $5,506,337 | 271,287 | $20.30 | −$25,131 | 3,907 | −$6.43 |
| 360 | 18:00 | 115 | $5,819,170 | 289,404 | $20.11 | −$1,095,320 | 11,267 | −$97.21 |
| 420 | 00:00 | 25 | $1,142,738 | 57,010 | $20.04 | −$13,844 | 540 | −$25.64 |
| 420 | 18:00 | 25 | $1,162,102 | 61,243 | $18.98 | −$215,751 | 2,182 | −$98.88 |
| 480 | 00:00 | 25 | $1,032,820 | 57,200 | $18.06 | −$36,315 | 800 | −$45.39 |
| 480 | 18:00 | 25 | $1,074,626 | 60,915 | $17.64 | −$140,477 | 1,360 | −$103.29 |
| 540 | 00:00 | 67 | $2,834,549 | 149,450 | $18.97 | −$81,827 | 1,961 | −$41.73 |
| 540 | 18:00 | 67 | $2,850,796 | 158,990 | $17.93 | −$326,695 | 4,854 | −$67.30 |
| 600 | 00:00 | 31 | $1,454,741 | 68,274 | $21.31 | −$38,916 | 1,545 | −$25.19 |
| 600 | 18:00 | 31 | $1,469,138 | 73,464 | $20.00 | −$81,283 | 1,808 | −$44.96 |
| 720 | 00:00 | 145 | $9,905,640 | 355,732 | $27.85 | −$594,585 | 14,264 | −$41.68 |
| 720 | 18:00 | 145 | $9,682,100 | 385,482 | $25.12 | −$110,836 | 6,641 | −$16.69 |
| 900 | 00:00 | 31 | $1,660,158 | 65,397 | $25.39 | −$26,028 | 1,593 | −$16.34 |
| 900 | 18:00 | 31 | $1,674,169 | 71,241 | $23.50 | −$26,991 | 1,072 | −$25.18 |
Колонка $/выход — единственная честная в этой таблице:
у тела и у разгрузки разное число выходов, поэтому абсолютные суммы несравнимы.
Если у одного и того же горизонта $/выход разгрузка заметно ниже
$/выход тело на обеих лентах, это свойство зоны, а не даты.
| горизонт, м | лента до | книг | доля минусовых краёв | медиана края | медиана интерьера | край хуже интерьера | входов в крае |
|---|---|---|---|---|---|---|---|
| 120 | 2026-09-07 00:00 | 25 | 20% | $1,186 | $287 | 20% | 1 |
| 180 | 2026-09-07 00:00 | 103 | 22% | $788 | $411 | 37% | 0 |
| 240 | 2026-09-07 00:00 | 25 | 40% | $46 | $284 | 72% | 0 |
| 300 | 2026-09-07 00:00 | 25 | 80% | −$28 | $233 | 100% | 0 |
| 360 | 2026-09-07 00:00 | 115 | 61% | −$192 | $409 | 86% | 0 |
| 420 | 2026-09-07 00:00 | 25 | 60% | −$27 | $239 | 100% | 0 |
| 480 | 2026-09-07 00:00 | 25 | 60% | −$142 | $587 | 100% | 0 |
| 540 | 2026-09-07 00:00 | 67 | 60% | −$213 | $347 | 76% | 0 |
| 600 | 2026-09-07 00:00 | 31 | 48% | $0 | $596 | 100% | 0 |
| 720 | 2026-09-07 00:00 | 145 | 68% | −$974 | $278 | 97% | 0 |
| 900 | 2026-09-07 00:00 | 31 | 68% | −$215 | $371 | 100% | 0 |
| 120 | 2026-09-07 18:00 | 25 | 76% | −$94 | $465 | 100% | 22 |
| 180 | 2026-09-07 18:00 | 103 | 100% | −$1,218 | $554 | 100% | 0 |
| 240 | 2026-09-07 18:00 | 25 | 100% | −$1,888 | $367 | 100% | 0 |
| 300 | 2026-09-07 18:00 | 25 | 80% | −$2,817 | $265 | 100% | 0 |
| 360 | 2026-09-07 18:00 | 115 | 97% | −$4,430 | $504 | 100% | 0 |
| 420 | 2026-09-07 18:00 | 25 | 80% | −$5,658 | $264 | 100% | 0 |
| 480 | 2026-09-07 18:00 | 25 | 100% | −$5,243 | $456 | 100% | 0 |
| 540 | 2026-09-07 18:00 | 67 | 82% | −$4,112 | $186 | 99% | 0 |
| 600 | 2026-09-07 18:00 | 31 | 77% | −$2,815 | $186 | 100% | 0 |
| 720 | 2026-09-07 18:00 | 145 | 85% | −$618 | $473 | 99% | 0 |
| 900 | 2026-09-07 18:00 | 31 | 65% | −$459 | $393 | 100% | 0 |
Интерьер — те же часы суток за 1, 2, 3 и 4 дня до конца ленты, медиана по четырём окнам, считается для каждой книги отдельно; так снимается и время суток, и размер книги. Край систематически хуже интерьера на обеих лентах, и это не обрезка позиций (её закрывает секция «Конец ленты»), а состав выходов: входов внутри окна медианно ноль. На короткой ленте край положителен на 120 и 180 м (+$1,186 и +$788): такая рука успевает и войти, и выйти внутри окна. На длинной он отрицателен на всех горизонтах, причём максимум просадки — в середине (360–480 м), а не на самых длинных. То есть ширина зоны разгрузки задаёт знак, а сумму задаёт рынок тех конкретных часов.
capped_paper_days совпадает до второго знака. Добавленные 18 часов физически не могут попасть в основное окно, поэтому решающая метрика лидерборда на обеих лентах меряет одни и те же пять дней. Всё новое — в forward: 617 из 617 книг, 7.00 → 7.75 д.capped_forward_c50_usd_per_day падает с $2,764 до $1,833/день, медиана поштучной дельты −$725; ухудшились 580 (94.0 %), улучшились 37 (6.0 %). p10 −$1,254, p90 −$60. Это тот же вывод, что у 18_edge_signature, только на популяции свипа, а не на крае.scipy.stats.spearmanr). Топ-15 совпадает на 15 из 15. Лента сдвигает уровни, но не переупорядочивает свип: выбор руки не зависит от того, где кончилась лента.Обе ленты — один и тот же дизайн из
617 книг, сопоставленных по
_model_id. Гипотеза раунда — «держать дольше лучше» — проверяется
здесь на forward, единственном окне, которое выросло. Вывод:
добавленные 18 часов убыточны для всех горизонтов, но длинные теряют
кратно меньше — на сбалансированной лестнице группы B медиана Δ
идёт от −$1,181
на 240 м до
−$164 на 720 м.
Это относительное преимущество удержания, а не заработок.
| горизонт, м | книг | осн. $/д на 00:00 | Δ осн., медиана | выросли осн. | fwd $/д на 00:00 | Δ fwd, медиана | выросли fwd |
|---|---|---|---|---|---|---|---|
| 240 | 25 | $3,612 | −$81 | 20 % | $2,900 | −$1,181 | 0 % |
| 300 | 25 | $2,062 | −$11 | 16 % | $1,492 | −$918 | 0 % |
| 360 | 25 | $3,352 | −$34 | 24 % | $3,008 | −$903 | 0 % |
| 420 | 25 | $3,236 | −$25 | 20 % | $2,274 | −$1,227 | 0 % |
| 480 | 25 | $3,451 | $71 | 72 % | $3,247 | −$626 | 0 % |
| 540 | 25 | $2,662 | −$0 | 48 % | $1,959 | −$787 | 0 % |
| 600 | 25 | $2,994 | −$6 | 44 % | $2,712 | −$403 | 0 % |
| 720 | 25 | $3,575 | $5 | 80 % | $2,844 | −$164 | 16 % |
| 900 | 25 | $4,342 | −$35 | 36 % | $3,472 | −$177 | 0 % |
| горизонт, м | книг | осн. $/д на 00:00 | Δ осн., медиана | выросли осн. | fwd $/д на 00:00 | Δ fwd, медиана | выросли fwd |
|---|---|---|---|---|---|---|---|
| 120 | 25 | $2,838 | $0 | 0 % | $2,782 | −$678 | 0 % |
| 180 | 103 | $3,424 | $0 | 13 % | $2,563 | −$1,229 | 0 % |
| 240 | 25 | $3,612 | −$81 | 20 % | $2,900 | −$1,181 | 0 % |
| 300 | 25 | $2,062 | −$11 | 16 % | $1,492 | −$918 | 0 % |
| 360 | 115 | $3,589 | $0 | 30 % | $3,170 | −$867 | 0 % |
| 420 | 25 | $3,236 | −$25 | 20 % | $2,274 | −$1,227 | 0 % |
| 480 | 25 | $3,451 | $71 | 72 % | $3,247 | −$626 | 0 % |
| 540 | 67 | $2,600 | −$0 | 46 % | $1,959 | −$599 | 1 % |
| 600 | 31 | $3,021 | −$17 | 39 % | $2,719 | −$403 | 0 % |
| 720 | 145 | $4,099 | $1 | 52 % | $3,565 | −$79 | 25 % |
| 900 | 31 | $3,286 | −$38 | 29 % | $2,622 | −$185 | 0 % |
| линия | осн. $/д на 00:00 | Δ осн. | fwd $/д на 00:00 | Δ fwd |
|---|---|---|---|---|
| frz_t20 | $4,724 | $0 | $4,001 | −$968 |
| frz_t26 | $5,094 | $0 | $5,401 | −$688 |
exit_reference_parity только тогда, когда research-лента точно воспроизводит популяцию выходного референса боевой линии; иначе он падает в более слабую реконструкцию по префиксу книги. На короткой ленте обе линии получили слабый режим, на длинной — точный. Значит разница между лентами у этих двух строк несёт в себе и длину ленты, и смену режима реконструкции, и разделить их этим прогоном нельзя. Книг свипа это не касается: они на обеих лентах считаются одним и тем же движком, поэтому все карточки и лестницы выше остаются в силе.| линия | режим на ленте 00:00 | режим на ленте 18:00 | входов 00:00 → 18:00 | итоговый c50 00:00 → 18:00 |
|---|---|---|---|---|
t20 | стабильный префикс, сверен на пересечении окон (слабее) | точное совпадение популяций выходного референса | 4,916 → 4,824 | $51,320 → $47,153 |
t26 | стабильный префикс книги (слабее) | точное совпадение популяций выходного референса | 3,492 → 3,660 | $53,611 → $52,334 |
Что здесь не измерено. Основное
окно у всех книг одинаковой длины, входы совпадают до бита
(17_exit_only_drift: 0 расхождений входа на 1 445 686 сделок), и
всё же у 458 книг из
617 метрика основного окна сдвигается на небольшую величину
(медиана ровно $0, p10 −$96,
p90 $83); ровно нулевую дельту дают
159 книг. Правдоподобный канал — жадный реплей под
общим потолком капитала, где сдвинувшийся выход у края освобождает капитал в
другую минуту, но это не проверено по книгам и здесь как гипотеза.
Источник секции — lib/20_tape_compare.py.
2026-09-05 → 2026-09-07 даёт 2 дня. Оно годится, чтобы отбросить руку, которая перевернулась, и не годится, чтобы поверить в её $/день. Любое число holdout в этом отчёте читается как знак, а не как оценка.lib.metrics.MIN_OBS = 30 дневных наблюдений; у окон 264 их 5 и 2. Ни одна ячейка отчёта не содержит Sharpe, и её отсутствие — не пропуск, а правило репозитория.label_timeout_min, max_depth, n_exit_families не сбалансированы между группами: ось, встречающаяся в основном внутри одной группы, наследует её уровень. Единственный сбалансированный срез — лестница A+B, где на каждом горизонте стоит идентичный веер 5θ × 5TP. Все причинные утверждения про горизонт делаются только там.LABEL_TIMEOUT_MIN минут ленты — не торговля, а разгрузка. Входов там нет вообще: движок не открывает позицию, чей клок не помещается до 2026-09-07 00:00:00. Значит, выходы в этой зоне — смещённая выборка: только те позиции, на которых take-profit и обученный выход не сработали. Зона заштрихована на графике; её ширина 3 ч у контроля 180 м и 12–15 ч у длинных рук, поэтому хвосты кривых нельзя сравнивать между руками. На метрики это не влияет: окна режутся по входу, и у каждого входа исход полный. Разбор — в секции «Конец ленты».c50_usd_per_effective_day — PnL, делённый на реально доступное руке время, а не на календарные двое суток. Поправка помогает длинным рукам, поэтому рядом печатается p1_pass_strict — тот же гейт без неё.frz_t20): при его достижении вход пропускается. Standalone-числа без потолка публикуются рядом и решений не несут — рука на 720 мин иначе «выигрывает» просто тем, что держит вчетверо больше денег.02_leaderboard.csv — 668,033 байт · sha256 f6fde63572e2531402_gates.csv — 430,117 байт · sha256 205dcca50121f96002_theta_tp.csv — 144,307 байт · sha256 3563335f0adcce1f02_exit_off.csv — 39,896 байт · sha256 2b018a91481cc92702_horizon_curve.csv — 34,501 байт · sha256 4a4ac9d92ede8d1502_percentiles.csv — 42,211 байт · sha256 3bd7803ddb5a9a6502_parameter_effects.csv — 30,409 байт · sha256 976ef374010c089a02_ungated.csv — 9,656 байт · sha256 52df7fc5be25bef702_curves.json — 1,989,698 байт · sha256 4e91f1915a06085702_analysis_receipt.json — 10,503 байт · sha256 7ee91c69d2a951a702_all_models_full.csv — 3,467,984 байт · sha256 40e7ab1873067c7308_tail_audit.csv — 235,821 байт · sha256 f09f9cdbcb754e7409_tail_hourly.csv — 188,945 байт · sha256 4a5593d045878c9f10_starved_tail.csv — 361,302 байт · sha256 d1148e2ca4cd43f611_capital_clip.csv — 146,173 байт · sha256 d97d72eccd37563112_tail_decomposition.json — 1,962 байт · sha256 aca7e674625200b4frozen_replay_summary.json — 1,200 байт · sha256 1cae2e3ed795f8dd