Backtesting — це моделювання результатів заздалегідь визначених торгових правил на історичних даних за обраних припущень щодо виконання угод і витрат.
Петро помічає, що після дня зростання іноді настає ще одне підвищення. Замість купувати навмання він записує правило й застосовує його до давніших цін. Це і є Backtesting: перевірка ідеї на минулому. Результат описує обрану модель, а не гроші, які Петро справді заробив. Bailey et al. пояснюють, чому привабливий історичний результат потрібно відрізняти від надійної перевірки стратегії. [1]
Петро може користуватися лише інформацією, доступною до угоди. Якщо правило спирається на ціну закриття дня, не можна на її підставі купити вранці того самого дня. QuantConnect називає це Look-ahead Bias: майбутня інформація потрапила в минуле рішення. Для оприлюднених даних важливий час публікації, а не тільки описаний період; пізніших виправлень також іще не знали. Тому наш приклад використовує завершені попередні закриття й лише наступну ціну відкриття. [2]
Вибір лише ринків або компаній, які існують сьогодні, створює інше викривлення. QuantConnect називає його Survivorship Bias і пояснює на прикладі перенесення нинішнього складу індексу в минуле. Для даних Bitcoin важливі також біржа, перебої й спосіб формування цін. Котирування одного сервісу не обов’язково було доступне на іншому. Помилки можна виправляти зі збереженням історії змін; видалення незручних обвалів змінило б саме досліджуване питання. [2]
Програма має визначити, коли, за якою ціною та в якому обсязі виконається ордер. Для цього потрібні моделі виконання, описані QuantConnect. Дотик графіка до ціни не означає, що за нею можна було придбати весь потрібний обсяг. Реальний ордер може виконатися частково; готові моделі цієї платформи в backtest припускають повне виконання. Треба перевірити й давність котирування та ліквідність — можливість знайти контрагента для угоди. [3]
Slippage — це різниця між очікуваною та отриманою ціною виконання; вона може допомогти трейдеру або зашкодити. QuantConnect описує її моделювання. Додаються комісії та, за потреби, фінансування й інші витрати стратегії. Уже враховану в ціні витрату не слід віднімати знову. Нульовий Slippage — припущення, а не встановлена властивість ринку. Повторний тест із гіршим виконанням і більшими витратами допомагає перевірити стійкість висновку. [4]
Якщо Петро налаштовує правило на тих самих даних, за якими оцінює успіх, він складає іспит із відомими відповідями. Спершу слід відвести давніші дані для розробки, а пізніші — для перевірки. TimeSeriesSplit зі scikit-learn допомагає зберегти цей порядок. Сам він не усуває витоку інформації під час підготовки даних, перекриття цільових періодів або повторного налаштування. Змінивши правило після перегляду перевірки, Петро використав і ці дані для розробки. [5]
Серед багатьох налаштувань якесь може випадково виглядати чудово. Показавши тільки переможця, ми приховаємо кількість спроб. Bailey et al. досліджують Backtest Overfitting: підлаштування стратегії під особливості конкретної історії. Записуйте перевірені параметри, періоди й ринки, а не лише найкращу криву. Автори пропонують окрему процедуру оцінювання ймовірності цієї проблеми; простий поділ даних її не замінює. Наш приклад такої оцінки не обчислює. [1]
Чесний звіт дає змогу відтворити дані, версію правил, угоди, витрати та збиткові періоди. Стратегію для порівняння треба оцінювати за зіставних припущень. Американська NFA також наголошує на перевазі погляду в минуле та відсутності досвіду справжніх втрат у гіпотетичних результатах; її рекламні правила стосуються визначених учасників. Backtest допомагає відхилити ідею або дослідити її глибше. Навіть правильний розрахунок не доводить, що вона працюватиме на іншому ринку чи в реальній торгівлі. [6]
Правило, яке можна перевірити вручну
Для повної картини прочитайте також Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. На цю статтю також посилаються Technical analysis, OHLCV, Timeframe, Candlestick chart.
01Чи означає прибутковий backtest, що стратегія дасть заробити?+
Він показує прибуток лише на вибраних минулих даних за певних припущень. Перевірте доступність інформації, виконання, витрати та кількість попередніх варіантів. Навіть незалежна історична перевірка не гарантує майбутніх результатів.
02Чи можна відняти всі комісії лише наприкінці?+
Тільки якщо це відповідає моделі й поточні витрати не змінили б доступних коштів або рішень. Зазвичай витрата належить відповідній угоді. Виконання й комісії потрібно врахувати без пропусків та подвійного списання.