601 / 736LOOK

Look-ahead Bias

Викривлення через використання майбутньої інформації

Look-ahead Bias виникає, коли історичний тест для ухвалення рішення зазирає в майбутнє. Наприклад, купує вранці за правилом, яке використовує ціну, відому лише ввечері. Результат може переконувати, хоча з тодішньою інформацією так вирішити було неможливо.

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]

ПрикладПРИКЛАД · 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 не означає, що правильна часова послідовність завжди збиткова. Це вигадані ціни та спрощені виконання, а не історія Біткоїна чи гарантія реального виконання.

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