Стратегии
Хеджированный кэрри финансирования ADA при минимальной ставке Binance: длинная позиция ADAUSDT на споте + короткая ADAUSDT USD-M бессрочная, пока среднее финансирование за последние 3 дней >= 0.01%/8ч; переход в нейтральную позицию при отрицательном значении (1H бары, нейтральная по дельте стратегия, около 50% времени на рынке)
Итог: Отменено
AdaHedgedFundingCarryFloor1H
Сводка по итогам
AdaHedgedFundingCarryFloor1H пыталась получать финансирование ADA бессрочного фьючерса с помощью хеджированной пары: длинная позиция на споте и короткая в бессрочном фьючерсе. Условие входа — среднее финансирование за последние 3 дней не ниже протокольного минимума 0.01%/8ч. Предварительное исследование только финансирования (без прибыли и убытка по базису) выглядело многообещающе: чистый результат +3.22% на эпизод при 26 эпизодах. За 4 итераций в код добавили расчёт размера от общего капитала, сброс при достижении буфера до ликвидации и правила против частых сделок, но проверку он так и не прошёл. Запуск остановили, потому что статический анализ уровня 1 отметил поиск временной метки финансирования на основе abs() как заглядывание вперёд; поэтому бэктест, оптимизация и анализ аналитиком не проводились.
Гипотеза
verification_loop: проверка не пройдена (уровень 1 — статический анализ): - Заглядывание вперёд: дополнительное наблюдение выбирается по дистанции ABSOLUTE до временной метки бара; если оно ближе предыдущего, возвращается наблюдение NEXT. Используй self.supp_as_of(key) (последнее значение на момент бара или раньше) либо явный фильтр `ts <= bar.ts_init` — никогда abs(). (строка 241)
Реализация
Дельта-нейтральный кэрри финансирования ADA: длинная позиция ADAUSDT на споте + равная по количеству короткая позиция ADAUSDT USD-M в бессрочном фьючерсе, пока среднее финансирование за последние 9 значений (3 дней) за 8ч >= 0.01%/8ч (минимальная ставка Binance) и базис >= 0. Выход, когда среднее < 0 и базис <= 5bp, после минимального удержания 24ч. Принудительный выход, если среднее < -0.01%/8ч или данные финансирования устарели. Размер каждой пары рассчитывается от общего капитала портфеля (0.8 x всего / 2 на каждую сторону). Маржа счёта бессрочных фьючерсов защищена плечом площадки 3x и сбросом при достижении буфера до ликвидации. Непарные или неравные позиции закрываются; повторный вход запрещён на 24ч.
Результаты верификации
Проверка не пройдена (уровень 1 — статический анализ): - Заглядывание вперёд: дополнительное наблюдение выбирается по дистанции ABSOLUTE до временной метки бара; если оно ближе предыдущего, возвращается наблюдение NEXT. Используй self.supp_as_of(key) (последнее значение на момент бара или раньше) либо явный фильтр `ts <= bar.ts_init` — никогда abs(). (строка 241)
Когда парная позиция открыта и _entry_px==0, задать _entry_px по значению avg_px_open позиции по бессрочному контракту.
Опорное значение проверки хеджа _entry_px и флаг _rehedge_pending хранятся только в памяти. После перезапуска бумажной торговли или торговли на реальном счёте с открытой парой _entry_px=0, а проверка повторного хеджирования 40% незаметно отключается до конца эпизода. В комментарии написано «сохраняется после перезапуска», но восстановление этих значений по открытым позициям не предусмотрено.
Необязательно: записывать счётчик «naked_leg_unwind», чтобы такие события отображались в диагностике.
Обе стороны отправляются как независимые рыночные ордера. Если один из них отклонен (например, на спотовой стороне CASH не хватает денежных средств после комиссий), защита от непокрытой позиции закроет другую сторону на следующем баре. Это безопасно, но обходится в полный цикл сделок; при плече 1.0 и 0.5 capital_frac такой сбой должен быть редким. Альтернативы этому нет; аналитик должен принять это к сведению.
Оставьте это только в том случае, если базовый контракт это допускает.
Переопределение min_bars_required() перекрывает базовый метод (предупреждение статического анализа). Это безвредно, поскольку ценовые индикаторы не используются, а окно финансирования проходит отдельную проверку полноты.
Анализ
История итераций
Проверка не пройдена (уровень 1 — статический анализ): - Заглядывание в будущее: дополнительное наблюдение выбирается по расстоянию ABSOLUTE до временной метки бара; при этом возвращается наблюдение NEXT, если оно ближе предыдущего. Используйте self.supp_as_of(key) (последнее значение на момент бара или раньше) либо явный фильтр `ts <= bar.ts_init` — никогда не используйте abs(). (строка 223)
Проверка не пройдена (уровень 1 — статический анализ): - Заглядывание в будущее: дополнительное наблюдение выбирается по расстоянию ABSOLUTE до временной метки бара; при этом возвращается наблюдение NEXT, если оно ближе предыдущего. Используйте self.supp_as_of(key) (последнее значение на момент бара или раньше) либо явный фильтр `ts <= bar.ts_init` — никогда не используйте abs(). (строка 239)
Сводка по итогам
Для поиска ставок финансирования на заданный момент времени необходимо использовать self.supp_as_of()/self.supp_window() или явный фильтр ts <= bar.ts_init; любое сопоставление временных меток по расстоянию abs() — это критическая ошибка уровня 1, блокирующая стратегию до запуска бэктеста.
После 4 итераций запуск остановили на цикле проверки. Статический анализ уровня 1 продолжал отклонять код из-за заглядывания вперёд: дополнительное наблюдение финансирования выбиралось по абсолютной дистанции до временной метки бара (строка 241), из-за чего могло вернуться следующее значение.
Дельта-нейтральная стратегия переноса доходности на финансировании ADA: держать длинную позицию на споте ADAUSDT и короткую позицию по бессрочному контракту ADAUSDT USD-M, пока среднее значение финансирования за последние 9 начислений (3 дней) не ниже минимальной процентной ставки Binance 0.01%/8ч, и закрыть все позиции, когда среднее становится отрицательным. Цель — получать структурный платеж, который лонги выплачивают шортам.
Для этого запуска нет метрик бэктеста или оптимизации в конвейере: отчет о бэктесте пуст, отчет об оптимизации не сформирован. Приведены только числа из предварительного исследования гипотезы, учитывавшего только финансирование и исключавшего P&L по базису: 26 эпизодов за период с 2020-01 по 2026-09, среднее значение +3.22% на эпизод после учета комиссии 0.30% за полный цикл, 77% эпизодов с положительным чистым результатом и около 50% времени на рынке.
Причина отказа
verification_loop: проверка не пройдена (уровень 1 — статический анализ): - Заглядывание в будущее: дополнительное наблюдение выбирается по расстоянию ABSOLUTE до временной метки бара; при этом возвращается наблюдение NEXT, если оно ближе предыдущего. Используйте self.supp_as_of(key) (последнее значение на момент бара или раньше) либо явный фильтр `ts <= bar.ts_init` — никогда не используйте abs(). (строка 241)
Обзор бэктеста
- Шарп
- 0,23
- Общая доходность
- 5,85%
- Максимальная просадка
- 0,45%
- Всего сделок
- 102
- Доля прибыльных
- 50,0%
- Профит-фактор
- 1,06
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.