Як крок за кроком провести бектест криптовалютної стратегії
Бектест — це контрольований історичний експеримент. Його цінність не зводиться до підсумкової дохідності: він вимагає зафіксувати правила, вхідні дані, реалістичні припущення, причини відмови та рішення, яке можна відтворити без пошуку налаштувань, що дали привабливу криву.
Сформулюйте запитання до вибору даних
До відкриття звіту зафіксуйте гіпотезу, ринок, напрямок, таймфрейм, правила входу й виходу, спосіб розрахунку розміру позиції та обмеження ризику. Одразу вкажіть орієнтир для порівняння й умову, за якої ідею потрібно відхилити. Так результат не зможе заднім числом визначити власні критерії успіху.[1][5]
Пишіть специфікацію так, щоб інша людина могла повторити тест без додаткових пояснень. Запитання «чи прибутковий цей індикатор?» надто розмите. Краще запитати: чи перевершує фіксований набір правил обраний орієнтир після реалістичних витрат і чи залишається просадка нижчою за наперед установлену межу? Зафіксуйте всі рішення, прийняті до запуску, зокрема вибір торгових пар і періоду. Якщо після перегляду результату ви змінюєте критерій успіху, вважайте це новим експериментом і збережіть початкове рішення.
Визначте також одиницю аналізу. Стратегія може виглядати стійкою за закритими угодами, але брати надмірний ризик усередині позиції. Велика кількість угод теж не означає диверсифікації, якщо всі вони залежать від одного ринкового чинника. Вирішіть заздалегідь, на якому рівні оцінюється результат: окремий інструмент, портфель, місяць, ринковий режим чи весь рахунок. Від цього залежить, які питання про концентрацію та просадку має розкривати звіт.
| Параметр | Приклад | Навіщо фіксувати |
|---|---|---|
| Набір інструментів | Ф’ючерси BTCUSDT і ETHUSDT | Не дає змоги додати лише успішні пари після тесту |
| Період | 01.01.2023–31.12.2025 | Дає змогу перевірити різні ринкові режими |
| Ризик | Початкова позиція 1%, стоп 8%, межа просадки 15% | Відокремлює дохідність від здатності пережити збитки |
| Орієнтир | Купівля й утримання плюс варіант без сигналів | Показує, чи дає ускладнення додаткову цінність |
Виберіть дані, що відповідають майбутньому рішенню
Використовуйте той самий тип ринку й ті самі інструменти, на яких плануєте працювати. Період має охоплювати різні режими тренду та волатильності, а за потреби — делістинги й прогалини в даних. Для кожного індикатора залиште достатньо історії для прогрівання. Тривалий календарний період сам собою не створює різноманіття, якщо всі угоди припали на один короткий ринковий режим.
Розділіть історію на дані для розроблення й дані для незалежної перевірки. На першій частині можна формулювати та налагоджувати гіпотезу; друга не повинна впливати на вибір правил. Якщо контрольна перевірка провалилася й ви змінили поріг, ці дані вже вплинули на стратегію та більше не є недоторканими. Залиште додатковий резервний період або почніть збирати спостереження в режимі Paper замість повторного підганяння правил під ту саму історію.
Повнота даних — це не лише кількість свічок. Перевірте, чи існував інструмент у вибраний період, чи вистачало ліквідності для передбаченого обсягу, чи не змінювалася специфікація контракту й чи доступні потрібні ряди фінансування або відкритого інтересу. Явно записуйте винятки. Нульове значення може бути коректним спостереженням, а відсутність значення означає невизначеність і має бути зазначена в обмеженнях.
- Перевірте часовий пояс свічки, межі інтервалів, відсутні смужки та відображення інструментів.
- Зберігайте період вибірки для проектування та недоторканий період поза вибіркою для підтвердження.
- Не дозволяйте індикаторам зчитувати свічки або знімки ринку, які були недоступні під час оцінки.
- Записуйте попередження, коли фінансування, відкриті інтереси, зовнішні сигнали або повнота набору інструментів є неповним.
Змоделюйте виконання до розрахунку результатів
Визначте момент, коли сигнал справді стає відомим, і ціну, за якою заявку можна було виконати після цього моменту. Максимум і мінімум свічки показують діапазон, але не порядок подій усередині неї. Урахуйте вхід і вихід, спред, комісії мейкера або тейкера, несприятливе прослизання, фінансування ф’ючерсів та обмеження ліквідації.[1][4]
Побудуйте часову шкалу для однієї типової угоди. Позначте свічку, після закриття якої з’явився сигнал, перший момент його розрахунку ботом, час надсилання заявки та першу ціну, яку модель має право використати для виконання. Повторіть перевірку для стоп-лосу, тейк-профіту, трейлінг-умов, додавань за сіткою, часткових виходів і примусового закриття. Такий розбір часто виявляє виконання на тій самій свічці й надто вигідний порядок подій до того, як помилка спотворить тисячі угод.
Важливо враховувати призначення заявки. Ринкова заявка зазвичай забирає ліквідність і не гарантує ціну. Лімітна заявка в книзі просить конкретну ціну, але може не виконатися або виконатися частково. Не можна одночасно призначити їй комісію мейкера й гарантувати негайне повне виконання. Якщо даних недостатньо для моделювання черги та глибини книги, виберіть консервативне правило, опишіть його й перевірте результат за затриманих і пропущених виконань.
чистий PnL = валовий торговий PnL − комісії входу − комісії виходу − витрати прослизання + результат фінансуванняПоказуйте складові окремо. За високого обороту позитивний валовий результат може зникнути, а фінансування буває як надходженням, так і витратою — залежно від напрямку позиції та часу розрахунку.
Аналізуйте траєкторію та розподіл, а не одну цифру дохідності
Вивчіть максимальну просадку, кількість угод, профіт-фактор, частку прибуткових угод, середній час утримання та серії збитків. Перевірте, чи не створена основна частина результату однією угодою або одним інструментом. Порівняйте валовий і чистий PnL. Невелика вибірка з разючою дохідністю дає менше підстав для висновку, ніж помірний результат, що повторився на незалежних періодах.
Будь-який коефіцієнт потрібно читати разом із його чисельником, знаменником і розміром вибірки. Висока частка прибуткових угод може поєднуватися з рідкісними збитками, які перекривають увесь попередній прибуток. Профіт-фактор нестабільний за малої кількості угод і може залежати від одного викиду. Річна дохідність здатна перетворити короткий вдалий період на оманливу довгострокову цифру. Тому поруч із коефіцієнтами показуйте кількість угод, тривалість спостереження, час у позиції та абсолютні суми.
Зміни кривої капіталу мають пояснюватися конкретними подіями. Знайдіть пік і мінімум максимальної просадки, найдовший період нижче попереднього максимуму, найбільшу групу витрат, а також найприбутковіші та найзбитковіші угоди. Потім відкрийте відповідні рядки журналу й перевірте сигнал, розмір, припущену ціну виконання та причину виходу. Якщо суттєву зміну не можна пов’язати зі зрозумілою подією, спочатку розберіться з даними або розрахунком.
- Відкрийте криву капіталу та визначте кожен великий стрибок або тривале відновлення.
- Простежте ці кроки до окремих угод і причин їх виходу.
- Окремі комісії, фінансування та торгівля PnL замість пояснення лише загальної суми.
- Порівнюйте результати за періодом, інструментом і режимом ринку, а не лише в сукупності.
- Запишіть аномалії та попередження, перш ніж прийняти рішення про проходження тесту.
Перевірте стратегію на даних, не використаних під час розробки
Залиште контрольну вибірку, посуньте початок і кінець періоду, погірште комісії та прослизання, трохи змініть ключові параметри. Стійке правило зазвичай втрачає якість поступово. Якщо один невеликий крок параметра повністю знищує результат, знайдена перевага може бути випадковістю конкретного історичного відрізка.[5][6]
Виберіть перевірки стійкості до того, як дізнаєтеся, які з них стратегія витримає. Змінюйте параметри в обидва боки, зсувайте межі періоду, діліть дані за трендом і волатильністю, вилучайте найкращий інструмент і найбільшу угоду. Мета не в тому, щоб кожен відрізок був прибутковим, а в тому, щоб зрозуміти, де гіпотеза працює, де припиняє працювати й чи мають ці межі економічне пояснення.
Зберігайте й відхилені варіанти. Якщо приховати невдалі спроби, підсумкова конфігурація здаватиметься незалежнішою, ніж є насправді, а ті самі ідеї згодом можуть бути перевірені повторно. Коротка таблиця змін, причин і результатів показує реальний обсяг пошуку. Що більше варіантів було переглянуто, то сильнішим має бути незалежне підтвердження.
| Перевірка | Запитання | Тривожна ознака |
|---|---|---|
| Контрольна вибірка | Чи працює зафіксоване правило на пізніших даних? | Позитивний результат є лише на даних розроблення |
| Стрес витрат | Чи зберігається перевага за вищих витрат? | Невелике погіршення робить чистий PnL від’ємним |
| Зміна параметрів | Чи подібні результати сусідніх значень? | Увесь прибуток зосереджений в одній точці |
| Поділ за режимами | За яких умов стратегія не працює? | Увесь прибуток отримано в одному трендовому періоді |
Завершіть дослідження письмовим рішенням і наступним обмеженим тестом
До будь-яких нових змін виберіть одне рішення: відхилити, переглянути або перейти до наступного етапу. Відхилення — нормальний і корисний результат дослідження, якщо припущення не підтвердилися. Перегляд допустимий лише з конкретної виявленої причини. Перехід далі означає перевірку тієї самої конфігурації в Paper або тестовому середовищі біржі, а не негайний запуск із реальним капіталом.
Записка про рішення має бути короткою, але конкретною: які наперед задані критерії виконано, які обмеження залишаються суттєвими, що суперечить гіпотезі й на яке запитання відповість наступний етап. Під час перегляду змінюйте лише те, що пов’язано з виявленою причиною. Під час переходу збережіть ідентифікатор конфігурації, межу ризику, очікувану частоту сигналів і допустимі розбіжності, щоб коректно порівняти Paper або тестове середовище з історичною моделлю.
Заздалегідь визначте причини для повторної перевірки. Зміна правил біржі, попередження про прогалини в даних, редагування стратегії, стале розходження між змодельованими й спостережуваними виконаннями або новий ринковий режим роблять попередні висновки менш надійними. Валідація — це цикл зі зрозумілими умовами повернення на попередній етап, а не одноразове схвалення бота.
Проведіть один відтворюваний бектест
Заповніть дослідницький запис до перегляду підсумкового PnL, а потім послідовно перевірте кожен етап.
- Зафіксуйте гіпотезу, повну конфігурацію, набір інструментів, точні дати, початковий баланс, орієнтир та умову відхилення.
- Запустіть тест із явними витратами й збережіть попередження, показники, криву капіталу та журнал угод.
- Поясніть три найбільші прибуткові та збиткові угоди й визначте, що формує чистий PnL.
- Повторіть тест на недоторканих даних і за менш вигідних витрат, не змінюючи правил.
- Запишіть рішення «відхилити», «переглянути» або «перейти далі» й укажіть, які дані потрібні для наступного рішення.
Дані для відтворюваності дослідження
Зберігайте ці вхідні дані та результати разом, щоб інший фахівець міг відтворити запуск.
- Версія конфігурації, біржа, тип ринку, інструменти, напрямок, таймфрейм і точні дати.
- Повнота даних, період прогрівання індикаторів, попередження про пропуски та режим виконання.
- Початковий баланс, розмір позиції, плече, комісії, прослизання, фінансування та модель ліквідації.
- Валовий і чистий PnL, просадка, кількість і розподіл угод, орієнтир та суттєві попередження.
- Результат на контрольній вибірці, стрес-тести, відхилені варіанти й підсумкове рішення щодо етапу.
Чого не відтворює навіть ретельний бектест
Історичні свічки та знімки книги заявок не дають змоги повністю відновити майбутню глибину ринку, місце заявки в черзі, затримку, часткове виконання, відхилення заявок, збої біржі, зміну правил інструментів або майбутні ставки фінансування. Бектест показує, як фіксоване правило працювало на відомих історичних даних. Це не прогноз, не гарантія й не підстава збільшувати ризик без перевірки в Paper, тестовому середовищі, а потім на малому реальному обсязі. На висновки також впливають рішення дослідника: склад інструментів, період, орієнтир, параметри та момент зупинки пошуку. Зберігайте ці рішення й сприймайте майбутні розбіжності як нову інформацію.
Джерела та додаткове читання
Поведінку продукту звірено з документацією та кодом SteadyEdge, а змінні відомості про біржі й платформи ведуть на актуальні офіційні джерела.
- Як SteadyEdge оцінює стратегіїSteadyEdge
- Запуск ретроспективної перевіркиДовідковий центр SteadyEdge
- Як читати звіт про ретроспективну перевіркуДовідковий центр SteadyEdge
- Чому результати реальної торгівлі та ретроспективної перевірки відрізняютьсяДовідковий центр SteadyEdge
- Як перенавчання під час ретроспективної перевірки у фінансах призводить до хибних відкриттівSignificance / Oxford Academic
- Глибоке навчання з підкріпленням для торгівлі криптоактивами: практичний підхід до усунення перенавчання під час ретроспективної перевіркиarXiv
Розберіть повний звіт до ускладнення стратегії
Відкрийте публічну демоверсію та потренуйтеся читати налаштування, витрати, просадку, попередження й окремі угоди. Потім проведіть такий самий розбір для своєї найпростішої збереженої стратегії.