Look-ahead Bias — ошибка, при которой информация, доступная позднее, влияет на более раннее решение, обучение модели или выбор правила. Важен момент, когда данные действительно можно было узнать, а не только дата строки. Измерение впоследствии результата уже принятого решения само по себе не является ошибкой.
Пётр проверяет на компьютере, как его правило торговало бы в прошлом. Таблица уже содержит всю историю, поэтому программа может случайно прочесть то, чего Пётр тогда знать не мог. Именно так QuantConnect объясняет Look-ahead Bias. Для каждого входа нужно спросить: был ли он доступен в момент решения? Одной даты бывает недостаточно. Событие могло произойти утром, сообщение выйти позже, а до трейдера дойти ещё позднее. Тест должен соблюдать эту последовательность, а не просто сортировать строки по дате. [2]
Ценовая свеча подводит итог периода: цены открытия и закрытия, максимум, минимум и объём. Пока период продолжается, итоговые значения неизвестны. Поэтому Пётр не может купить в его начале, опираясь на окончательный максимум той же свечи. LEAN, движок QuantConnect, передаёт завершённые данные по EndTime, то есть времени окончания. При сочетании коротких и длинных периодов доступность проверяют отдельно для каждого ряда. Сдвиг на строку помогает только тогда, когда действительно соответствует доступности данных с учётом часовых поясов и задержек. [1]
Пётр скачивает экономические показатели с датами прошлых месяцев. Некоторые числа с тех пор исправили. Используя сегодняшнее уточнённое значение в прежнем решении, он добавляет знание, которого тогда не было. Поэтому St. Louis Fed различает сегодняшний взгляд на прошлое в FRED и исторические версии через ALFRED. Для таких данных нужна версия, опубликованная к тому моменту. Даты месяца, к которому относится показатель, недостаточно; даже историческая версия с дневной датой не устанавливает точного времени доступности внутри дня. [3]
Пётр отделяет старые данные для обучения от новых для тестирования. Но затем вычисляет среднее всей таблицы, чтобы преобразовать входы. Будущее возвращается другим путём. Документация библиотеки машинного обучения scikit-learn поэтому требует настраивать преобразования только на обучающей части и затем применять их к тестовой. Аналогично проверяют заполнение пропусков и выбор входных признаков. Важны и результаты, используемые для обучения: только что открытая сделка ещё не имеет известного итога. Оценить его позже можно, но вернуть во время прежнего обучения — нельзя. [4]
Историческая свеча показывает максимум и минимум, но сама не восстанавливает полную последовательность реальных сделок. Поэтому TradingView объясняет допущения симулятора о движении цены внутри свечи. Петру нужно различать появление сигнала, отправку заявки и возможное исполнение. Продажа на максимуме, найденном позднее, не становится доступным правилом лишь потому, что симуляция умеет найти эту цену. Утечка будущей информации и чрезмерно благоприятное допущение об исполнении — разные ошибки. Более подробные данные могут помочь, но не гарантируют реального исполнения. [5]
Freqtrade Lookahead Analysis сравнивает повторные тесты и ищет изменения индикаторов или сигналов. Он может обнаружить вычисление, обращающееся к будущим строкам. Но не проверит ветвь решений, которая за время испытания ни разу не сработала. Поэтому вместе с результатом нужно знать покрытие. Документация предупреждает и о ложных срабатываниях: например, когда стратегия ведёт себя по-разному при тестировании одного рынка и целой группы. Чистый результат не подтверждает всё, а найденную разницу следует объяснить. Проверка происхождения данных остаётся частью работы. [6]
Пётр убирает будущий вход, и замечательный результат ухудшается. Старый отчёт уже нельзя представлять как результат исправленного подхода. Но и после исправления проверки не заканчиваются. TradingView отличает Look-ahead Bias от Overfitting: переобученное правило слишком приспособилось к особенностям данных, на которых его разрабатывали. Это возможно и без будущей информации. Напротив, временная ошибка встречается даже в очень простом правиле. Само расхождение исторического и последующего результатов ещё не показывает, какая ошибка или перемена рынка его вызвала. [5]
Полезная запись позволяет восстановить знания Петра в тот момент: версию данных, правила, состояние счёта, доступные входы и отправленные заявки. К ним добавляют допущения об исполнении и расходы. Paper Trading, то есть учебная торговля без настоящих денег, может дать записи, сделанные по ходу работы, но симуляция по-прежнему отличается от реальной торговли. Американская организация National Futures Association (NFA) отмечает ограничения гипотетических результатов в отношении ликвидности, разницы между ожидаемой ценой и ценой исполнения и решений под давлением убытков; её рекламные правила относятся к определённым членам. Исправление временной ошибки делает тест честнее, но не обещает будущей прибыли. [7]
Когда тест заранее знает, какой период вырастет
Для полной картины прочитайте эту статью вместе с Backtesting, Overfitting, Walk-forward Analysis, Survivorship Bias, Paper Trading. На эту статью также ссылаются Walk-forward Analysis, Overfitting, Survivorship Bias, On-chain Analysis.
01Достаточно ли сдвинуть индикаторы на одну строку?+
Иногда это исправляет конкретную ошибку, но не служит универсальным решением. Данные могли опубликовать с задержкой, позже пересмотреть или уже использовать при подготовке всей таблицы. Важна доступность каждого входа в момент решения.
02Можно ли использовать более поздний результат для оценки?+
Да. Чтобы оценить прежний прогноз, нужно знать последующий результат. Ошибка возникает, когда результат возвращают в прошлое: он влияет на более раннее решение, обучение или выбор правила, хотя тогда ещё не был известен.