Walk-forward Analysis — це хронологічне оцінювання процедури, яка обирає або налаштовує правила на попередніх даних і застосовує їх до наступного тестового періоду. Ролі відбору й тестування зсуваються в часі, причому поточне рішення не може знати наступного результату.
Walk-forward Analysis пересуває історичну симуляцію в часі: на наявних до цього моменту даних обирає або налаштовує правило, а потім оцінює його застосування на наступному відрізку. QuantConnect описує регулярну оптимізацію на вікні останніх минулих даних. Наше редакційне розмежування: ми оцінюємо не лише один незмінний набір параметрів, а заздалегідь описану процедуру їх оновлення. Частиною правила є також момент наступного відбору, його мета та множина кандидатів. Краще пристосування до недавніх даних саме по собі не підтверджує кращого майбутнього результату. [QuantConnect — Walk Forward Optimization]
QuantConnect застерігає, що період, використаний для пошуку найкращих параметрів, стає частиною даних для розроблення. Застосувати до нього переможця, обраного заднім числом, — не чесна перевірка тодішнього рішення. Тому наш протокол завершує відбір до початку наступного тестового відрізка. Дані цього відрізка не можуть впливати на поточного переможця. Щойно відрізок завершиться і його інформація справді стане доступною, вона може за заздалегідь визначеною процедурою увійти до пізнішого відбору; однак це не змінює раніше зафіксованих тестових рішень. [QuantConnect — Optimization Parameters]
TimeSeriesSplit створює впорядковані в часі індекси навчання й тестування; за замовчуванням поступово розширює минулу навчальну множину та дозволяє обмежити її розмір. Наше розмежування: ковзне вікно зберігає обрану тривалість минулого, тоді як вікно, що розширюється, має незмінний початок. Довжина вікна й частота оновлення є частиною задуму, а не довільними коригуваннями після перегляду результатів. Для зіставних метрик відрізків документація вимагає спостережень через однакові часові інтервали; для нерегулярних даних потрібно стежити за фактичним календарним охопленням. [scikit-learn — TimeSeriesSplit]
Параметр gap у TimeSeriesSplit пропускає спостереження наприкінці навчальної множини перед тестом. Наша методична вимога — визначати потрібний відступ за моментами доступності вхідних даних і завершення цільових результатів. Якщо результат навчального спостереження використовує ціни з тестового періоду, саме лише впорядкування рядків не усуне витоку. Тому довжину проміжку не слід обирати лише за красивою кривою. Навіть належний проміжок не доводить незалежності сусідніх періодів і не усуває всіх форм упередження відбору. [scikit-learn — TimeSeriesSplit]
Документація scikit-learn застерігає, що нормалізація, заповнення пропущених значень чи відбір ознак можуть перенести інформацію з тесту до моделі. Параметри цих перетворень слід навчати лише на навчальній частині, а потім застосовувати до тестової. Наша перевірка повторює це розділення за кожного зсуву вікна. Попереднє обчислення середнього з усього набору не виправляється тим, що готову таблицю розділять лише згодом. Необхідно також зберігати версію даних та їхню фактичну часову доступність. [scikit-learn — Common Pitfalls: Data Leakage]
QuantConnect виділяє модель, яка визначає ціну й кількість виконання та може враховувати спред і Slippage. Наша вимога до об’єднання тестових відрізків — однаково обліковувати капітал, відкриті позиції та витрати зміни правила. Навчальні прибутки не додаються до результату наступного тесту, а тестові періоди, що перекриваються, не можна без пояснення враховувати кілька разів. Якщо позиції переносяться, потрібно описати перехід між конфігураціями. Натомість наша наведена нижче модель завершує кожен період без позиції. [QuantConnect — Trade Fills: Key Concepts]
Bailey та співавтори описують зростання ризику хибних відкриттів за повторного пошуку на тих самих даних. Наш висновок для Walk-forward Analysis: якщо за отриманим тестовим рядом ми змінюємо довжину вікон, мету чи кандидатів і повторюємо весь запуск, цей ряд уже впливає на розроблення. Недостатньо перейменувати його на незалежний. Звіт має наводити всі випробувані протоколи й відокремлювати можливу подальшу перевірку, ще не використану раніше. Сам по собі часовий зсув не є оцінкою ймовірності перенавчання чи автоматичною статистичною гарантією. [Bailey et al. — The Probability of Backtest Overfitting]
NFA наголошує, що гіпотетичні результати не відображають реальної торгівлі чи повного впливу ліквідності, Slippage та поведінки за реальних збитків. Тому наш звіт Walk-forward Analysis зберігає межі вікон, кандидатів, оцінки відбору, обрані конфігурації та результати наступних відрізків включно з витратами. Підсумок потребує контексту ризику, кількості спостережень і порівняння за однакових умов. Невеликий приклад із від’ємним результатом не доводить загальної непрацездатності методу, так само як додатний підсумок не доводить майбутньої торгової переваги. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]
Обрати за минулим, оцінити лише наступний період
Для повної картини прочитайте також Backtesting, Overfitting, Look-ahead Bias, Trading Plan, Trading Journal. На цю статтю також посилаються Backtesting, Overfitting, Look-ahead Bias, Survivorship Bias.
01Чи може попередній тестовий період згодом увійти до навчання?+
Так, якщо він уже завершився, інформація доступна й заздалегідь визначений протокол це дозволяє. Проте він не може заднім числом змінити відбір чи результат, зафіксований для цього періоду.
02Чи усуває Walk-forward Analysis перенавчання?+
Не автоматично. Усе ще можна повторно обирати довжини вікон, кандидатів або всю процедуру за тими самими результатами. Необхідно розкрити історію спроб, стежити за витоком інформації та зберігати відмінність між розробленням і подальшою перевіркою.