Стратегія, яка обчислює сигнал за ціною закриття понеділка, не може подати ордер за ціною закриття того самого понеділка. Вона може надіслати ордер, коли ця ціна вже відома, а виконати його пізніше за доступною ціною. Такий невеликий вибір часу може вплинути на результат сильніше, ніж хитрий індикатор.
Перш ніж писати сигнал для денного тестування на історичних даних, зафіксуйте послідовність подій: коли свічка стає завершеною, коли стратегія виконує розрахунок, коли ордер надходить на ринок і за якою ціною його можна правдоподібно виконати. Якщо всі ці події відбуваються в одну мить, тестування оминуло найскладнішу частину.
Чи можна використати сьогоднішню ціну закриття, щоб торгувати за нею ж?
Зазвичай — ні. Сигнал, що залежить від остаточної ціни закриття, стає доступним лише після завершення аукціону закриття або останньої угоди. Виконання за тією самою ціною передбачає, що стратегія дізналася результат достатньо рано, аби торгувати за ціною, яка сама допомогла сформувати цей результат.
Розгляньмо просте правило: купувати, коли ціна закриття вища за 20-денну ковзну середню. На закритті в понеділок правило спрацьовує. У тестуванні, де купівля відбувається за ціною закриття понеділка, завершену ціну понеділка використано і для рішення, і для виконання. Для базової моделі на денних свічках чесніше припустити, що ордер формується після завершення понеділкової свічки й виконується не раніше відкриття у вівторок, із належними витратами.
Деякі стратегії подають ордери на аукціон закриття, спираючись на інформацію, доступну до граничного часу подання. Їх можна тестувати на історичних даних, але сигнал має використовувати лише дані, доступні до цього часу, а модель виконання має враховувати умови аукціону. Сам по собі «денний сигнал» не підтверджує жодної з цих умов.
Яку ціну виконання обрати для денного тестування на історичних даних?
Єдиної правильної ціни для всіх випадків не існує. Ціна відкриття наступної сесії — зрозуміле початкове припущення, якщо сигнал формується за завершеною денною свічкою, а ордер надсилається після цього. Така ціна не гарантована: через нічний розрив ринок може зміститися, а ринковий ордер спричинить витрати на спред, комісії та, можливо, вплив на ринок.
Для згаданого понеділкового сигналу припустімо, що ціна закриття в понеділок становить $100, а у вівторок ринок відкривається на рівні $103. Тестування за цінами закриття може показати невеликий прибуток, якщо умовно купити за $100. Вхід за ціною відкриття наступної сесії починається з $103. Різниця в $3 — це не «прослизання», яке можна прибрати налаштуваннями; це наслідок того, що сигнал став відомий лише після понеділкового закриття.
| Сигнал стає доступним | Можливий час виконання | Припущення моделі |
|---|---|---|
| Після денного закриття | Відкриття наступної сесії | Ордер може надійти на ринок до відкриття або під час нього |
| До граничного часу подання на аукціон закриття | Аукціон закриття | Сигнал використовує лише дані, доступні до граничного часу; виконання на аукціоні змодельоване |
| Після денного закриття | Пізніша ціна протягом дня | Стратегія чекає; для виконання потрібні внутрішньоденні дані й визначений графік |
На криптовалютних ринках «денне закриття» — це умовність, адже торгівля триває і через межу часової позначки. Стратегія все одно може спиратися на завершену денну свічку UTC, але має дочекатися її завершення й надходження даних. Якщо ваш конвеєр даних остаточно формує свічку із запізненням на кілька секунд, ордер за ціною на межі інтервалу особливо важко обґрунтувати.
Як моделювати ордери, якщо в мене є лише денні свічки?
Чітко визначте, що можна і чого не можна дізнатися зі свічки. Денних OHLCV-даних може вистачити для наближеного моделювання виконання за ціною відкриття наступної сесії, але вони не покажуть спред на момент надходження ордера, рух ціни протягом дня чи те, чи встиг лімітний ордер зайняти місце в черзі до торкання ціни.
Для денного ринкового ордера почніть із ціни відкриття наступної сесії, а потім врахуйте витрати, з якими стратегія зіткнулася б насправді: комісії майданчика, оцінку спреду й оцінку впливу на ринок, відповідну до розміру ордера. Перевірте результат за вищих витрат. Якщо він залежить від припущення про нульовий спред або мізерний вплив на ринок, денні свічки не дають підстав для такої впевненості.
Для лімітного ордера те, що денний мінімум перетнув вашу лімітну ціну, не доводить, що ордер виконано. Ринок міг торгуватися на цьому рівні ще до надходження вашого ордера; до того ж попереду в черзі могло бути більше обсягу, ніж наторгували. Денних свічок часто замало для переконливої моделі черги. Якщо висновок залежить від внутрішньоденного виконання, використайте детальніші дані або навмисно консервативне припущення щодо виконання й чітко позначте його.
Які перевірки виявляють підглядання в майбутнє в тестуванні на денних свічках?
Я раджу кілька простих перевірок: вони швидко виявляють приховані припущення.
- Перенесіть кожен ордер, сформований на основі сигналу, на 1 сесію вперед. Якщо результат різко погіршиться, перевірте, чи початкова модель не використовувала ціну закриття свічки сигналу як ціну виконання.
- Записуйте окремо час сигналу, час подання ордера й час його виконання. З часових позначок має складатися правдоподібна послідовність без додаткових пояснень.
- Порівняйте виконання за ціною відкриття наступної сесії з пізнішою, консервативною ціною виконання. Якщо стратегія працює лише за найвигіднішої ціни в межах свічки, у вас проблема з моделлю виконання.
- Перевірте, як свята, відсутні свічки й закриття ринку впливають на поняття «наступна сесія». Наступний календарний день може бути неторговою сесією.
Зсув на 1 сесію — це діагностична перевірка, а не універсальна модель виконання. Для повільного перебалансування портфеля, стратегії на аукціоні закриття й криптовалютної системи, що торгує безперервно, потрібні різні часові правила. Головне — зробити їх явними.
Чи роблять денні дані тестування на історичних даних менш корисним?
Ні. Денні дані цілком доречні для стратегії, рішення в якій ухвалюються, а позиції утримуються протягом днів або тижнів. Вони допомагають оцінити, чи варто далі досліджувати загальне правило. Вони вводять в оману, якщо тестування заявляє точність щодо виконання, якої денні свічки не можуть показати.
Я бачив не один випадок, коли результат стратегії різко поліпшувався після заміни припущення «сигнал на закритті, виконання на закритті» на «сигнал на закритті, виконання на відкритті наступної сесії». Такий результат може розчарувати, але він корисний: він показує, чи витримує задум момент, коли за ним уже можна торгувати. Зберігайте правила часу поруч із кодом стратегії. Інакше під час наступного циклу оптимізації неможливе виконання непомітно повернеться.
← Усі статті


