Бектестинг funding rate: де стратегія ламається на історії
Перпетуальні контракти не мають дати експірації, тому ціна утримується біля спота механізмом ставки фінансування: кожні кілька годин одна сторона платить іншій. У бектестингу funding rate найчастіше просто не рахують — рушій закриває угоду за mark price і на цьому зупиняється.
Розрив тесту й торгівлі накопичується саме тут: стратегія, що утримує позиції днями й тижнями, на реальному рахунку платить за перенесення кожен розрахунковий інтервал.
Ціна помилки залежить від режиму ринку. У стійкому тренді ставка тримається односторонньою, і накопичені виплати забирають помітну частку прибутку — при утриманні місяцями це вже не поправка в третьому знаку, а різниця між плюсом і мінусом.
У боковику навпаки: ставка може виявитися більшою за сам рух ціни, і стратегія віддає на перенесенні все, що заробила на коливанні.
Коректний розрахунок ставки фінансування будується на історичних даних біржі, а не на поточному значенні. Потрібні ставки на кожен момент фіксації, історія зміни формули й лімітів, періоди зміни інтервалу розрахунку та обнулення ставки.
Позиція платить лише якщо відкрита в момент фіксації — тест відтворює це за мітками часу угод, а не нараховує ставку пропорційно часу утримання.
Перевірка стратегії на такій моделі одразу показує, яка частина зростання була намальована перенесенням.
Тому в тест додають комісії, спред і виконання за mark price, а історію беруть по тій самій біржі й тому самому інструменту, де планується торгівля, — інакше розходяться і ставки, і правила ліквідації. Нижче — як ми збираємо такий контур, щоб тест і реальний рахунок рахували одне й те саме.
Що дає врахування ставки фінансування в розрахунку дохідності
Ставка фінансування — не разова комісія на вході, а періодичний грошовий потік: поки позиція відкрита, вона отримує або платить його у фіксовані моменти розрахунку.
Якщо цей потік не закладено в модель виконання заявок, бектест рахує лише рух ціни і завищує результат на будь-якому ринку, де знак ставки стійкий.
Механіка нарахування відрізняється від майданчика до майданчика — на Binance її прив'язують до відхилення ціни маркування від індексу, тому в рушії ставку рахують окремою компонентою потоку, а не відсотком від угоди.
Другий шар — дискретизація. Якщо позиція відкрита всередині інтервалу нарахування, ставку нараховують пропорційно часу утримання і зі знаком, що залежить від напрямку та від хеджу.
Без цього крива дохідності стратегії будується за цінами закриття свічок і перетворюється на драбину: всередині інтервалу рівно, на межі — сходинка. При коротких утриманнях така похибка перекриває сам торговий результат.
На кривій це видно як зміну форми: у тренді з додатною ставкою довга позиція віддає частину прибутку, і підйом стає рівнішим, а на боковику зникає плавне зростання, яке в наївному розрахунку нічим не забезпечене.
Тому стійкість до ринкових режимів перевіряють окремими прогонами — боковий, трендовий, волатильний — і дивляться, яка частка результату прийшла від ціни, а яка від перенесення ризику.
Уходить конкретний клас відмов: стратегії, чия додатна дохідність трималася тільки на прогоні без ставки, відсіюються на етапі перевірки, а не на першій зміні її знака в реальній торгівлі.
Способи моделювання ставки: порівняння підходів
Спосіб відновлення ставки фінансування в історії — не деталь методики, а її частина: перпетуальний інструмент нараховує її між лонгами й шортами кілька разів на добу, і на довгому горизонті вона здатна дати більше, ніж сам торговий сигнал.
Якщо ставку змоделювати неправильно, бектест покаже прибуток там, де його не було, або відніме його у стратегії, яка в реальності працює. Нижче — підходи, між якими ми обираємо при побудові системи, з умовами застосовності та межами кожного.
| Підхід | Коли підходить | Обмеження |
|---|---|---|
| Фактичні ставки майданчика | Перевірка стратегії на минулому, короткі та середні горизонти, звірка з реальними результатами | Залежить від повноти архіву: перерви, зміна правил розрахунку, відсутність історії щодо інструментів, що вибули |
| Константа: середня за період | Швидка прикидка, порівняння стратегій між собою, аналіз чутливості | Згладжує сплески — розходження з реальністю зростає разом зі строком утримання позиції |
| Прогноз за компонентами: премія до спота, глибина потоку заявок, ліміти | Майбутні періоди, яких немає в історії, довгі горизонти | Помилка накопичується, потрібне регулярне калібрування й контроль якості вхідних даних |
| Модель часового ряду, ковзне середнє | Стійкі режими, стрес-перевірки | Не ловить зміну режиму та екстремальні сплески, на довгому вікні екстраполяція розходиться |
На практиці підходи комбінують: базова лінія рахується на фактичних ставках, майбутні періоди — на прогнозі, а стійкість стратегії перевіряється стрес-сіткою, де ставка множиться і змінює знак.
Окреме завдання — джерело історичного розрахунку: ми зберігаємо власні зрізи ставок, щоб результати не залежали від того, як довго майданчик тримає архів і як часто змінює правила нарахування.
Якщо за тими самими угодами система дає розходження з фактичним результатом, причина зазвичай тут — у джерелі й способі моделювання, а не в логіці сигналу.
Етапи складання системи бектестингу під вашу стратегію
Аудит даних майже завжди змінює постановку завдання: знаходяться розриви при переїздах між контрактами, дублі свічок і розходження між ціною індексу та ціною останньої угоди. Тому до коду фіксуємо договір про розрахунок: які події входять у модель і як нараховується funding.
- Аудит даних. Зводимо історію угод, свічок і нарахувань, шукаємо пропуски, зсуви міток часу, зміни специфікацій контрактів. На виході — карта придатності: де рахувати можна, де потрібна реконструкція.
- Схема розрахунку. Формалізуємо правила: момент нарахування funding, прив'язка до ціни індексу, врахування плеча, комісій і просковзування. Узгоджена схема стає еталоном для звірки.
- Налаштування конвеєра розрахунку. Потік заявок і виконань іде окремо від потоку нарахувань, підсумки збираються в одній точці. Прогін детермінований — повтор на тих самих даних дає ті самі цифри.
- Перевірка на історії. Звіряємо модельні нарахування з фактичними вивантаженнями і проганяємо краєві випадки: від'ємна ставка, утримання позиції через момент нарахування, зупинка торгів.
- Стрес-перевірка. Рахуємо стратегію на трендових і бокових ділянках: видно, де результат тримається на рідкісних подіях, а де — на стійкій перевазі.
- Передача системи. Віддаємо конфігурації, схему розрахунку, регламент оновлення даних і запуск на вашій стороні; нова стратегія додається без переписування ядра.
Що передаємо на руки: артефакти й регламенти
Розрахунок з урахуванням ставки фінансування тримається на припущеннях: коли саме списується виплата, як враховуються часові пояси бірж, як округлюється ставка, звідки береться історія.
Поки ці домовленості живуть у листуванні, результат прогону не відтворюється, а порівняння стратегій перетворюється на спір про цифри. Тому здаємо не лише код — передаємо комплект описів, за яким ваш інженер запускає розрахунок без нашої участі.
- Конфігурації розрахунку — періоди фінансування за кожним інструментом, правила округлення, врахування комісій і просковзування; винесені у файли, а не зашиті в код.
- Схеми потоків даних — шлях від завантаження історії ставок і цін до нормалізації та запису в сховище, з позначками ділянок, де можливі пропуски.
- Звіт про перевірку — звірка розрахункової ставки з біржовими вивантаженнями на еталонних відрізках: де зійшлося, де розійшлося і чому.
- Регламент прогонів — на якому вікні й як часто запускати тести, яке розходження вважається нормою, за якого прогін зупиняється.
- Інструкція з підтримки — підключення нового інструмента або біржі, зміна джерела даних, правка правил розрахунку.
- Журнал припущень і словник метрик — однозначні визначення дохідності, просадки й середнього часу утримання, щоб звіти читалися однаково.
Кожен пункт передаємо з розбором і пробним прогоном на вашій стороні — ви переконуєтеся, що комплект самодостатній, до закриття робіт.
Кейс: як скоротили розходження тесту й реальної торгівлі
До: розходження 18% між тестом і рахунком
Клієнт вів ринково-нейтральну стратегію через Binance: спот проти шорта в безстрокових ф'ючерсах, дохід — виплати ставки фінансування кожні вісім годин.
На історії крива виглядала рівною, а на живому рахунку факт відрізнявся від розрахунку на 18% за місяць, у дні зміни знака ставки — більш ніж удвічі.
Причини виявилися побутовими: ставка в бектесті нараховувалася усередненою константою, позиції, відкриті й закриті всередині вікна виплати, не отримували нарахувань узагалі, а просковзування при ребалансуванні не моделювалося.
Після: 4% і збережений результат при зміні режиму
Бектестинг з урахуванням funding rate переписали на подієву модель: кожна виплата рахується за фактичною ставкою на момент розрахунку, з обмеженнями за мінімальним розміром ордера й кроком ціни.
Додали виконання за історією стакана і розклад комісій за рівнем обсягу — тест перестав «бачити» угоди, яких біржа не пропустила б. Окремо прогнали сценарії розвороту тренда й від'ємної ставки, щоб стійкість стратегії перевірялася не на одному режимі ринку.
Розходження скоротилося з 18% до 4% за місяць, пропущених нарахувань — з 6 із 90 вікон до нуля. У стрес-сценарії зі зміною знака ставки просадка зросла не більше ніж на п'яту частину, стратегія залишилася в плюсі. Рішення про збільшення плеча тепер ухвалюється за результатами тесту, а не за інтуїцією.
Чим відрізняється розрахунок ставки за фактом від її прогнозу
Прогнозна ставка — орієнтир, який біржа перераховує за премією марки до спотового індексу всередині розрахункового вікна. Фактична — та, що списалася в момент розрахунку.
Прогноз зручно тягнути зі свічок, але до фіксації він може змінити знак, і бектест покаже дохідність, якої не було.
Режим розрахунку визначає, що саме потрапляє в модель: інтервал (година, чотири, вісім), момент фіксації та межі вікна усереднення премії.
Якщо брати ставку зі свічки, а не з журналу розрахунків, ви усереднюєте за вікном і зміщуєте таймстемп події — позиція, що переживає десятки розрахунків, накопичує це зміщення.
Вибір джерела — друга розвилка. Журнал розрахунків конкретного майданчика дає рівно ті події, що стосувалися вашої позиції. Сторонній агрегатор зручніший, але в нього інший набір торгових пар, свій лаг публікації й своє округлення.
Ставки різних майданчиків не взаємозамінні: переносити їх на чужу позицію — означає рахувати чужий ризик.
Чутливість результату нелінійна. На трендових стратегіях з коротким утриманням ставка тоне в русі ціни. Там, де вона й є джерелом доходу — нейтральний арбітраж, хедж безстрокових контрактів, — підміна факту прогнозом розвертає знак підсумкової кривої.
Практичний висновок: рахуйте за фактом, із журналу розрахунків того майданчика, де реально виконувалися угоди, а прогноз залишайте для сценаріїв «що буде, якщо». Тоді метрика стратегії відповідає на питання про минуле, а не про припущення.
Технічні сумніви й обмеження підходу
Коректність результатів бектестингу з урахуванням funding rate тримається на чотирьох речах: повноті історії, збігу з реальним виконанням, версіонуванні правил біржі та швидкості прогону. Нижче — типові інженерні сумніви, які розбираємо до старту робіт.
Що якщо в історії пропущені свічки або виплати ставки?
Пропуск позначається явно, а не заповнюється нулем: нульова ставка помилково робить позицію прибутковою. Відсутні інтервали відновлюємо з другого джерела або залишаємо як зону невизначеності, і такі ділянки виключаються з підсумкової статистики.
Наскільки результат збіжиться з реальною торгівлею?
Прогін іде за моделлю виконання: затримка відправлення ордера, комісія, спред, просковзування на обсязі та ліквідність у момент виплати ставки.
Модель калібруємо за фактичними угодами на малому розмірі позиції й звіряємо розходження за часткою прибуткових угод — метрики прогнозу й реальності мають сходитися.
Що робити, якщо біржа змінила правила розрахунку ставки?
Правила зберігаємо версіоновано: у кожного періоду свій розклад виплат і формула. Історію не переписуємо під поточні правила — інакше минулі результати перестають відтворюватися і порівнювати стратегії між собою вже не можна.
Як швидко проганяється багаторічна історія?
Рахуємо інкрементально: перераховуємо лише зачеплену ділянку, решту беремо з раніше розрахованого. Прогін по довгій вибірці вкладається в хвилини, тому параметри перебираються серією, а не по одному — і результат встигає пройти перевірку на стійкість.
Обговоримо завдання й повернемося з оцінкою та планом
Щоб повернутися з оцінкою й планом робіт, а не з уточнювальними питаннями, нам потрібен один захід з вашого боку. Чим конкретніші вихідні дані, тим точніші строки й менше припущень усередині розрахунку.
- Майданчики та інструменти: де торгуємо, перпетуали чи спот, які пари і в якій кількості.
- Історія даних: діапазон дат, частота свічок, як поводитися з пропусками й розривами в ряду ставок funding.
- Логіка стратегії: правила входу й виходу, розмір позиції, плече, робота з маржею та захисними стопами.
- Врахування funding rate: розклад нарахувань майданчика, знак ставки, момент списання щодо закриття свічки.
- Модель витрат: комісії майданчика за агресивні та пасивні угоди, просковзування, затримка виконання ордера.
- Вимоги до звіту: які метрики важливі, чи потрібне розбиття за періодами, вивід у файл або інтерактивні графіки.
- Обмеження розрахунку: що вважаємо неприпустимим — заглядання вперед за даними, підгонку параметрів під історію, ручні правки ряду.
- Інфраструктура: де запускаємо розрахунки, чи потрібні підключення до ваших сервісів, чи є вимоги до зберігання даних.
З цим набором ми збираємо оцінку й план робіт: етапи, строки, що і на якому кроці ви бачите. Обговоримо завдання й формат робіт окремо — ітерації з проміжними результатами, доступ до репозиторію або передача готового контуру вашій команді.
Опишіть усе у вільній формі, навіть якщо частина пунктів поки не визначена: нестачу закриємо питаннями на дзвінку.







