598 / 736WFA

Walk-forward Analysis

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

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

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

Петро має кілька варіантів торгового правила й хоче використовувати той, що найкраще працював останнім часом. Walk-forward Analysis дозволяє пройти цю ідею крок за кроком: обрати за відомою історією, записати наступний результат і повторити вибір. QuantConnect описує таке регулярне оновлення. Отже, перевіряємо й спосіб вибору, а не лише незмінний варіант. Кандидати, критерій і час нового перегляду мають бути визначені заздалегідь. [1]

Якщо Петро обрав варіант через його минулий прибуток, цей самий прибуток не підтверджує вибір незалежно. QuantConnect пояснює, що такі дані вже належать до розробки. Чесне питання: що сталося після вибору? Поточний тест не може обирати власного переможця. Після завершення періоду й появи результатів визначена наперед процедура може використати їх для пізнішого вибору. Це не переписує попереднє зафіксоване рішення. [2]

Вікно вибору — відрізок історії, який використовуємо зараз. Ковзне вікно зберігає довжину й відкидає старі дані; розширюване зберігає початок і додає спостереження. TimeSeriesSplit зі scikit-learn типово розширює навчальну вибірку, але дозволяє обмежити її розмір. Довжину й частоту оновлень визначте до тесту. Для зіставних показників документація вимагає однакових інтервалів між спостереженнями; за нерегулярних записів перевіряйте й фактичну календарну тривалість. [3]

Уявіть, що результат останнього навчального спостереження завершується лише під час наступного тесту. На момент вибору він ще невідомий. Сортування таблиці за часом цього не виправляє. Параметр gap у TimeSeriesSplit дозволяє вилучити спостереження наприкінці навчання. Потрібний проміжок визначають доступність входів і завершення результатів, а не найгарніша крива. Навіть правильний проміжок не доводить незалежності сусідніх періодів і не усуває всіх викривлень. [3]

Витік не обов’язково прихований у торговому правилі. Середнє для зміни масштабу значень могло бути обчислене з усього файлу, включно з майбутнім тестом. scikit-learn застерігає про те саме під час заповнення пропусків або вибору вхідних ознак. Параметри перетворень слід визначати лише на навчальній частині, потім застосовувати до тестової. Повторюйте розділення на кожному кроці; пізніший поділ уже перетвореної таблиці не усуне витоку. Зберігайте й версію даних та час їх доступності. [4]

Після окремих тестів потрібно правильно об’єднати результати. QuantConnect описує моделі ціни та обсягу виконання, які можуть містити спред і Slippage. Далі в нашій оцінці потрібен послідовний облік: не зараховувати прибутки розробки на тестовий рахунок і не рахувати тести з перекриттям повторно без пояснення. Змінюючи варіант, поясніть долю відкритих позицій, капіталу й витрат переходу. У прикладі нижче кожен період для простоти завершується без позиції. [5]

Петро може змінювати вікна, цілі або кандидатів, доки тест не виглядатиме привабливо. Тоді він уже використав тестову серію для розробки. Bailey та співавтори досліджують випадкові успіхи за повторного пошуку на тих самих даних. Записуйте всі перевірені процедури й відокремлюйте подальшу перевірку на ще не використаній історії. Сам рух у часі не є статистичною гарантією чи оцінкою ймовірності перенавчання — надмірного пристосування до минулих даних. [6]

Зберігайте межі вікон, кандидатів, оцінки вибору, фактичні рішення й наступні результати після витрат. Доповніть суму збитками, кількістю спостережень і порівнянням за однакових умов. Американська NFA нагадує, що гіпотетичні результати не враховують усіх проблем ліквідності, прослизання й поведінки за справжніх втрат; її рекламні правила стосуються визначених членів. Малий збитковий приклад не спростовує всю методику. Додатна сума теж не доводить майбутньої переваги. [7]

ПрикладПРИКЛАД · 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Документація
Переглянуто: Спочатку джерела · Не інвестиційна порада