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]
Сигнал із минулого періоду, виконання в наступному
Для повної картини прочитайте також Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. На цю статтю також посилаються Technical analysis, OHLCV, Timeframe, Candlestick chart.
01Чи доводить прибутковий історичний тест, що стратегія зароблятиме?+
Ні. Результат може залежати від конкретних даних, витрат, моделі виконання чи вибору найкращого варіанта. Потрібно перевірити часову коректність, припущення та процедуру відбору; навіть після цього гарантії майбутньої дохідності немає.
02Чи достатньо відняти комісії лише від кінцевого прибутку?+
Лише якщо цей спосіб точно відповідає моделі й не впливає на доступний капітал або подальші рішення. Зазвичай потрібно обліковувати витрати під час відповідних подій, розрізняти ціну виконання та комісії й запобігати подвійному відніманню.