Рядок ринкових даних може бути цілком точним і водночас непридатним як доказ для бектесту. Угода відбулася, ціна правильна, часова позначка коректна, але потік міг надійти із запізненням, постачальник даних міг виправити значення пізніше або вказаний ринок міг бути недоступний для вашої стратегії.
Щоб зрозуміти, чи можна було торгувати на основі історичних даних, перевіряйте не лише час події. Потрібно знати, що саме описує рядок, коли він став доступним системі, якому майданчику чи інструменту відповідає, а також чи могли котирування або угода реально стати підставою для вашого ордера.
Чи достатньо для бектесту правильної історичної ціни?
Ні. Точність відповідає на запитання: «Яку ціну зрештою зафіксувало джерело?» Бектест також має відповісти: «Що могла знати моя стратегія на момент ухвалення рішення?» і «Що вона могла виконати?» Це різні запитання.
Уявімо, що криптовалютна угода відображається о 12:00:00.120, але потік постачальника даних надходить у ваш процес о 12:00:00.480. Стратегія, яка ухвалює рішення о .200, не може використати цю угоду, хоча час події передує рішенню. Якщо в історичному файлі збережено лише час події, бектест може непомітно надати стратегії інформацію, якої її робочий процес у реальному часі ще не отримав би.
| Час або поле | Що воно показує | Помилка бектесту, якщо даних немає |
|---|---|---|
| Час події | Коли, за даними біржі, сталася подія | Плутанина між часом на ринку та доступністю для стратегії |
| Час отримання | Коли колектор отримав повідомлення | Використання даних із затримкою так, ніби вони надійшли миттєво |
| Послідовність або ID оновлення | Місце події в порядку потоку | Застосування оновлень не за порядком або їх непомітний пропуск |
| Час виправлення | Коли стало відоме виправлене історичне значення | Бектест на значенні, якого не було в початковому потоці |
Якщо у вашому архіві немає часу отримання, чесно визнайте цю прогалину. Можна перевірити припущення щодо затримки або обмежити висновок дослідженням за часом події. Відновити точний набір доступної інформації за часовими позначками, які ніколи не зберігалися, неможливо.
Як визначити, чи можна було виконати ордер за котируванням?
Почніть із ринку, куди надійшов би ваш ордер. Зведені найкращі ціни купівлі та продажу можуть об’єднувати кілька майданчиків, але це не доводить, що ваш рахунок мав доступ до зазначеного обсягу, що котирування залишалося чинним на момент надходження ордера або що майданчик прийняв би ордер такого типу.
Для ринкового ордера виконання за середньою ціною зазвичай є вигадкою. Корисніша оцінка проходить видиму книгу ордерів відповідно до розміру ордера, а потім додає комісії та припущення щодо затримки або впливу на ринок. Якщо у вас є лише дані верхнього рівня книги, обмежте висновок: можна оцінити перший рівень, але не можна вивести глибину, яку ніколи не записували.
Для лімітного ордера дотик ціни до ліміту не означає виконання. Доступний обсяг можуть спершу використати ордери, що стоять перед вашим у черзі. За звичайними знімками книги позицію в черзі зазвичай неможливо визначити, тож правило виконання за дотиком ціни слід вважати оптимістичним сценарієм, а не фактом про те, що сталося.
Хвилинний бар може показати, що мінімум перетнув вашу лімітну ціну. Але він не покаже, чи ваш пасивний ордер надійшов на майданчик до цього мінімуму, який там був обсяг торгів і скільки ордерів у черзі стояло перед вами.
Що перевірити, перш ніж довіряти архіву ринкових даних?
Спершу я перевіряю звичайні, базові речі. Вони допомагають виявити більше проблемних досліджень, ніж складна модель виконання, побудована поверх несправного потоку даних.
- Повнота даних: Чи є пропущені інтервали, дублікати подій, прогалини в послідовностях або незрозумілі сплески нульового обсягу?
- Ідентифікація ринку: Чи відповідає символ тій самій біржі, контракту, валюті котирування та специфікаціям інструмента протягом усього періоду?
- Доступність: Чи збережені і час події, і час отримання? Якщо ні, яке припущення щодо затримки обмежує результат?
- Виправлення: Чи можна відрізнити початкове повідомлення від пізніших доповнень або виправлень постачальника даних?
- Одиниці виміру: Чи однаково інтерпретуються ціни, обсяги, множники контрактів і часові позначки?
Остання перевірка здається аж надто простою. Якось я цілий ранок шукав у даних очевидну зміну режиму волатильності, а виявилося, що після переходу на інший потік змінилися одиниці виміру поля обсягу. Графік був чудовий, але одиниця виміру — неправильна.
Як перевірити, чи впливає доступність даних на результат?
Проведіть невеликий тест чутливості поблизу порога ухвалення рішень стратегією. Зсуньте час доступності даних на реалістичні затримки, відкиньте оновлення з порушеною послідовністю й порівняйте виконання ордерів за книгою відповідного майданчика там, де вона доступна. Наведіть і початковий, і погіршений результати. Якщо навіть незначна затримка нівелює ефект, стратегія може залежати від інформаційної переваги, яку ваша система збору даних не здатна надійно забезпечити.
Для конкретного прикладу припустімо, що сигнал спрацьовує, коли найкраща ціна купівлі зростає на один тик. Відтворіть торги спершу за часом події біржі, а потім за часом отримання колектором. Якщо у першому варіанті укладено 40 угод, а в другому — 27, ця різниця є частиною доказів на користь стратегії. Так само, як і її результати в кожному варіанті відтворення. Не приховуйте слабший варіант лише тому, що його дані виглядають менш охайно.
Паперова торгівля — корисний наступний етап перевірки, бо вона виявляє затримки потоку, застарілі котирування, помилки зіставлення символів і обмеження майданчиків у тому самому робочому процесі, що й дослідницька система. Втім, вона не відтворить кожну ситуацію з чергою ордерів або впливом на ринок. Пам’ятайте про ці межі.
Що на практиці означають «дані, придатні для торгівлі»?
Це означає, що бектест може пояснити, коли відбулося спостереження, коли стратегія могла його використати, з якого ринку воно надійшло та які дані про виконання підтверджують прийняте припущення. Чистий ціновий ряд — це лише початок. Дослідження стає переконливим, коли його припущення щодо часу, доступу та виконання витримують перевірку, а результат залишається осмисленим і після того, як ви зробите ці припущення менш сприятливими.
← Усі статті


