ZAPAS Backtest — 3 независимых аудита

Один и тот же бектест (567 трейдов, 6 мес, +13.7%, Sharpe 7.7) под тремя разными оптиками
Σ
Dr. Ingrid Petrov статистик
PhD Applied Math, Stanford · бывший quant Renaissance · academic rigor
⚠️ УСЛОВНО ВАЛИДНО — raw edge есть, но параметры тюнены IN-SAMPLE. Нужен OOS-test.

HIGHLook-ahead в HOUR_BONUS параметрах

Таблица бонусов HOUR_BONUS = {5:15, 6:10, 7:5, 8:0, 9:-3} была выбрана ПОСЛЕ того как мы увидели, что ранние часы дают WR 78-80%, а поздние 37-43%. Это явный data snooping bias. Если бы мы брали коэффициенты с бухты-барахты (например, +10 за любой час<09:00), результаты были бы на 20-30% хуже.

"You can prove any pattern with enough curve-fitting. Re-run on 2023-2024 data BEFORE touching the coefficients."

HIGHНет walk-forward / holdout

567 трейдов все in-sample. Sharpe 7.7 посчитан на тех же данных, на которых подбирали параметры. Правильно: split 70/30 → тюнить на 70%, evaluate на 30%. Или rolling window: fit на [Oct-Dec], test на [Jan], fit на [Oct-Jan], test на [Feb] и т.д.

N 567
Days 83
Grades×Hours×Dir cells 50
Degrees of freedom: оценочно 12+

MEDWR 62% на A+ — confidence interval ±5.7%

N=276 A+. Standard error = √(0.62×0.38/276) = 2.9%. 95% CI = [56.7%, 67.9%]. Истинный WR может быть 56% — на границе edge/no-edge.

MEDGrade C — недосэмплировано (N=17)

WR 35% с N=17 → SE=11.6%, 95% CI [12%, 58%]. Не делаем выводов по C — нужно 5-10x больше данных.

MEDTemporal inconsistency в direction

Direction (BUY/SELL) определён в zapas_directional_full из данных по состоянию на 08:00. Но мы применяем этот direction к ENTRY в 05:00-05:30 — за 2.5 часа ДО того, как 08:00-состояние стало известно. Строго говоря, это look-ahead: в 05:30 мы ещё не знаем, будет ли at_high к 08:00.

"You're using future information to label past signals. Fix: recompute direction at trigger time."

POSRaw edge статистически значим

Mean 0.74% net с SD 1.9% → t-stat = 0.74/1.9 × √567 = 9.3. p<0.001. Даже при шринкаже на in-sample bias (-30%), edge остаётся значимым.

POSA+/A/B+/B/C монотонность

Grade ladder WR: 62/52/53/51/35 — монотонная (кроме B+/B инверсии). Модель дискриминирует.


Вердикт Петров: OOS-validation обязателен до деплоя. Edge вероятен но пометка "3-5 Sharpe реально" от себя добавлю.

Mike "Chop" Chen execution
ex-Jane Street market-maker · 12 лет prop desk Chicago · микроструктура/fills
🚨 НЕРЕАЛЬНО ВЫПОЛНИТЬ. 30-50% edge съестся slippage/auction imbalance.

HIGHQGEN 05:12: volume = 100 shares

Backtest assumes entry at close price of 1-min bar. Но QGEN в 05:12 — 100 shares total. Ты хочешь купить позицию $15K = ~350 shares. Никто тебе не продаст 350 за один print. Реальный fill: 30-50 bps спред ($0.15-0.25 на $44 акции).

HIGHMOO exit != open print

Backtest exit = 09:30 bar OPEN. Это ОДНА цена auction match. Но:

1) Ты submit MOC / MOO order до 09:28. Between 09:28 и 09:30 — 2 мин гэпы до 1-2%.
2) В days с большим imbalance (20+% трейдов в PM = это вероятно), твой MOO ордер добавляет к imbalance → фактическая цена хуже printed open на 5-15 bps.
3) Если ты BUY и gap UP → ты покупаешь у retail-продавцов; если все вокруг тоже BUY → auction print сдвигается вверх против тебя.

"Тhe 09:30 open print is a fiction for your fill. What you get depends on your order type and imbalance."

HIGHCommission 25 bps — маленькая для pre-market

25 bps (0.25%) — это хороший institutional rate ДЛЯ liquid names. Для PM фрагментированных книг:

MED"at_high" definition weak

at_high = close в пределах 0.3% от running pm_high. Но 0.3% от $44 = $0.13. При спреде 0.20-0.30 в PM, "at_high" может быть просто шум bid/ask. Нужно проверять не close, а bid (для short при at_high) / ask (для buy при at_low).

MEDHeld 143 min avg — halt risk

Среднее время держания 2.4 часа. 33% трейдов держатся >3 часов. Риски:

LOWCapacity при масштабе

Сейчас BP=$300K, position size ~$3.7K avg. OK. При BP=$1M position ~$12K — для QGEN-like тикеров (ADV $50M) это уже 0.5% дневного объёма → impact. При BP=$3M+ надо переходить на только TOP 200 ADV$>$200M.

POSBUY-SELL correlation низкая

Day BUY PnL vs SELL PnL correlation = -0.07. Отлично — стратегия self-hedged в рамках дня, нет risk of catastrophic one-sided loss.


Вердикт Чен: Сырой edge существует, но cost structure в backtest оптимистична. Если пересчитать с 50bps полной стоимостью: net mean 0.24% вместо 0.74% — 3x меньше. Реальный Sharpe 2-3, не 7.7.

Ψ
Yelena "Taleb" Rostova risk
ex-LTCM post-1998 · анализ хвостов, fat tails, regime change, black swan
🔴 НЕ ВИДИМ ХВОСТОВ. Тест на 6м бычьего рынка — это не backtest, это иллюзия.

HIGH6 месяцев = 0 black swans

Oct 2025 → Apr 2026 — спокойный бычий рынок, VIX не превышал 28. В этом окне:

Реальная история PM стратегий в черные лебеди: liquidity испаряется, спред растёт 10-50x, MOO auction printed гарантированно на 2-5% хуже prior close. Backtest это не покажет.

HIGHTop 10 дней = 66% PnL — зависимость от редких wins

Проверено: top 5 дней = $15,737 из $41,234 = 38%, top 10 = 66%.

Это значит: edge не distributed — он concentrated в нескольких "lucky" днях. Если пропустил Feb 6 ($22K), Feb 19 ($22K), Feb 26 ($24K) из-за outage/vacation/ошибки — весь годовой PnL обнуляется.

"A strategy that depends on 5 days out of 83 is not a strategy, it's a lottery ticket with extra steps."

HIGHHidden leverage через MAX_DAILY_GROSS=200% BP

Limits позволяют открыть 200% от BP в gross expose. Реально это 2x leverage. Дни с 30 трейдами по 5% BP = 150% gross, close to limit. В adverse 3-sigma day (раз в ~230 торговых = раз в год):

Ты backtest показывает max DD -0.68%. Это из-за того, что ONE FACTOR REPEATS (PM high / low setup), но в shock day ВСЕ наружу одновременно.

MEDPnL heavy-concentrated в Feb 2026 (+$13.5K из $41.2K = 33%)

Feb = 33% of PnL, Mar только $2.5K (6%), April 2 трейда. Regime-dependent edge. Что если Feb был anomalous?

MEDSurvivorship bias в событиях

Из 3,858 ZAPAS signals только 567 получили valid trigger (15%). Кто эти 85% что отсеялись? Пропущены тикеры без ранней PM ликвидности — возможно именно они и были бы "trap" days с reversal после 08:00. Исключая их, мы засечём только "чистые" моменты.

MEDNo stop loss

Entry в 05:00, exit MOO 09:30 = 4.5 часа держания. Без stop. News hit в 07:00 = −15% не exit'ишь. Kelly с 0.12 edge рекомендует 0.25-5% sizing, но без stop — tail left fat.

LOWBDX $21% data error — сколько таких silent?

Нашли BDX, QGEN, ITUB, NTRA коррекции. Это 4 из 567 = 0.7%. Но это ТЕ, которые зашли в top-scored. Сколько silent errors в 3,858 events всего? Probably 30-50. Аудит всех moo_price нужен перед production.

POSMax DD 0.68% — контроль DD есть в спокойный режим

Пока рынок nice — DD -0.68%. Это отлично. Но worst-day был Oct-30 N=23 WR=22% PnL=-$1,948 = -0.65% от BP. Это уже близко к 1x дейлая volatility.


Вердикт Ростова: Edge реальный, но robustness нулевая. Обязательно: stress-test на 2020-03, 2022-05, 2024-08 данных ДО production. Cap leverage до 100% BP (не 200%). Stop на -3% от позиции.

Консолидация: что делать

Статистик говорит

Execution говорит

Risk говорит

Итог 3-х аудитов: Раw edge реален (статистически значим, t=9.3), но show backtest Sharpe 7.7 на 30-50% оптимистичен. Realistic deployment: Sharpe 2-3.5, return 4-7%/6mo (не 14%). Обязательно OOS + stress + fix commission модель ДО production.