Бэктест без самообмана
Пошаговый путь: от того, что на самом деле оптимизирует ваш бэктест, до доказательства, что преимущество переживет переобучение, множественное тестирование и реальное исполнение. Читайте сверху вниз — каждая часть опирается на предыдущую.
- 01
Jul 2, 2026 #алготрейдингДизайн целевой функции: метрика, которую вы оптимизируете, тайно выбирает вашу стратегию
Чтобы искать "лучшую" стратегию, нужно сначала определить "лучшее" — и этот скаляр тайно выбирает победителя. На синтетических данных с известным edge (600 seeds, T=2000, 80 порогов) наивный per-trade Sharpe коронует лотерею: он выбирает победителя с exposure ниже 5% в 56% seeds и вырождается в 57% случаев — на самом ярком seed 8 сделок дают in-sample Sharpe 21.09, который схлопывается до 0.13 out of sample. Честное исправление почти скучно: измерять на полном таймлайне, который никогда не вырождается (out-of-sample 1.71). Trade-count shrinkage (conf_k) и exposure floor способны доработать per-trade метрику, но даже полностью исправленные они лишь сравниваются с full-timeline Sharpe (1.70 против 1.71) — никогда не превосходят его. Закон Гудхарта в бэктесте, с контролируемой истиной.
- 02
Mar 15, 2026 #алготрейдингWalk-Forward Optimization: единственный честный тест стратегии
Почему single train/test split не защищает от overfitting, как walk-forward optimization системно проверяет робастность параметров, и почему стратегия с +3342% PnL@ML на 21 параметре — бомба замедленного действия без WFO.
- 03
Mar 12, 2026 #алготрейдингPlateau analysis: как отличить робастный оптимум от overfitting
Почему найти лучшие параметры стратегии — только половина работы. Как визуально и количественно отличить устойчивое плато от хрупкого пика, и почему Optuna contour plots — обязательный шаг перед запуском оптимизированной стратегии в продакшен.
- 04
Mar 6, 2026 #алготрейдингMonte Carlo Bootstrap: как получить confidence intervals для бэктеста за 10 строк кода
Почему single-point estimate из бэктеста — опасная иллюзия. Как Monte Carlo bootstrap за 2 секунды вычислений даёт 95% confidence interval для PnL и MaxDD, и почему это обязательный шаг перед запуском стратегии в продакшен.
- 05
Jul 2, 2026 #алготрейдингProbability of Backtest Overfitting: обыграл ли ваш поиск подбрасывание монеты?
Deflated Sharpe Ratio оценивает победившую стратегию; PBO оценивает сам поиск, который ее выбрал. Combinatorially Symmetric Cross-Validation прогоняет C(16,8) = 12,870 train/test-разбиений по матрице результатов 1000x200 и спрашивает: попадает ли in-sample победитель в нижнюю половину out of sample? Ловушка, которую почти все упускают, — ноль PBO равен 0.5, а не 1. На 200 стратегиях с нулевым edge лучший in-sample годовой Sharpe 1.98 схлопывается до 0.06 out of sample, а PBO = 0.476: подбрасывание монеты, полный оверфит. Заложите реальный edge (годовой Sharpe 2.38) — и PBO падает до 0.001, а in-sample 3.73 сохраняется до out-of-sample 2.34. У сетки moving average на чистом случайном блуждании тоже нет out-of-sample мастерства — PBO 0.463 в среднем по 60 матрицам, статистически неотличимо от нуля, — а на одной представительной матрице мираж особенно нагляден: лучший in-sample Sharpe 2.33 схлопывается до медианного out-of-sample -0.22, PBO 0.573, 63% шанс убытка.
- 06
Jul 2, 2026 #алготрейдингDeflated Sharpe Ratio: сколько "победителей" бэктеста переживают множественное тестирование?
Поиск параметров — это машина по производству удачи. На чистом шуме — 1,000 стратегий с нулевым истинным edge — лучший годовой Sharpe в среднем составляет 1.63, а наивный тест значимости фиксирует открытие в 100% случаев. Мы строим контролируемую истину и показываем, что Deflated Sharpe Ratio, haircut Harvey-Liu и Reality Check Уайта восстанавливают честность: доля ложных открытий падает с 1.000 до 0.001-0.057, настоящие edge выше потолка шума сохраняются с power ~1 — и одна реальная ловушка (коррелированные сетки), где сырой DSR передефлирует, а вердикт нужно читать по всей полосе оценок эффективного числа испытаний, а не по одной цифре.
- 07
Mar 7, 2026 #алготрейдингBacktest-live parity: почему ваш бот торгует не так, как бэктест
Полная таксономия расхождений между бэктестом и live-торговлей: от slippage и partial fills до рассинхронизации кодовых баз. Архитектурные паттерны для достижения parity, Python-примеры shared core модуля и чек-лист мониторинга в продакшене.