Ви щойно повторно запустили бектест своєї стратегії для безстрокових контрактів BTC, і чистий Sharpe впав на третину. Сигнали ті самі. Виконання угод — те саме. Ви змінили лише одне: тепер графік комісій залежить від обсягу торгів на рахунку за попередні 30 днів, а на початку тесту рахунок має нижчий рівень, ніж той, якого ви досягли під час торгівлі в реальному середовищі.
Перш ніж переписувати сигнал, розділіть два запитання: скільки б ця стратегія заплатила за фіксованої комісії та яку комісію цей рахунок фактично мав би сплачувати в кожен момент часу? Це різні експерименти. Якщо змішати їх, стратегія може здаватися кращою лише тому, що вона торгує достатньо для отримання знижки, а потім ця знижка сприймається як безкоштовна.
Почніть із графіка комісій, а не з однієї ставки
На сторінках більшості бірж із комісіями наведено таблицю: ставки maker і taker для різних рівнів обсягу, іноді з окремими правилами для спотової торгівлі та деривативів. Для бектесту потрібні фактичні ставки та правила визначення рівня. Обсяг вимірюється за 30 днів? За календарний місяць? Біржа сумує спотову торгівлю та ф’ючерси? Знижка за баланс токенів додається до знижки за рівнем обсягу?
Зафіксуйте ці правила як датовані вхідні дані. Для спрощеного прикладу припустімо, що платформа визначає ставку на наступний день за обсягом виконаних ф’ючерсних угод за попередні 30 днів:
| Обсяг за попередні 30 днів | Комісія maker | Комісія taker |
|---|---|---|
| Менше $1 мільйона | 0.020% | 0.050% |
| Від $1 мільйона до $10 мільйонів | 0.016% | 0.040% |
| Понад $10 мільйонів | 0.012% | 0.035% |
Цифри наведено для прикладу; біржові тарифи та правила відповідності вимогам змінюються. Важливий момент — час застосування: учорашні виконані угоди можуть вплинути на завтрашню комісію, але сьогоднішні угоди не можуть заднім числом дати знижку за сьогодні.
Для бектесту потрібна історія обсягу торгів на рахунку
Припустімо, ваша стратегія щодня прокручує обсяг у $80,000, і всі угоди виконуються як taker. На початковому рівні кругова угода на $100,000 коштує близько $50: номінальна вартість входу та виходу становить $100,000, помножені на 0.050%. На середньому рівні вона коштує $40. Різниця в десять доларів здається невеликою, доки ви не здійсните таку кругову угоду 800 разів. Тоді за період тесту набігає $8,000, а рівень комісій міг змінитися саме завдяки обсягу цих угод.
Такий зворотний зв’язок реальний, але він створює пастку моделювання. Якщо почати бектест стратегії із середнього рівня лише тому, що наприкінці тесту вона його досягла, ви перенесли майбутню активність рахунку в минуле. Задайте початковий обсяг за попередній період, оновлюйте ковзне вікно після кожного врахованого виконання угоди та застосовуйте зміну рівня лише тоді, коли це передбачено правилами платформи.
Розділяйте три показники: номінальний обсяг торгів стратегії, обсяг рахунку, який враховується для визначення рівня, та фактично стягнуту комісію за кожне виконання угоди. Вони можуть відрізнятися, якщо платформа виключає певні продукти, враховує лише одну сторону деяких угод або надає знижку за балансом, який ви не моделювали.
Проведіть тест із фіксованою ставкою поруч із тестом, що враховує рахунок
Вам потрібні два результати. Спершу повторно запустіть усю стратегію з однією консервативною фіксованою ставкою taker. Так ви побачите, наскільки ідея чутлива до витрат на виконання угод, не дозволяючи власному обсягу торгів змінювати умови оцінювання. Потім змоделюйте графік комісій із урахуванням рахунку, задокументувавши початковий баланс та історію обсягу. Це дасть оцінку того, як міг би розвиватися шлях саме цього рахунку за вказаними правилами.
Порівняйте суму комісій, обсяг торгів, чистий P&L і просадку. Якщо покращення є лише в тесті з урахуванням рахунку, з’ясуйте, яка його частина зумовлена правдоподібним переходом на інший рівень, а яка залежить від початкової історії, обсягу за кількома продуктами або знижки, на яку ваш рахунок може не мати права. Якщо перевага зникає в обох тестах, найімовірніше, тарифний рівень не був головною проблемою.
І не дозволяйте виконаним угодам maker автоматично отримувати найкращу ставку, якщо ваша модель виконання мовчки припускає, що кожен пасивний ордер було виконано. Графік комісій може бути точним, а припущення щодо виконання — фантастичними. Перевіряйте їх окремо.
Зробіть результат відтворюваним
Збережіть разом із бектестом версію графіка комісій, період розрахунку рівня, час його скидання, продукти, що враховуються, та початковий обсяг. Додайте невеликий щоденний журнал: обсяг на початок дня за ковзне вікно, додані угоди, застосований рівень і сплачені комісії. Коли біржа змінить ставки, ви знатимете, чи змінилася стратегія, шлях рахунку або припущення.
Ви намагаєтеся відповісти на вузьке, але корисне запитання: скільки заплатила ця стратегія за графіком комісій та історії рахунку, які ви можете точно описати? Якщо ви не можете відновити рівень за певний день, вам іще невідомо, що означає чистий результат бектесту.
← Усі статті


