Знайомий сценарій: оптимізатор перебрав кілька сотень комбінацій параметрів, найкраща показала 300% на історії. Стратегія йде в реальну торгівлю — і через кілька тижнів рахунок у мінусі. Тест не «зламався» і ринок не «з'їхав з глузду». Скоріш за все, це переоптимізація.
Що таке переоптимізація
Історія ринку складається з закономірностей та шуму. Коли ми перебираємо багато параметрів на одному й тому ж відрізку історії, рано чи пізно знаходиться комбінація, яка ідеально лягає не на закономірність, а на шум — на випадкові збіги саме цього куска даних.
Така стратегія нічого не «знає» про ринок. Вона вивчила напам'ять минуле — і розсипається на будь-яких нових даних. Чим більше параметрів і чим більше прогонів оптимізатора, тим вища ймовірність отримати саме такий результат.
Ознаки, що стратегія підганяна
- Результат живе на піку, а не на плато. Найкращий набір параметрів дає 300%, а сусідній (трохи зміщене значення) — вже −20%. Справжня закономірність стійка до невеликих змін параметрів; шум — ні.
- Мало угод. На 30–50 угодах статистика практично нічого не означає: кілька вдалих випадковостей роблять будь-яку криву гарною.
- Весь прибуток — на парі угод. Видаляєш одну-дві найкращі — і від результату нічого не залишається.
- Занадто ідеальна крива. Рівномірне зростання майже без просадок на волатильному ринку — привід не радіти, а насторожитися.
- Немає відповіді «чому це працює». Якщо у стратегії немає зрозумілої причини заробляти (поведінка учасників, структура ринку, витрати інших), скоріш за все її й немає.
Як перевіряти стратегію чесно
Тест поза вибіркою (out-of-sample). Базова гігієна: історія ділиться на дві частини. На першій стратегія налаштовується, на другій — лише перевіряється, без права щось підкрутити. Результат на другій частині і є чесна оцінка.
Walk-forward. Більш суворий варіант: вікно «налаштували на цьому відрізку — перевірили на наступному» ковзає по всій історії. Стратегія багаторазово зустрічає дані, яких «не бачила». Якщо результат тримається від вікна до вікна — це ознака закономірності, а не підгонки.
Стійкість до параметрів. Дивитися не лише на найкращий набір, а й на околицю: якщо незначні зсуви параметрів не руйнують результат — ви знайшли плато, а не випадковий пік.
Чесні умови симуляції. Комісії, проскальзування, фіндинги, ліквідність. Без них навіть правильна методика перевіряє стратегію у казковому світі — а торгувати їй доведеться в реальному.
Де це вже вбудовано
XTester ми будували саме навколо цієї проблеми: тестер має допомагати ловити підгонку, а не допомагати її не помічати. Розділення даних для перевірки поза вибіркою, чесний облік витрат у симуляції, метрики, за якими видно стійкість результату, — це частина движка, а не надбудова.
Ранній доступ відкритий: xtester.pw.
Поширені питання
Скільки історії потрібно для тесту?
Однієї цифри немає — важливіша кількість угод і різноманітність ринкових умов: стратегія повинна пройти і тренд, і боковик, і високу волатильність. Сотня-друга угод у різних режимах ринку говорить більше, ніж тисячі свічок одного спокійного року.
Що кращє: просте розділення історії чи walk-forward?
Розділення — необхідний мінімум, walk-forward — суворіша перевірка стійкості в часі. Якщо стратегія претендує на реальні гроші, walk-forward вартий витраченого часу.
Стратегія провалила тест поза вибіркою. Чинити чи викидати?
Обачно: якщо «чинити» налаштуваннями параметрів, поки не пройде — це та сама переоптимізація, тільки вручну. Варто повертатися до гіпотези: чому стратегія взагалі має працювати. Нема відповіді — немає стратегії.