Бектест часто рахує угоди так, ніби сигнал одразу перетворюється на позицію. У паперовій торгівлі між ними з’являється ордер. Він може очікувати виконання, виконатися частково, бути скасованим чи відхиленим або залишитися активним після зміни сигналу. Якщо симуляція стратегії пропускає цей життєвий цикл, кількість угод і розмір позиції можуть мало збігатися з тим, що фіксує паперовий рахунок.
Практичне рішення — зробити ордери об’єктами, що зберігаються та мають стани й часові мітки. Сигнал — це вказівка спробувати укласти угоду, а не підтвердження того, що угода відбулася.
Чому в моєї стратегії на паперовому рахунку менше угод, ніж у бектесті?
Почніть з ордерів, які так і не виконалися. Бектест може припускати, що кожен лімітний ордер виконався, щойно ринок торкнувся його ціни. На реальному ринку дотик до ціни не показує, чи був ваш ордер попереду в черзі, чи пройшов достатній обсяг і чи була котировка ще доступною, коли ордер надійшов на біржу.
Уявімо стратегію, яка виставляє лімітний ордер на купівлю за $100 і скасовує його через 30 секунд. На ринку проходить ціна $100.00, але за нею торгується лише невеликий обсяг, а інші ордери мають пріоритет. Ваш ордер може виконатися частково або не виконатися зовсім. Бектест, що орієнтується на дотик до ціни, фіксує повну позицію. Паперовий рахунок, який враховує припущення щодо черги, може не зафіксувати виконання взагалі.
З ринковими ордерами розбіжність інша. Бектест може виконати весь обсяг за ціною відкриття наступного бару, тоді як паперова торгівля відхилить обсяг, що порушує біржове обмеження, або виконає його частинами, поки змінюється книга ордерів. Бар підсумовує угоди, але не гарантує, що весь ваш ордер можна було виконати за однією ціною.
Що має робити бектест, якщо сигнал змінився до виконання ордера?
Залишайте старий ордер активним, доки симулятор не отримає й не обробить запит на скасування. Якщо сигнал змінюється, поки ордер на купівлю очікує виконання, стратегія може захотіти скасувати його й виставити ордер на продаж. Але сам намір не прибирає ордер на купівлю миттєво. Він може виконатися, поки запит на скасування ще обробляється, і рахунок матиме довгу позицію саме тоді, коли новий сигнал вказує на коротку.
Змоделюйте це як послідовність: сигнал змінюється, стратегія надсилає запит на скасування, біржа підтверджує його або повідомляє про виконання, і лише тоді стратегія знає остаточний стан ордера. Навіть проста фіксована затримка може виявити гонки, які бектест із миттєвим скасуванням приховує.
Для навмисно спрощеної моделі затримка скасування в 1 секунду й обробка наступної події можуть дати більше інформації, ніж припущення про миттєве скасування. Належна затримка залежить від біржі та системи; важливо змоделювати бодай якусь затримку. Якщо ваш ордер ринковий і вікна для скасування немає, часткові виконання та запізнілі звіти все одно мають значення.
Які стани ордерів має фіксувати симулятор паперової торгівлі?
Використовуйте просту машину станів і зберігайте час кожного переходу. Точна термінологія бірж різниться, але основні відмінності однакові:
- Новий або очікує підтвердження: надісланий, але ще не підтверджений.
- Відкритий: прийнятий і все ще може виконатися.
- Виконаний частково: частину обсягу проторговано; решта може залишатися відкритою.
- Виконаний: невиконаного обсягу не залишилося.
- Очікує скасування: запит на скасування обробляється; ордер усе ще може виконатися.
- Скасований, відхилений або прострочений: за цим ордером більше не може бути проторговано жодного обсягу.
Фіксуйте виконаний обсяг окремо від запитаного, а також ціни виконання й комісії. Частково виконаний ордер — це і угода, і зобов’язання щодо решти обсягу, яке ще діє. Якщо вважати його просто відкритим або просто завершеним, втрачається інформація, потрібна стратегії для визначення розміру наступної дії.
| Подія ордера | Що має знати стратегія | Типове спрощення в бектесті |
|---|---|---|
| Часткове виконання | Виконаний обсяг, залишок, середня ціна | Вважати весь ордер виконаним за однією ціною |
| Запит на скасування | Час запиту й остаточне підтвердження скасування або виконання | Одразу прибирати ордер |
| Відхилення | Причина й доцільність повторної спроби | Припускати, що запитана угода відбулася |
| Завершення строку дії | Час, коли ордер втратив право на виконання | Залишати відкритим до наступного дотику ціни |
Як чесно порівняти угоди бектесту з паперовою торгівлею?
Спершу порівняйте події ордерів, потім позиції, а P&L — в останню чергу. Якщо в бектесті виконано ордер, якого паперовий рахунок не виконав, подальша різниця в P&L — це наслідок, а не місце, де слід шукати проблему.
Для кожного запланованого ордера зіставте два запуски за стабільним ідентифікатором рішення стратегії або ордера. Потім перевірте час подання, запитану ціну й обсяг, строк дії, виконання, скасування, відхилення, комісії та підсумкову позицію. Також зберігайте причину симульованого невиконання: ціна не досягла ліміту, припущений обсяг у черзі попереду не був вичерпаний або строк дії ордера минув.
Невеликий приклад пояснює послідовність. Сигнал вимагає 10 одиниць. Обидві системи подають ордер о 10:00:00. Бектест припускає повне виконання о 10:00:01. Паперова торгівля виконує 4 одиниці о 10:00:01, отримує запит на скасування о 10:00:02, а потім фіксує ще 2 виконані одиниці до підтвердження скасування о 10:00:03. Чесне порівняння: виконано 6 одиниць замість 10, а 4 скасовано. Якщо звести все до однієї «угоди», губиться інформація про фактичну позицію стратегії.
Чи потрібен повноцінний симулятор біржі, щоб усе це правильно змоделювати?
Ні. Для початку бектесту достатньо кількох чітких припущень: чи достатньо дотику до ціни для виконання лімітного ордера, який обсяг має пройти за ціною, щоб звільнити припущену чергу попереду, скільки часу ордери залишаються відкритими та як моделюються затримки скасування. Запустіть стратегію з кількома правдоподібними наборами параметрів. Якщо результативність залежить від того, чи кожен лімітний ордер вважається виконаним повністю, ви дізналися щось корисне про модель.
Паперова торгівля також не є еталоном якості виконання. Вона може використовувати симульовані виконання й не відтворювати реальну чергу. Її цінність тут скромніша: вона показує, чи узгоджуються стратегія та її система управління ордерами щодо невиконаного обсягу, скасування, позиції та повторних спроб, коли з часом надходять нові події.
Одна невелика приємність у цій роботі: хороший журнал ордерів може перетворити загадкову розбіжність на щось буденне. «Другий дочірній ордер виконався після запиту на скасування» — значно краще, ніж «паперова торгівля поводиться дивно». Коли бектест і паперовий рахунок розходяться, спершу перевірте життєвий цикл ордера, а вже потім змінюйте сигнал.
← Усі статті


