Розробка системи бектестингу з урахуванням funding rate

Дохідність стратегії на історії розходиться з реальною торгівлею, якщо ставку фінансування враховано приблизно. Ми розробляємо системи бектестингу, де ставка моделюється за фактичними даними та умовами вашої торгівлі. Результат — розходження тесту й реальних результатів скорочується в рази, а рішення спираються на перевірені цифри.
Часті запитання

Бектестинг funding rate: де стратегія ламається на історії

Перпетуальні контракти не мають дати експірації, тому ціна утримується біля спота механізмом ставки фінансування: кожні кілька годин одна сторона платить іншій. У бектестингу funding rate найчастіше просто не рахують — рушій закриває угоду за mark price і на цьому зупиняється.

Розрив тесту й торгівлі накопичується саме тут: стратегія, що утримує позиції днями й тижнями, на реальному рахунку платить за перенесення кожен розрахунковий інтервал.

Ціна помилки залежить від режиму ринку. У стійкому тренді ставка тримається односторонньою, і накопичені виплати забирають помітну частку прибутку — при утриманні місяцями це вже не поправка в третьому знаку, а різниця між плюсом і мінусом.

У боковику навпаки: ставка може виявитися більшою за сам рух ціни, і стратегія віддає на перенесенні все, що заробила на коливанні.

Коректний розрахунок ставки фінансування будується на історичних даних біржі, а не на поточному значенні. Потрібні ставки на кожен момент фіксації, історія зміни формули й лімітів, періоди зміни інтервалу розрахунку та обнулення ставки.

Позиція платить лише якщо відкрита в момент фіксації — тест відтворює це за мітками часу угод, а не нараховує ставку пропорційно часу утримання.

Перевірка стратегії на такій моделі одразу показує, яка частина зростання була намальована перенесенням.

Тому в тест додають комісії, спред і виконання за mark price, а історію беруть по тій самій біржі й тому самому інструменту, де планується торгівля, — інакше розходяться і ставки, і правила ліквідації. Нижче — як ми збираємо такий контур, щоб тест і реальний рахунок рахували одне й те саме.

Що дає врахування ставки фінансування в розрахунку дохідності

Ставка фінансування — не разова комісія на вході, а періодичний грошовий потік: поки позиція відкрита, вона отримує або платить його у фіксовані моменти розрахунку.

Якщо цей потік не закладено в модель виконання заявок, бектест рахує лише рух ціни і завищує результат на будь-якому ринку, де знак ставки стійкий.

Механіка нарахування відрізняється від майданчика до майданчика — на Binance її прив'язують до відхилення ціни маркування від індексу, тому в рушії ставку рахують окремою компонентою потоку, а не відсотком від угоди.

Другий шар — дискретизація. Якщо позиція відкрита всередині інтервалу нарахування, ставку нараховують пропорційно часу утримання і зі знаком, що залежить від напрямку та від хеджу.

Без цього крива дохідності стратегії будується за цінами закриття свічок і перетворюється на драбину: всередині інтервалу рівно, на межі — сходинка. При коротких утриманнях така похибка перекриває сам торговий результат.

На кривій це видно як зміну форми: у тренді з додатною ставкою довга позиція віддає частину прибутку, і підйом стає рівнішим, а на боковику зникає плавне зростання, яке в наївному розрахунку нічим не забезпечене.

Тому стійкість до ринкових режимів перевіряють окремими прогонами — боковий, трендовий, волатильний — і дивляться, яка частка результату прийшла від ціни, а яка від перенесення ризику.

Уходить конкретний клас відмов: стратегії, чия додатна дохідність трималася тільки на прогоні без ставки, відсіюються на етапі перевірки, а не на першій зміні її знака в реальній торгівлі.

Способи моделювання ставки: порівняння підходів

Спосіб відновлення ставки фінансування в історії — не деталь методики, а її частина: перпетуальний інструмент нараховує її між лонгами й шортами кілька разів на добу, і на довгому горизонті вона здатна дати більше, ніж сам торговий сигнал.

Якщо ставку змоделювати неправильно, бектест покаже прибуток там, де його не було, або відніме його у стратегії, яка в реальності працює. Нижче — підходи, між якими ми обираємо при побудові системи, з умовами застосовності та межами кожного.

Підхід Коли підходить Обмеження
Фактичні ставки майданчика Перевірка стратегії на минулому, короткі та середні горизонти, звірка з реальними результатами Залежить від повноти архіву: перерви, зміна правил розрахунку, відсутність історії щодо інструментів, що вибули
Константа: середня за період Швидка прикидка, порівняння стратегій між собою, аналіз чутливості Згладжує сплески — розходження з реальністю зростає разом зі строком утримання позиції
Прогноз за компонентами: премія до спота, глибина потоку заявок, ліміти Майбутні періоди, яких немає в історії, довгі горизонти Помилка накопичується, потрібне регулярне калібрування й контроль якості вхідних даних
Модель часового ряду, ковзне середнє Стійкі режими, стрес-перевірки Не ловить зміну режиму та екстремальні сплески, на довгому вікні екстраполяція розходиться

На практиці підходи комбінують: базова лінія рахується на фактичних ставках, майбутні періоди — на прогнозі, а стійкість стратегії перевіряється стрес-сіткою, де ставка множиться і змінює знак.

Окреме завдання — джерело історичного розрахунку: ми зберігаємо власні зрізи ставок, щоб результати не залежали від того, як довго майданчик тримає архів і як часто змінює правила нарахування.

Якщо за тими самими угодами система дає розходження з фактичним результатом, причина зазвичай тут — у джерелі й способі моделювання, а не в логіці сигналу.

Етапи складання системи бектестингу під вашу стратегію

Аудит даних майже завжди змінює постановку завдання: знаходяться розриви при переїздах між контрактами, дублі свічок і розходження між ціною індексу та ціною останньої угоди. Тому до коду фіксуємо договір про розрахунок: які події входять у модель і як нараховується funding.

  1. Аудит даних. Зводимо історію угод, свічок і нарахувань, шукаємо пропуски, зсуви міток часу, зміни специфікацій контрактів. На виході — карта придатності: де рахувати можна, де потрібна реконструкція.
  2. Схема розрахунку. Формалізуємо правила: момент нарахування funding, прив'язка до ціни індексу, врахування плеча, комісій і просковзування. Узгоджена схема стає еталоном для звірки.
  3. Налаштування конвеєра розрахунку. Потік заявок і виконань іде окремо від потоку нарахувань, підсумки збираються в одній точці. Прогін детермінований — повтор на тих самих даних дає ті самі цифри.
  4. Перевірка на історії. Звіряємо модельні нарахування з фактичними вивантаженнями і проганяємо краєві випадки: від'ємна ставка, утримання позиції через момент нарахування, зупинка торгів.
  5. Стрес-перевірка. Рахуємо стратегію на трендових і бокових ділянках: видно, де результат тримається на рідкісних подіях, а де — на стійкій перевазі.
  6. Передача системи. Віддаємо конфігурації, схему розрахунку, регламент оновлення даних і запуск на вашій стороні; нова стратегія додається без переписування ядра.

Що передаємо на руки: артефакти й регламенти

Розрахунок з урахуванням ставки фінансування тримається на припущеннях: коли саме списується виплата, як враховуються часові пояси бірж, як округлюється ставка, звідки береться історія.

Поки ці домовленості живуть у листуванні, результат прогону не відтворюється, а порівняння стратегій перетворюється на спір про цифри. Тому здаємо не лише код — передаємо комплект описів, за яким ваш інженер запускає розрахунок без нашої участі.

  • Конфігурації розрахунку — періоди фінансування за кожним інструментом, правила округлення, врахування комісій і просковзування; винесені у файли, а не зашиті в код.
  • Схеми потоків даних — шлях від завантаження історії ставок і цін до нормалізації та запису в сховище, з позначками ділянок, де можливі пропуски.
  • Звіт про перевірку — звірка розрахункової ставки з біржовими вивантаженнями на еталонних відрізках: де зійшлося, де розійшлося і чому.
  • Регламент прогонів — на якому вікні й як часто запускати тести, яке розходження вважається нормою, за якого прогін зупиняється.
  • Інструкція з підтримки — підключення нового інструмента або біржі, зміна джерела даних, правка правил розрахунку.
  • Журнал припущень і словник метрик — однозначні визначення дохідності, просадки й середнього часу утримання, щоб звіти читалися однаково.

Кожен пункт передаємо з розбором і пробним прогоном на вашій стороні — ви переконуєтеся, що комплект самодостатній, до закриття робіт.

Кейс: як скоротили розходження тесту й реальної торгівлі

До: розходження 18% між тестом і рахунком

Клієнт вів ринково-нейтральну стратегію через Binance: спот проти шорта в безстрокових ф'ючерсах, дохід — виплати ставки фінансування кожні вісім годин.

На історії крива виглядала рівною, а на живому рахунку факт відрізнявся від розрахунку на 18% за місяць, у дні зміни знака ставки — більш ніж удвічі.

Причини виявилися побутовими: ставка в бектесті нараховувалася усередненою константою, позиції, відкриті й закриті всередині вікна виплати, не отримували нарахувань узагалі, а просковзування при ребалансуванні не моделювалося.

Після: 4% і збережений результат при зміні режиму

Бектестинг з урахуванням funding rate переписали на подієву модель: кожна виплата рахується за фактичною ставкою на момент розрахунку, з обмеженнями за мінімальним розміром ордера й кроком ціни.

Додали виконання за історією стакана і розклад комісій за рівнем обсягу — тест перестав «бачити» угоди, яких біржа не пропустила б. Окремо прогнали сценарії розвороту тренда й від'ємної ставки, щоб стійкість стратегії перевірялася не на одному режимі ринку.

Розходження скоротилося з 18% до 4% за місяць, пропущених нарахувань — з 6 із 90 вікон до нуля. У стрес-сценарії зі зміною знака ставки просадка зросла не більше ніж на п'яту частину, стратегія залишилася в плюсі. Рішення про збільшення плеча тепер ухвалюється за результатами тесту, а не за інтуїцією.

Чим відрізняється розрахунок ставки за фактом від її прогнозу

Прогнозна ставка — орієнтир, який біржа перераховує за премією марки до спотового індексу всередині розрахункового вікна. Фактична — та, що списалася в момент розрахунку.

Прогноз зручно тягнути зі свічок, але до фіксації він може змінити знак, і бектест покаже дохідність, якої не було.

Режим розрахунку визначає, що саме потрапляє в модель: інтервал (година, чотири, вісім), момент фіксації та межі вікна усереднення премії.

Якщо брати ставку зі свічки, а не з журналу розрахунків, ви усереднюєте за вікном і зміщуєте таймстемп події — позиція, що переживає десятки розрахунків, накопичує це зміщення.

Вибір джерела — друга розвилка. Журнал розрахунків конкретного майданчика дає рівно ті події, що стосувалися вашої позиції. Сторонній агрегатор зручніший, але в нього інший набір торгових пар, свій лаг публікації й своє округлення.

Ставки різних майданчиків не взаємозамінні: переносити їх на чужу позицію — означає рахувати чужий ризик.

Чутливість результату нелінійна. На трендових стратегіях з коротким утриманням ставка тоне в русі ціни. Там, де вона й є джерелом доходу — нейтральний арбітраж, хедж безстрокових контрактів, — підміна факту прогнозом розвертає знак підсумкової кривої.

Практичний висновок: рахуйте за фактом, із журналу розрахунків того майданчика, де реально виконувалися угоди, а прогноз залишайте для сценаріїв «що буде, якщо». Тоді метрика стратегії відповідає на питання про минуле, а не про припущення.

Технічні сумніви й обмеження підходу

Коректність результатів бектестингу з урахуванням funding rate тримається на чотирьох речах: повноті історії, збігу з реальним виконанням, версіонуванні правил біржі та швидкості прогону. Нижче — типові інженерні сумніви, які розбираємо до старту робіт.

Що якщо в історії пропущені свічки або виплати ставки?

Пропуск позначається явно, а не заповнюється нулем: нульова ставка помилково робить позицію прибутковою. Відсутні інтервали відновлюємо з другого джерела або залишаємо як зону невизначеності, і такі ділянки виключаються з підсумкової статистики.

Наскільки результат збіжиться з реальною торгівлею?

Прогін іде за моделлю виконання: затримка відправлення ордера, комісія, спред, просковзування на обсязі та ліквідність у момент виплати ставки.

Модель калібруємо за фактичними угодами на малому розмірі позиції й звіряємо розходження за часткою прибуткових угод — метрики прогнозу й реальності мають сходитися.

Що робити, якщо біржа змінила правила розрахунку ставки?

Правила зберігаємо версіоновано: у кожного періоду свій розклад виплат і формула. Історію не переписуємо під поточні правила — інакше минулі результати перестають відтворюватися і порівнювати стратегії між собою вже не можна.

Як швидко проганяється багаторічна історія?

Рахуємо інкрементально: перераховуємо лише зачеплену ділянку, решту беремо з раніше розрахованого. Прогін по довгій вибірці вкладається в хвилини, тому параметри перебираються серією, а не по одному — і результат встигає пройти перевірку на стійкість.

Обговоримо завдання й повернемося з оцінкою та планом

Щоб повернутися з оцінкою й планом робіт, а не з уточнювальними питаннями, нам потрібен один захід з вашого боку. Чим конкретніші вихідні дані, тим точніші строки й менше припущень усередині розрахунку.

  • Майданчики та інструменти: де торгуємо, перпетуали чи спот, які пари і в якій кількості.
  • Історія даних: діапазон дат, частота свічок, як поводитися з пропусками й розривами в ряду ставок funding.
  • Логіка стратегії: правила входу й виходу, розмір позиції, плече, робота з маржею та захисними стопами.
  • Врахування funding rate: розклад нарахувань майданчика, знак ставки, момент списання щодо закриття свічки.
  • Модель витрат: комісії майданчика за агресивні та пасивні угоди, просковзування, затримка виконання ордера.
  • Вимоги до звіту: які метрики важливі, чи потрібне розбиття за періодами, вивід у файл або інтерактивні графіки.
  • Обмеження розрахунку: що вважаємо неприпустимим — заглядання вперед за даними, підгонку параметрів під історію, ручні правки ряду.
  • Інфраструктура: де запускаємо розрахунки, чи потрібні підключення до ваших сервісів, чи є вимоги до зберігання даних.

З цим набором ми збираємо оцінку й план робіт: етапи, строки, що і на якому кроці ви бачите. Обговоримо завдання й формат робіт окремо — ітерації з проміжними результатами, доступ до репозиторію або передача готового контуру вашій команді.

Опишіть усе у вільній формі, навіть якщо частина пунктів поки не визначена: нестачу закриємо питаннями на дзвінку.

Напрямки блокчейн-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142