597 / 691BT

Backtesting

Ретроспективне тестування стратегії

Backtesting моделює заздалегідь описані правила на історичних даних. Результат залежить від часу доступності інформації, відбору даних, моделі виконання та витрат. Історичний прибуток не є реально здійсненою угодою чи гарантією майбутньої дохідності.

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

Backtesting відтворює правила на історичних даних і обчислює, який результат вони дали б за обраних припущень. Bailey та співавтори описують його як історичну симуляцію алгоритмічної стратегії й водночас застерігають щодо ризику хибних відкриттів. Наше редакційне розмежування: результат стосується конкретної версії правил, даних і моделі виконання. Він не доводить, що хтось справді здійснив ці угоди. Відтворюваний розрахунок може виявити помилку чи невдалу ідею, але сам по собі не перетворює минуле на надійний прогноз. [Bailey et al. — The Probability of Backtest Overfitting]

QuantConnect описує упередження, за якого симуляція використовує майбутню інформацію, наприклад фінансові дані ще до їх оприлюднення або їхні пізніші виправлення. Наше правило часової доступності вимагає для кожного вхідного значення вказувати момент, коли воно стало доступним, а не лише дату періоду, до якого воно належить. Сигнал із закритої свічки не може без додаткового припущення отримати угоду за ціною, якою вже неможливо було скористатися. У нашому прикладі попередні ціни закриття використовуються лише для наступного періоду, а модель явно задає виконання за його ціною відкриття. [QuantConnect — Research Guide]

QuantConnect застерігає щодо тестування лише цінних паперів, які дожили до кінця періоду, та ретроспективного використання нинішнього складу індексу. Наше загальніше питання — чи зберігає історичний набір також інструменти, які були доступні тоді, але згодом зникли. Необхідно документувати відсутні дані, зміни методики та вибір ринків. У симуляції для біткоїна не можна автоматично вважати ціну одного сервісу досяжною ціною в іншому сервісі. Чистота даних означає простежуваність виправлень, а не видалення незручних результатів. [QuantConnect — Research Guide]

Документація QuantConnect відокремлює сигнал і ордер від моделі, яка визначає ціну та кількість виконання. Вона також звертає увагу на різницю між частковим виконанням у реальній торгівлі та припущенням повного виконання в готових моделях. Наша вимога — описати, коли ордер можна виконати, що відбувається за недостатньої ліквідності та як обробляється неактуальна ціна. Сам по собі дотик до цінового рівня в історичних даних не доводить наявності контрагента для ордера довільного розміру. Результат моделі виконання залишається припущенням симуляції. [QuantConnect — Trade Fills: Key Concepts]

QuantConnect описує Slippage як різницю між очікуваною та фактичною ціною виконання й зазначає вплив затримки, з’єднання та ринкових умов; відхилення може бути як сприятливим, так і несприятливим. Наша перевірка витрат відокремлює комісії, ціну виконання та можливі додаткові витрати утримання або фінансування. Витрати, уже враховані в ціні виконання, не можна віднімати вдруге. Нульове значення — це конкретне припущення моделі, а не доказ існування ринку без витрат. Чутливість до вищих витрат допомагає визначити, чи залежить невеликий історичний прибуток від оптимістичних налаштувань. [QuantConnect — Slippage: Key Concepts]

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

Bailey та співавтори показують, що повторний пошук найкращої конфігурації на тих самих даних підвищує ризик хибних відкриттів і підлаштування під минулий шум. Наше правило звітування — наводити історію спроб, а не лише криву переможця. Це охоплює зміни параметрів, періодів і вибору інструментів. Результат, обраний після багатьох випробувань, не має тієї самої доказової цінності, що й заздалегідь визначене незмінене правило. У нашому простому прикладі їхній метод оцінювання ймовірності перенавчання не виконується й не замінюється єдиним поділом даних. [Bailey et al. — The Probability of Backtest Overfitting]

NFA застерігає, що гіпотетичні результати не відображають реальної торгівлі, можуть використовувати знання заднім числом і недосконало моделювати ліквідність, Slippage чи поведінку за реальних збитків. Тому наш звіт має зберігати версію даних і коду, правила, припущення щодо виконання, враховані витрати та повний перелік змодельованих угод. Загальна дохідність потребує контексту ризику й порівняння за однакових умов; відібраного красивого графіка недостатньо. Навіть безпомилкова реалізація історичного тесту не гарантує здійсненності чи дохідності на майбутньому ринку. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]

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

Сигнал із минулого періоду, виконання в наступному

Наш вигаданий приклад використовує чотири однакові за тривалістю періоди A, B, C і D. Початкова сума готівкових коштів становить 1000 USD, немає відкритої позиції, боргу, внесень чи зняття коштів. Дві ціни закриття перед періодом A становлять [100, 100] USD/BTC. Ціни відкриття періодів від A до D становлять [101, 103, 102, 105] USD/BTC, а ціни закриття — [102, 101, 104, 103] USD/BTC. Заздалегідь визначене правило купує 1 BTC на початку періоду лише тоді, коли остання завершена ціна закриття перевищує попередню завершену ціну закриття; наприкінці того самого періоду продає все. Отже, сигнали становлять [0, 1, 0, 1], де 1 означає угоду, а 0 — бездіяльність. Модель передбачає повне виконання точно за наведеними цінами відкриття та закриття, нульові спред і Slippage, без інших витрат, окрім комісії 0.1 USD за кожну купівлю або продаж. У B купівля відбувається за 103 USD, а продаж за 101 USD, у D — за 105 USD і 103 USD. Валові результати періодів становлять [0, -2, 0, -2] USD. Чотири виконані операції купівлі або продажу разом коштують 0.4 USD, а чисті результати становлять [0, -2.2, 0, -2.2] USD. Валовий підсумок становить -4 USD, чистий підсумок — -4.4 USD, а кінцева сума готівкових коштів — 995.6 USD. Графік показує чисті внески окремих періодів, а не залишок на рахунку чи ймовірність. Це симуляція часової послідовності та обліку, яку можна перевірити вручну, а не реальні ринкові дані, оптимізація чи доказ майбутньої результативності.

Для повної картини прочитайте також Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. На цю статтю також посилаються Technical analysis, OHLCV, Timeframe, Candlestick chart.

01Чи доводить прибутковий історичний тест, що стратегія зароблятиме?

Ні. Результат може залежати від конкретних даних, витрат, моделі виконання чи вибору найкращого варіанта. Потрібно перевірити часову коректність, припущення та процедуру відбору; навіть після цього гарантії майбутньої дохідності немає.

02Чи достатньо відняти комісії лише від кінцевого прибутку?

Лише якщо цей спосіб точно відповідає моделі й не впливає на доступний капітал або подальші рішення. Зазвичай потрібно обліковувати витрати під час відповідних подій, розрізняти ціну виконання та комісії й запобігати подвійному відніманню.

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