598 / 691WFA

Walk-forward Analysis

Аналіз із послідовним зсувом у часі

Walk-forward Analysis обирає правила на доступних минулих даних і тестує їх на наступному відрізку. Процедура повторюється в часі за заздалегідь визначеним протоколом. Оцінюється весь спосіб відбору, а не переможець, знайдений заднім числом; навіть правильне розділення відрізків не гарантує майбутньої дохідності.

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]

ПрикладПРИКЛАД · WFA

Обрати за минулим, оцінити лише наступний період

Наша вигадана модель використовує шість однакових за тривалістю періодів, позначених від 1 до 6, і два заздалегідь задані варіанти A та B. Їхні чисті результати за однакового фіксованого розміру становлять A [4, -1, 2, -3, 5, -2] USD і B [1, 2, 1, 1, -2, 4] USD. Кожен результат доступний лише після завершення відповідного періоду, враховує всі витрати моделі й завершується без відкритої позиції. Немає інших витрат переходу, боргу чи грошових потоків. Заздалегідь визначена процедура щоразу підсумовує останні три завершені періоди, обирає вищу суму й застосовує переможця лише в наступному періоді; за рівності вона обрала б A. Вікна відбору — [1, 2, 3], [2, 3, 4] і [3, 4, 5], наступні тести — [4, 5, 6]. Суми відбору для A становлять [5, -2, 4] USD, а для B — [4, 4, 0] USD, тому послідовно обираються A, B і A. До спільного тестового результату входять лише [-3, -2, -2] USD, разом -7 USD. Початкова сума готівкових коштів для тесту перед періодом 4 становить 1000 USD, а кінцева — 993 USD; розмір не змінюється залежно від суми коштів. Навчальні результати не додаються до рахунку, а кожен тестовий відрізок враховується лише один раз. Схема показує зсув вікон відбору та наступних тестів, а не реальну ринкову історію чи ймовірність майбутнього успіху.

Для повної картини прочитайте також Backtesting, Overfitting, Look-ahead Bias, Trading Plan, Trading Journal. На цю статтю також посилаються Backtesting, Overfitting, Look-ahead Bias, Survivorship Bias.

01Чи може попередній тестовий період згодом увійти до навчання?

Так, якщо він уже завершився, інформація доступна й заздалегідь визначений протокол це дозволяє. Проте він не може заднім числом змінити відбір чи результат, зафіксований для цього періоду.

02Чи усуває Walk-forward Analysis перенавчання?

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

DOC · 001QuantConnect — Walk Forward OptimizationДокументація ↗DOC · 002QuantConnect — Optimization ParametersДокументація ↗DOC · 003scikit-learn — TimeSeriesSplitДокументація ↗DOC · 004scikit-learn — Common Pitfalls: Data LeakageДокументація ↗DOC · 005QuantConnect — Trade Fills: Key ConceptsДокументація ↗DOC · 006Bailey et al. — The Probability of Backtest OverfittingПервинне джерело ↗DOC · 007NFA — Use of Promotional Material Containing Hypothetical Performance ResultsДокументація ↗
Спочатку джерела · Не інвестиційна порада