Вы прислали мне кривую капитала и журнал сделок и спросили, не слишком ли всё хорошо, чтобы быть правдой. Короткий ответ: это не выглядит ни очевидно реальным, ни очевидно ложным, и примерно за день работы можно выяснить, что именно перед нами. Длинный ответ — дальше, потому что диагноз важнее вердикта.
Что у вас есть: 15-минутный сигнал возврата к среднему на бессрочных фьючерсах BTCUSDT и ETHUSDT на Binance, z-score цены относительно среднего за 96 баров, торговля против крайних значений, удержание 2-8 баров. Бэктест охватывает период с февраля 2024 по июнь 2026. Sharpe 2.9 после учёта вашей модели комиссий. А когда вы сгруппировали P&L по минутам суток, 71% прибыли пришлось на три 15-минутных интервала, включающие 00:00, 08:00 и 16:00 UTC.
Вы уже понимаете, почему это подозрительно. Расскажу, почему отчасти это вполне может быть правдой.
Расчётное время фандинга — реальное явление, которое действительно двигает цену
Binance рассчитывает фандинг по бессрочным фьючерсам в 00:00, 08:00 и 16:00 UTC. Каждая открытая в момент расчёта позиция платит или получает фандинг. Это жёстко заданный, известный всем денежный поток, который создаёт реальный поток ордеров вокруг времени расчёта — не артефакт данных, а то, что трейдеры действительно делают.
У этого потока есть характерный рисунок. За десять-тридцать минут до расчёта закрывают или хеджируют позиции те, кто не хочет платить. Если ставка фандинга за интервал составляет +0.04%, лонг, который и так собирался выйти, закроется до фиксации цены, а не после; трейдер, торгующий базис и занявший короткую позицию по бессрочному фьючерсу, охотно пересидит расчёт. Это асимметричное давление с чётким сроком. Сразу после расчёта часть потока разворачивается — лонги, избегавшие фандинга, снова входят в рынок, — и происходит частичный откат.
Поэтому сигнал возврата к среднему, который срабатывает в 23:52 и закрывается в 00:12, оказывается как раз там, где происходит предсказуемое событие ликвидности. Часть вашего преимущества, вероятно, связана с откатом после механического движения, обусловленного календарём. Это реальное явление микроструктуры рынка, и оно существует уже много лет.
Но прежде чем поверить такой большой цифре, как у вас, я бы хотел кое-что проверить.
Шесть проверок — в том порядке, в каком я бы их проводил
Начните с самых дешёвых: большинство подобных стратегий проваливается на второй или третьей проверке.
- Не учтён ли P&L от фандинга дважды? Если ваш движок симуляции сделок начисляет фандинг на открытые позиции и вы используете временной ряд маркировочной цены, а не цены последней сделки, возможно, вы платите или получаете фандинг дважды — один раз явно и ещё раз за счёт поведения маркировочной цены при схождении. Выведите фактический денежный поток фандинга по каждой сделке и вручную сверьте десять из них с историческим API фандинга биржи.
- Какую временную метку содержит запись о фандинге? В истории ставок фандинга Binance поле fundingTime указывает на момент расчёта. Некоторые поставщики данных ставят на ту же запись метку начала интервала, к которому она относится. Если у вас именно так и есть сдвиг на восемь часов, вы торговали по сигналу, который заглядывает в будущее. Это самый частый способ получить фиктивное преимущество на фандинге из всех, что я видел; именно так и получается ваш профиль P&L — прибыль сосредоточена на барах расчёта, знак правильный, результат великолепный.
- Что происходит со спредом ровно в 00:00:00? Запросите стакан, а не свечи. На 1-минутном баре спред не заметен; за несколько секунд до и после расчёта на бирже среднего уровня он может расшириться в 3-5 раз. Если в модели сделки исполняются по средней цене или цене закрытия, вы получаете спред, которого на самом деле не было.
- Сохраняется ли эффект, если оставить только два других момента расчёта? Разделите три окна. У 00:00 UTC другой поток ордеров, чем в 08:00 (примерно время открытия азиатской сессии) и 16:00 (американская вторая половина дня). Если вся прибыль приходится на одно из трёх окон, у вас около 300 событий, а не 900, и Sharpe нужно пересчитать с учётом этого.
- Сохраняется ли эффект на бирже с другим временем расчёта? Вот эта проверка особенно полезна. Запустите идентичный сигнал на бирже, где фандинг рассчитывают каждый час или по другому расписанию. Если эффект связан с фандингом, он должен следовать расписанию этой биржи. Если на бирже, где расчёт не происходит в 00:00 UTC, сигнал всё равно срабатывает в 00:00 UTC, вы нашли полуночный артефакт в конвейере данных, а не эффект фандинга.
- Какая часть P&L приходится на первые и последние 90 секунд? Если всё преимущество укладывается в окно короче двух минут, 15-минутные бары слишком грубые, чтобы честно оценить цену входа. Считайте, что модель использует лучшую доступную в этом окне цену, а не ту, по которой вам удастся исполниться.
Если бы у меня был всего час, я бы первым делом провёл пятую проверку. Это чистый естественный эксперимент, которому не нужна новая инфраструктура — достаточно второго источника данных.
Во что на самом деле обходится торговля в окне расчёта
Предположим, эффект реален и вы прошли все шесть проверок. Теперь правильно оцените его стоимость, потому что смоделированная сделка отличается от той, которую вы сможете совершить.
Вот сравнение сделки с закрытием через 20 минут в спокойный час и сделки, захватывающей расчёт фандинга, на бессрочном фьючерсе USDⓈ-M с входом и выходом по taker для объёма $50k:
| Спокойный час (например, 03:20 UTC) | С захватом 00:00 UTC | |
|---|---|---|
| Комиссия taker за полный цикл | 0.09% | 0.09% |
| Типичный спред | ~0.4 bp | 1.5-3 bp |
| Проскальзывание при объёме $50k | ~0.5 bp | 2-6 bp |
| Уплаченный/полученный фандинг | 0 | ±1 to ±4 bp (за весь интервал) |
| Реалистичная общая стоимость | ~10 bp | 13-19 bp без учёта фандинга |
Строка с фандингом — самая интересная, и именно поэтому я так настаиваю на первой проверке. Если вы держите позицию в момент расчёта, то платите за весь интервал фандинга вне зависимости от того, как долго удерживали позицию. Экспозиция в течение 12 секунд с 23:59:54 обойдётся вам в полный фандинг за восемь часов. Стратегия, где среднее время удержания — 20 минут и сделка пересекает момент расчёта, платит за перенос позиции в течение восьми часов, хотя сама сделка длится 20 минут. Именно так модель комиссий и должна учитывать фандинг: без пропорционального пересчёта по времени удержания.
Есть и другая ловушка: если вообще не пересекать момент расчёта — выйти в 23:58 и снова войти в 00:02, — вы платите комиссию за исполнение дважды и запускаете стратегию, основанную на том, что две дополнительные сделки taker обходятся дешевле одного платежа фандинга. Иногда это верно. Посчитайте всё явно, не полагайтесь на решение бэктеста.
Вопрос о рыночном режиме, который вы ещё не задали
Ваша выборка охватывает период с февраля 2024 по июнь 2026. За это время рынок фандинга успел побывать в разных режимах. Были длинные отрезки, когда ставка за 8 часов держалась на минимальном уровне 0.01% и никому не нужно было менять позиции перед расчётом. А бывали недели, когда она несколько дней подряд составляла 0.05%+, а поток ордеров перед расчётом был очень интенсивным.
Разбейте P&L по преобладающей на момент сделки ставке фандинга — например, на четыре корзины по абсолютному значению ставки. Если преимущество связано с потоком ордеров из-за фандинга, оно должно примерно монотонно расти с |funding|. Около нулевой ставки — около нуля преимущества; высокая ставка — большое преимущество. Если же результаты одинаковы во всех корзинах или, что ещё хуже, прибыль сосредоточена в корзине низкого фандинга, то объяснение через фандинг — всего лишь версия, которую вы привязали к другому явлению.
Мне нравится эта проверка, потому что она проверяет опровержимое предсказание, которое следует из вашего же объяснения. Вы спрашиваете не «работает ли стратегия по-прежнему», а «работает ли она по заявленной причине».
Что бы я сделал на вашем месте
Если стратегия проходит проверки, уменьшите масштаб. Честная версия этой стратегии — не 900 сделок в год по сетке 15-минутных интервалов, а несколько сотен тщательно отобранных событий, логика входа с точностью до секунды и модель исполнения, построенная на снимках стакана, а не на свечах. Получится стратегия скромнее, менее привлекательная, зато её проще защитить. И только у такой версии есть шанс совпасть с результатами бумажной торговли — лишь так вы узнаете, существуют ли в действительности цены исполнения, которые вы заложили в модель.
Если вы провалите вторую проверку — на сдвиг временной метки, — не расстраивайтесь. Такое хотя бы раз случается со всеми. И внимательно изучите загрузчик данных, прежде чем просто поправлять смещение: если сдвинут фандинг, есть немалый шанс, что открытый интерес тоже, и лучше узнать об этом до следующей идеи.
И ещё кое-что — об этом часто забывают. Запишите все шесть проверок и их результаты рядом с описанием стратегии. Через шесть месяцев вы или кто-то другой построит структурно такой же сигнал, получит такую же прекрасную кривую и начнёт тот же спор сначала. Именно диагноз — ценный актив, который останется с вами надолго. Стратегия может таким активом и не стать.
← Все статьи
