У вас є невелика стратегія торгівлі криптоф’ючерсами за кількома контрактами, і ви щойно перевели її з бектесту на paper trading. Під час першого ребалансування стратегія запитує 0.037 BTC. Симулятор приймає цей обсяг, а біржа відхиляє його: крок кількості контракту становить 0.001, а після округлення номінал ордера опускається нижче мінімального. Позиція залишається нульовою, а бектест зараховує виконання.
Таку розбіжність легко списати на помилку форматування. Але вона також може змінити активи у вашому портфелі, час ребалансування та рівень ризику після невдалого ордера. Вважайте торгові фільтри кожної біржі частиною правил виконання стратегії й налаштуйте бектест і paper-адаптер так, щоб вони застосовували однакові правила в однаковому порядку.
Які біржові фільтри можуть зробити ордер недійсним?
Почніть із метаданих інструмента, потрібних для вашого ордера: крок кількості, мінімальна кількість, мінімальний номінал, крок ціни, а також обмеження на розмір ордера чи ціновий діапазон. Назви й область дії цих параметрів залежать від біржі. Для спотової пари мінімум може відрізнятися від мінімуму для безстрокового контракту; фільтр може змінитися, поки працює ваша стратегія.
Уявімо цільову позицію номіналом $12 за контрактом із мінімальною вартістю ордера $10. Якщо через крок кількості ордер округлиться вниз до $9.80, він стане недійсним, хоча неокруглена ціль перевищувала мінімум. Округлення вгору до $10.20 може зробити ордер дійсним, але тоді його обсяг перевищить ціль на $0.20. Така різниця може бути суттєвою для невеликого рахунку або стратегії з багатьма інструментами.
| Правило | Що обмежує | Наслідок для бектесту |
|---|---|---|
| Крок кількості | Допустимі зміни розміру ордера | Округлений обсяг відрізняється від цільового |
| Мінімальна кількість або номінал | Найменший прийнятний ордер | Деякі угоди не відбудуться або потребуватимуть округлення вгору |
| Крок ціни | Допустимі лімітні ціни й ціни тригера | Округлення ціни змінює ймовірність виконання ордера |
| Ціновий діапазон або ліміт обсягу | Обмеження біржі для полів ордера | Під час волатильного ринку або масштабного ребалансування ордери можуть бути відхилені |
На якому етапі формування ордера слід округлювати значення?
Округлюйте поля ордера після розрахунку бажаної зміни позиції й до ухвалення рішення про відправлення. Зберігайте неокруглену ціль для аналізу, а потім формуйте виконуваний ордер з урахуванням поточної позиції, множника контракту та кроків, установлених біржею. Якщо крок кількості для продажу становить 0.001, бажане скорочення на 0.0017 перетвориться на 0.001 або 0.002 — залежно від визначеного вами правила. Ці варіанти залишають різні залишкові позиції, тож «округлити до заданої точності» — це ще не повноцінна політика.
Для кількості округлення донизу в бік нуля допомагає не збільшити експозицію понад запитану зміну, але може залишити дрібні залишки, які ніколи не торгуватимуться. Округлення до найближчого значення зменшує середню похибку, хоча й може перевищити ціль. Для мінімального номіналу потрібне окреме рішення: пропустити угоду, накопичувати обсяг, доки він не досягне порога, або збільшити розмір і прийняти перевищення цілі. Не перемикайтеся між цими варіантами непомітно.
Також фіксуйте причину, через яку ордер не було виконано. «Ордер не подано: номінал нижче мінімуму» означає не те саме, що «виконано за нульовою ціною». Під час ребалансування портфеля пропущений ордер може залишити кошти без використання або зберегти експозицію в попередньому активі; відображайте цей результат у стані рахунку.
Як узгодити виконання в бектесті й paper trading?
Якщо архітектура системи це дозволяє, використовуйте в обох сценаріях одну функцію перевірки ордера. Передавайте їй однакові правила інструмента, актуальні на відповідний момент, бажаний ордер і стан рахунку. Функція має повертати нормалізований ордер або конкретну причину відхилення. Тоді симулятор зможе застосувати свої припущення щодо виконання до нормалізованих ордерів, а paper-адаптер — передати біржі відповідні поля.
Зберігайте датований знімок метаданих фільтрів для кожного запуску. Якщо крок кількості чи мінімум зміниться, вам потрібно знати, яке правило використовував бектест. Завантаження сьогоднішніх метаданих для відтворення стратегії річної давнини може зробити старі ордери недійсними або створити враження, що історичні ордери були можливими, хоча це було не так.
Коли paper-майданчик повідомляє про відхилення, перевірте передані поля й знімок фільтрів, перш ніж змінювати сигнал. Якщо нормалізатор ордерів у бектесті видав 0.037 BTC, а біржа дозволяла кроки по 0.001 BTC, помилка в адаптері або метаданих. Якщо поданий ордер був дійсним, але не виконався, причина пов’язана з виконанням — наприклад, із ціною, ліквідністю чи строком дії.
Що перевірити, перш ніж довіряти порівнянню?
Для кожного ребалансування ведіть короткий журнал: цільова позиція, поточна позиція, початковий ордер, нормалізований ордер, застосована версія фільтрів і підсумковий статус. Потім порівнюйте записи paper-рахунку й симуляції для того самого моменту ухвалення рішення.
- Чи використовували обидва сценарії однаковий множник контракту й одиниці кількості?
- Чи застосовували вони однаковий напрямок округлення й правила мінімального ордера?
- Чи були значення фільтрів чинними на момент створення ордера?
- Чи залишили відхилений або пропущений ордер однакові позиції й обсяг коштів на обох рахунках?
Перша невдала спроба ребалансування на paper-рахунку ще не означає, що стратегія неспроможна. Але доки симулятор не може пояснити, чому цей ордер було б прийнято, округлено, пропущено або відхилено, його крива капіталу описує іншу систему виконання, ніж та, яку ви намагаєтеся запустити.
← Усі статті

