601 / 691LOOK

Look-ahead Bias

Искажение из-за использования будущей информации

Look-ahead Bias возникает, когда историческое решение использует информацию, которая тогда ещё не была доступна. Ошибка может скрываться во временной метке, завершённой свече, пересмотренной базе данных или подготовке модели. Хорошие результаты на истории тогда не описывают процедуру, которую можно было выполнить в тот момент.

Look-ahead Bias — временная ошибка оценки, при которой информация, доступная лишь позднее, используется для более раннего решения, обучения или выбора правила. Само по себе последующее измерение результата уже сделанного прогноза такой ошибкой не является.

QuantConnect описывает Look-ahead Bias как принятие решений с информацией, которая станет доступна лишь позже. Поэтому наш контрольный вопрос таков: что процедура действительно могла знать в момент этого решения? Недостаточно того, что данные относятся к тому же календарному дню. Время события, публикации, получения и отправки заявки может различаться. Для каждого входного значения нужно подтвердить его доступность и порядок операций; правильно отсортированная таблица сама по себе этого не доказывает. [QuantConnect — Custom Securities: Avoid Look-Ahead Bias]

Временная модель LEAN передаёт завершённую точку данных согласно её EndTime. Наш вывод: окончательная цена закрытия, максимум, минимум и объём всего периода не должны определять более раннее решение внутри этого периода. При нескольких таймфреймах каждому ряду нужно собственное правило доступности. Сдвиг строки может исправить конкретную ошибку, но не заменяет проверку часовых поясов, завершения периода и задержек источника. Использование уже известного предыдущего значения отличается от использования будущего окончательного значения текущей незавершённой свечи. [QuantConnect — Time Modeling: Timeslices]

Документация FRED различает сведения о прошлом, доступные сегодня, и сведения, известные в исторический период; ALFRED позволяет выбрать соответствующий период доступности. Наше методологическое требование: при работе с показателем, исправленным позднее, нужно сохранить доступную тогда версию и время её публикации. Дата экономического периода не заменяет дату выпуска. Даже историческая версия сама по себе не подтверждает точную доступность внутри дня; её нужно проверять отдельно. Позднейшую поправку нельзя незаметно подставлять в более раннее решение. [Federal Reserve Bank of St. Louis — FRED API Real-Time Periods]

scikit-learn требует обучать преобразования только на обучающих данных, а затем применять то же обученное преобразование к тестовым. Наша временная проверка охватывает нормализацию, заполнение пропусков, отбор признаков и целевые значения для обучения. Результат будущего периода можно использовать для последующей оценки прогноза; его нельзя использовать для более раннего создания этого прогноза или выбора правила. При постоянном переобучении в обучение могут попадать только целевые значения, уже известные на соответствующий момент. [scikit-learn — Common Pitfalls: Data Leakage]

TradingView объясняет, что его эмулятор брокера при работе с историческими данными OHLC использует предположения о движении внутри свечи. Наше разграничение: зафиксированные максимум и минимум сами по себе не определяют фактическую последовательность всех цен и заявок. Тест должен разделять возникновение сигнала, отправку заявки и возможное исполнение. Выбор входа или выхода по экстремуму, известному лишь позднее, — иная проблема, чем просто оптимистичная модель издержек. Более подробные данные могут уточнить проверку, но не гарантируют реальное исполнение. [TradingView — Strategies: Broker Emulator and Lookahead Bias]

Freqtrade сравнивает результаты повторных тестов и изменения индикаторов или сигналов; он также обращает внимание на доступ к будущим строкам и агрегирование по всей таблице. Поэтому наш аудит исследует не только синтаксис сдвига, но и происхождение каждого вычисления. Документация прямо ограничивает проверку сигналами, сработавшими в тесте. Отсутствие замечаний инструмента не подтверждает корректность непроверенных ветвей. Результат нужно читать вместе с покрытием и настройками симуляции; некоторые конфигурации лимитных заявок могут давать ложные срабатывания. [Freqtrade — Lookahead Analysis]

TradingView отличает Look-ahead Bias от Overfitting — подгонки правил под конкретные данные разработки. Наш вывод: даже допустимый по времени тест может быть результатом обширного поиска победителя. И наоборот, простое правило может содержать утечку будущей информации. После исправления нужно пересчитать результаты и зафиксировать изменение; сохранять исходный прибыльный отчёт нельзя. Разница между историческим и последующим результатом сама по себе не показывает, была ли причиной временная ошибка, изменение рынка или другое допущение. [TradingView — Strategies: Broker Emulator and Lookahead Bias]

NFA подчёркивает различие между гипотетическими результатами и реальной торговлей. Поэтому наша воспроизводимая запись включает версии данных и правил, момент доступности входных значений, состояние счёта, последовательность заявок и описанные издержки. Аудит должен уметь воспроизвести решение только на основе доступной тогда информации. Paper Trading может дать дополнительные текущие записи, но само по себе не гарантирует правильную подготовку данных или реальную ликвидность. Устранение доказанной ошибки не обещает будущей доходности. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]

ПримерПРИМЕР · LOOK

Прибыль от знания будущего не является доступной стратегией

Наша вымышленная модель содержит четыре последовательных периода A, B, C и D. Цены открытия равны [100, 100, 100, 100] USD/BTC, а цены закрытия — [110, 90, 120, 80] USD/BTC. Предыдущий завершённый период перед A открылся и закрылся по цене 100 USD/BTC. Каждый счёт начинает с 1000 USD без позиции, долга и внешних денежных потоков. При входе он покупает фиксированное количество 1 BTC по модельной цене открытия, а заранее определённый выход продаёт его на закрытии того же периода. Комиссия составляет 1 USD за каждую сторону исполненной сделки; без входа комиссии нет. Другие издержки и проскальзывание в этой модели не учитываются. Ошибочный вариант X покупает только тогда, когда уже знает, что цена закрытия начинающегося периода превысит цену его открытия. Его входы — [1, 0, 1, 0], а чистые результаты — [8, 0, 18, 0] USD. Сумма равна 26 USD, конечные денежные средства — 1026 USD. Допустимый по времени вариант Y применяет то же условие роста, но только к предыдущему завершённому периоду. Его входы — [0, 1, 0, 1], а чистые результаты — [0, -12, 0, -22] USD. Сумма равна -34 USD, конечные денежные средства — 966 USD. После каждого периода позиция обоих вариантов равна нулю. График сравнивает чистые результаты X и Y по отдельным периодам. Вариант X использует будущие данные для более раннего решения; поэтому его прибыль не является реализуемым доказательством преимущества. Убыток Y не оценивает результат реального рынка и не означает, что корректное время всегда приводит к убытку. Модельные цены не являются историческими ценами Bitcoin, а предполагаемое исполнение не гарантирует фактическое исполнение.

Для полной картины прочитайте эту статью вместе с Backtesting, Overfitting, Walk-forward Analysis, Survivorship Bias, Paper Trading. На эту статью также ссылаются Walk-forward Analysis, Overfitting, Survivorship Bias, On-chain Analysis.

01Достаточно ли сдвинуть все индикаторы на одну строку?

Нет. Сдвиг может устранить конкретное использование будущего значения, но не решает автоматически вопросы часовых поясов, задержанных публикаций, пересмотров и подготовки данных. Важна подтверждённая доступность каждого входного значения на соответствующий момент.

02Всегда ли использование будущего результата при оценке является ошибкой?

Нет. Результат, узнанный позднее, необходим для оценки ранее сделанного прогноза. Ошибка возникает, если эта будущая информация попадает в более раннее решение, обучение или выбор правила для такого прогноза.

DOC · 001QuantConnect — Time Modeling: TimeslicesДокументация ↗DOC · 002QuantConnect — Custom Securities: Avoid Look-Ahead BiasДокументация ↗DOC · 003Federal Reserve Bank of St. Louis — FRED API Real-Time PeriodsДокументация ↗DOC · 004scikit-learn — Common Pitfalls: Data LeakageДокументация ↗DOC · 005TradingView — Strategies: Broker Emulator and Lookahead BiasДокументация ↗DOC · 006Freqtrade — Lookahead AnalysisДокументация ↗DOC · 007NFA — Use of Promotional Material Containing Hypothetical Performance ResultsДокументация ↗
Сначала источники · Не является инвестиционной рекомендацией