Фандинг в бэктесте: как сверить начисления по бессрочным фьючерсам

Позиция закрылась по той цене, которую вы ожидали, а итог теста всё равно неверен. Если стратегия торгует бессрочными фьючерсами, стоит проверить фандинг в бэктесте: когда прошёл расчёт, какой объём позиции участвовал и в чью пользу начислен платёж.
Для такой проверки не нужно начинать с сотен сделок. Возьмите одну позицию, которая пережила момент расчёта funding, и восстановите её события. Так проще найти ошибку, чем по общей кривой доходности.
Фандинг считают по позиции, а не по внесённой марже
Ставка фандинга, или финансирования, определяет периодический платёж между держателями длинных и коротких позиций. При положительной ставке обычно платят лонги, при отрицательной — шорты. Это отдельный денежный поток: комиссия за исполнение ордера его не заменяет.
Для линейного контракта величину платежа обычно получают из стоимости позиции в момент расчёта и ставки за соответствующий период. Но цену для оценки позиции, валюту платежа и формулу нужно брать из правил конкретного контракта. Формулу линейного USDT-контракта нельзя без проверки переносить на обратный контракт.
Само плечо не нужно ещё раз умножать на уже рассчитанную стоимость позиции. Оно влияет на соотношение позиции и залога. Ошибка «ставка от маржи» и повторное умножение на плечо дают разные, но одинаково неверные начисления.
Также не задавайте всем инструментам один интервал funding. Расписание и правила могут различаться по бирже, контракту и периоду истории. Например, правила funding OKX описывают несколько интервалов и возможность их изменения.
Как сверить фандинг в бэктесте по событиям позиции
Нужны история фактических ставок и события изменения позиции. Приведите время к одной зоне, например UTC, но сохраните исходные метки. Прогноз следующей ставки не подменяет ставку, по которой состоялся расчёт. Если сама стратегия использует funding как сигнал, ей доступно только то значение, которое было известно в момент решения: будущая окончательная ставка создаст заглядывание вперёд.
| Что сверить | Откуда взять | Какую ошибку это обнаружит |
|---|---|---|
| Биржа и точный контракт | Спецификация и источник истории | Ставка относится к другому рынку |
| Время и окончательная ставка | История расчётов funding | Использован прогноз или неверный час |
| Направление и объём позиции | Исполнения, включая частичные | Платёж посчитан до уменьшения позиции |
| Цена оценки и валюта | Правила контракта | Перепутаны стоимость, маржа или единицы |
| Знак и сумма платежа | Расчётная запись; при сверке с реальностью — журнал биржи | Списание превращено в доход или учтено дважды |
Условный пример без результатов торговли: лонг открыт до расчёта, часть позиции закрыта до него, остаток — после. Если по правилам площадки платёж определяется позицией в момент расчёта, он относится к оставшемуся объёму. Полный начальный объём уже неверен; нулевой объём после окончательного закрытия тоже неверен.
Отдельно разберите вход или выход точно на границе расчёта. Совпадение секунд в отчёте не доказывает порядок событий. Нужны правила площадки и достаточная точность исходных данных. Если их нет, отметьте неопределённость, а не выбирайте удобный для стратегии порядок.
Пропуск ставки нельзя молча заменить нулём
Свечи за нужный месяц могут быть, а истории funding — нет. Ноль означает известное нулевое начисление только тогда, когда это подтверждено источником. Отсутствующая запись означает, что платёж неизвестен.
Практических вариантов несколько: найти недостающую историю, сократить проверяемый период или отдельно посчитать сценарий с явно заданным допущением. Последний вариант полезен для оценки чувствительности, но не восстанавливает исторический результат. Отчёт должен показывать, где использованы реальные ставки, а где — подстановка.
Такая проблема возникает и в готовых тестерах. Документация Freqtrade предупреждает: если вместо отсутствующей истории подставить неверную ставку, результат периода будет неточным. Это ограничение метода, а не доказательство того, как funding устроен в другом тестере.
Пропуски ставок и пропуски свечей в бэктесте проверяют отдельно: восстановление одного ряда не исправляет другой.
Как понять, что сверка закончена
Сначала зафиксируйте сделки и сравните их денежный результат без funding и с начислениями. При неизменных сделках разница должна объясняться суммой этих платежей, без повторного учёта в комиссиях. Такой расчёт изолирует влияние funding, но ещё не заменяет полный повторный тест.
Если стратегия выбирает объём по доступному капиталу или принимает решения по текущему результату, начисления могут изменить последующие сделки. Тогда нужен повторный прогон с funding внутри модели. Простое вычитание общей суммы из финальной прибыли не воспроизводит этот эффект; влияние на маржу и ликвидацию также требует отдельной проверки.
В общей методике бэктеста XTester funding уже входит в список учитываемых издержек. Однако это не подтверждает наличие любого источника ставок, автоматического импорта или нужной модели расчёта в вашей версии. До прикладного теста проверьте поддержку конкретной биржи и контракта, покрытие истории и способ отражения платежей. Если что-то неизвестно, сохраните сверку отдельным расчётом и не называйте её результатом движка XTester.
Завершённая проверка оставляет короткую, понятную запись: источник ставок, период покрытия, события позиции, правила начисления и объяснённую разницу. Если хотя бы один платёж нельзя восстановить, результат пока условный — даже когда итоговая цифра выглядит убедительно.
Материал информационный, не инвестиционная рекомендация. Торговля фьючерсами может привести к потере капитала. Сверка funding проверяет только часть модели, не доказывает прибыльность или безопасность стратегии и не гарантирует реальное исполнение.
Материал носит информационный характер и не является инвестиционной рекомендацией. Результаты бэктеста не гарантируют будущую доходность.


