Загрузка данных
Код Phase 3.1 готов и отработал на реальном SMLT: ресемплинг M5→M15 корректный (модальный интервал 15 мин, склеек через ночь нет), дневной ATR-стоп без look-ahead (99% баров заполнено), фрикционный фильтр, тайм-стоп отключён, овернайты разрешены. Инфраструктура чистая. Но прямой ответ на твой вопрос требует, чтобы я был жёстким, а не оптимистичным.
Numbers выглядят как победа. OOS net: +17.7%, PF 1.88, MaxDD −7.5%, win 45.5%. IS-сетка в плюсе по всем ячейкам (PF 4–21). Средняя прибыльная сделка выросла с ~+46 (M5) до ~+254. Издержки на этом конфиге съели 0% капитала против 86% на M5. По форме — ровно то, чего ты ждал: укрупнение сделки убрало смерть от издержек.
Но это не доказательство эджа. Это слишком малая выборка. Вот что показала статистическая проверка OOS-результата (33 сделки):
Бутстрап 95% ДИ на среднюю P&L/сделку: [−8.1, +115.9] — ноль внутри интервала.
Бутстрап 95% ДИ на Profit Factor: [0.90, 3.77] — PF = 1.0 (безубыток) внутри интервала.
t-стат средней доходности на сделку = 1.65 при n=33 (для p<0.05 нужно |t|≳2). Незначимо.
Все три теста говорят одно: на этих данных мы не можем отвергнуть гипотезу «эджа нет / безубыток». PF 1.88 статистически неотличим от единицы.
И механика «улучшения» — отдельный красный флаг. Издержки перестали мешать не потому, что система научилась зарабатывать, а потому, что она почти перестала торговать. На IS выбранная сетка дала 6–12 сделок за 887 дней; одиночный конфиг bins=50 сделал 8 сделок за 5 лет. Причина: широкий стоп Daily ATR/3, цель 2.5R далеко, позиция держится ~7.4 суток (в отчёте время удержания было занижено втрое — считалось по M5, я это починил), и пока она открыта, система игнорирует ~95% сигналов (в полном OOS-прогоне 722 сигнала, взято 33 сделки, 148 встречных погашено). То есть система свелась к горстке многонедельных направленных ставок на бумагу, которая рухнула с 5700 до 400. Несколько удачно пойманных кусков тренда дают высокий PF на крошечном N. Это не решение проблемы эджа — это обход проблемы издержек через почти-неторговлю.
Справедливости ради — это и не очевидная фальшивка: топ-3 прибыльные сделки дают лишь 22% валовой прибыли (не одна лотерейная сделка, выигрыш размазан по 33 сделкам). Так что вывод — не «не работает», а «статистически недоказуемо на этой выборке». Свинг-рефрейминг убрал режим смерти-от-издержек — это реальный прогресс. Но взамен пришла проблема размера выборки: на одной бумаге с 33 сделками нельзя заключить ничего, тем более после того как мы перебрали M5/M15, два типа стопа и фильтры — это накопленное multiple testing на уровне проекта, и единичный 70/30 OOS уже косвенно «подсмотрен» нашими итерациями дизайна.
Отдельно: фрикционный фильтр здесь почти инертен — отсёк всего 79 сигналов из 2396, потому что SMLT волатилен и зоны стоимости широкие (расстояние до POC почти всегда >0.72%). На спокойной голубой фишке он кусал бы сильнее.
Что реально ответит на вопрос «есть ли эдж». Нужно загнать N в сотни, иначе любой PF — шум:
Прогнать ту же свинг-логику по корзине ликвидных MOEX-имён (SBER, GAZP, LKOH, GMKN, ROSN, и т.д.), пулить сделки. Если эдж настоящий — он проявится across names с выборкой, на которой бутстрап и t-стат станут осмысленными. Затем — rolling/anchored walk-forward на несколько фолдов вместо одного сплита, и финальная проверка значимости с поправкой на число перепробованных конфигов (deflated Sharpe) плюс одна бумага, ни разу не тронутая в ходе разработки, как настоящий held-out.
Прямо отвечая: да, PF численно вошёл в зону прибыльности и средняя сделка укрупнилась — но на выборке в 33 сделки этот PF неотличим от безубытка, так что считать гипотезу подтверждённой нельзя. Чтобы перевести это из «обнадёживающе» в «доказано», следующий шаг — корзина бумаг ради статистики. Собрать прогон по мультитикерному списку MOEX на этой же свинг-логике?