20 серпня 2026 · Оптимізація

Три способи провалити walk-forward оптимізацію й нічого не помітити

Три способи провалити walk-forward оптимізацію й нічого не помітити

Walk-forward оптимізація має репутацію чесного способу налаштувати стратегію, і вона на неї заслуговує — принаймні порівняно з оптимізацією на всіх даних і милуванням результатом. Але в цієї техніки є тихі режими відмови, і кожен з них лишає той самий артефакт: валідаційний звіт зі словом «робастна», підшитий до стратегії, яка такою не є. Ось три, проти яких нам довелося будувати захист, згруповані за руїнами, які вони по собі лишають.

Відмова перша: витік між вікнами

Як робити не треба: налаштувати на січні–червні, валідувати на липні, а тоді дозволити будь-чому з липня вплинути на другий прохід — перезапуск після того, як ви побачили out-of-sample число, «дрібне підкручування» сітки параметрів, ознака, нормалізована по всьому ряду. Кожне окремо виглядає невинно. Разом вони перетворюють out-of-sample вікно на in-sample дані із затримкою.

Руїни: out-of-sample Sharpe, який загадковим чином повторює in-sample Sharpe. Справжні out-of-sample результати шумні й розчаровують; підозріло гладкий зв'язок IS/OOS означає, що інформація тече назад. Ми стежимо за цим співвідношенням явно — in-sample більш ніж утричі вищий за out-of-sample позначає прогін як підозрілий, а out-of-sample на нулі чи нижче вбиває його незалежно від того, наскільки красиво виглядає in-sample.

Відмова друга: підбір метрики між вікнами

Проганяєте три walk-forward вікна, отримуєте три шумні результати, а тоді підсумовуєте: середній Sharpe? Медіанний? Викинути найгірше вікно через «зміну режиму»? Кожен вибір — це ступінь свободи, і наполегливий оптимізатор (людина чи баєсів) знайде те зведення, за яким ця стратегія виглядає найкраще. Сімдесят п'ять Optuna-трайлів на вікно — це сімдесят п'ять шансів підігнатися під шум, помножені на стільки зведень, скільки ви готові розглядати.

Руїни: стратегія, яка проходить валідацію, а потім у живій торгівлі видає результат найгіршого вікна — бо найгірше вікно було єдиним чесним. Наше правило: спосіб агрегації зафіксовано в конфізі до прогону, бюджет трайлів зафіксовано, а аналітик читає результати по кожному вікну разом із показаним розкидом. Стратегія, якій для проходження потрібне доброзичливе зведення, не проходить.

Відмова третя: holdout, який перестав ним бути

Holdout працює рівно один раз. Удруге, коли стратегію оцінюють на ньому — після підкручування параметра, зміни сигналу, «а давай просто перевіримо» — це вже не holdout; це повільна валідаційна вибірка. П'ятнадцять недоторканих днів здаються дрібницею, яку легко зберегти, доки не з'явиться тиск ітерацій і повторна перевірка не почне здаватися нешкідливою.

Руїни тут тонкі: результати holdout, які покращуються від ітерації до ітерації тієї самої стратегії. У свіжих out-of-sample даних немає жодних підстав винагороджувати третю ітерацію більше за першу, а коли вони це роблять — holdout уже вироблено. Ми забезпечуємо одноразовість механічно: holdout оцінюється один раз за прогін пайплайна, результат записується в запис, а стратегія, якій потрібна ще одна спроба, проходить увесь стрій наново — з новими вікнами включно. Вона має зберегти щонайменше 70% walk-forward out-of-sample Sharpe, і другого кидка цього кубика немає.

Ознака, яка переживає всі три

Перед усім цим ми проганяємо звичайний прохід на чутливість: зсуваємо кожен параметр на ±20% і дивимося на метрики. Справжня перевага деградує плавно; збіг зривається з обриву. Це найдешевший тест у пайплайні, і він накладає вето на стратегії, які інакше пропливли б крізь усе описане вище — бо обрив по параметру і є те, як виглядає перенавчання до того, як ви дали йому шанс сховатися у валідаційній машинерії.

3.0×максимальне співвідношення IS/OOS Sharpe
70%holdout має зберегти від WF OOS
±20%зсув чутливості на параметр
1оцінок holdout, за весь час

Ніщо з цього не робить оптимізацію безпечною. Воно робить режими відмови гучними — а це максимум, що можна чесно вимагати від процесу валідації.

оптимізаціяwalk-forwardперенавчанняholdoutчутливість
ПоділитисяXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← Усі статті