Перейти к содержимому
Все стратегии

Стратегии

BTC Квартальный арбитраж базиса: длинная позиция BTC на споте + короткая по квартальному фьючерсу BINANCE_CM при годовом базисе > 6%

Итог: Отменено

BtcQuarterlyCashAndCarryBasisArbNeutral

BTC Квартальный арбитраж базиса: длинная позиция BTC на споте + короткая по квартальному фьючерсу BINANCE_CM при годовом базисе > 6%

Гипотеза

Классический арбитраж базиса с переносом позиции на квартальных обратных фьючерсах Binance COIN-M, хеджированных длинной позицией на споте BTCUSDT. Механизм: BINANCE_CM размещает датированные квартальные фьючерсы BTC (BTCUSD_YYMMDD), которые по условиям контракта MUST сходятся с ценой спота к экспирации. Когда годовой базис между ценой спота и ценой следующего квартального фьючерса превышает 6% (документированный порог, выше которого сделка прибыльна после комиссий), одновременно открываются длинная позиция LONG……Показать большеСвернуть

Классический арбитраж базиса с переносом позиции на квартальных обратных фьючерсах Binance COIN-M, хеджированных длинной позицией на споте BTCUSDT. Механизм: BINANCE_CM размещает датированные квартальные фьючерсы BTC (BTCUSD_YYMMDD), которые по условиям контракта MUST сходятся с ценой спота к экспирации. Когда годовой базис между ценой спота и ценой следующего квартального фьючерса превышает 6% (документированный порог, выше которого сделка прибыльна после комиссий), одновременно открываются длинная позиция LONG BTC на BINANCE_SPOT и короткая позиция SHORT по квартальному BTCUSD с ближайшей экспирацией на BINANCE_CM с соответствующим номиналом. Удерживать до экспирации (или закрывать раньше с прибылью, если годовой базис опустится ниже 2%). При экспирации фьючерс рассчитывается в BTC, автоматически обеспечивая поставку против спотовой ноги. Это одновременно заполняет FOUR важных недостаточно представленных категорий: площадка COIN-M (0% → первый шаг к цели 5%), торговля между площадками (2.2% → к цели 15%), направление длинная-короткая (14.2% → к цели 45%) и долгосрочная рыночно-нейтральная стратегия (всего 0.2% macro_1w_plus). Механизм COMPLETELY независим от всех неудач в этой сессии: зависит ли NOT от ценовых моделей BTC, зависит ли NOT от режима рынка, зависит ли NOT от оптимизации параметров. Схождение квартального базиса математически обусловлено формулой расчёта контракта. Размер позиции: 30% капитала в спотовой ноге + короткие фьючерсы номиналом 30% (BTC-маржинальная позиция на COIN-M, рассчитанная для поставки против спота при экспирации). Риск на сделку: 1.5% капитала, ограниченный стопом при расхождении базиса. Ожидаемое число возможностей: 3-6 в год (базис пересекает 6% в периоды затяжного бычьего импульса или после резких скачков ставок финансирования).

Точно реализует механизм гипотезы — схождение цены фьючерса с датой экспирации COIN-M к спотовой цене, с хеджированием длинной спотовой позицией, размер которой позволяет исполнить поставку по денежной части, — с тремя намеренными отклонениями на основе данных, которые я хочу зафиксировать. (1) CONTRACT. В гипотезе говорится о квартальном контракте BTCUSD с ближайшей экспирацией. В этом фреймворке нет механизма перебора цепочки фьючерсов (автоматически разрешаются только скользящие цепочки OPTIONS), поэтому……Показать большеСвернуть

Точно реализует механизм гипотезы — схождение цены фьючерса с датой экспирации COIN-M к спотовой цене, с хеджированием длинной спотовой позицией, размер которой позволяет исполнить поставку по денежной части, — с тремя намеренными отклонениями на основе данных, которые я хочу зафиксировать. (1) CONTRACT. В гипотезе говорится о квартальном контракте BTCUSD с ближайшей экспирацией. В этом фреймворке нет механизма перебора цепочки фьючерсов (автоматически разрешаются только скользящие цепочки OPTIONS), поэтому стратегия торгует одним идентификатором инструмента. Единственный доступный сейчас квартальный контракт LISTED BTC COIN-M с данными в каталоге — BTCUSD_260925 (бары 2026-03-27 → 2026-06-07, интервал 4-HOUR — единственный собранный); срок BTCUSD_260626 истёк (торговля запрещена), а у BTCUSD_261225 нет ни баров, ни инструмента в каталоге. BINANCE_CM намеренно служит частью PRIMARY: среда исполнения формирует запас монет BTC и учитывает обратный контракт только при первичной площадке BINANCE_CM; только тогда маржа и расчёты по этой части корректно учитываются как по обратному контракту. (2) THRESHOLD. Я измерил фактический базис BTCUSD_260925 относительно спотовой цены BTCUSDT на всех перекрывающихся барах 4H в каталоге: годовой базис находился в диапазоне от 1.35% до 3.49% APR (среднее 2.42%, p75 2.62%), а показатель NEVER однажды превысил 6%. Порог 6% гарантирует запуск без единой сделки (именно из-за такого сбоя эти стратегии и бросают). Поэтому я сделал порог параметром и установил его на 2.6% APR (около p75 наблюдавшегося режима). Это всё ещё превышает безубыточный уровень с учётом комиссий — 0.30% за сделку туда-обратно / примерно 0.4y TTE = около 0.75% APR — более чем на 3x. Оптимизатор может менять это значение; порог жизнеспособности с учётом комиссий (carry_pct >= min_capture_pct + round_trip_cost_pct) не позволяет ему выбрать диапазон, где комиссии съедают прибыль. (3) EXIT. Чистое удержание до экспирации нельзя проверить (данные заканчиваются примерно за 110 дней до расчёта), а чистая торговля на возврате базиса к среднему приводит к частым сделкам: пробный прогон с входом при -2.6 и выходом при -2.0 APR приносит лишь около 0.04-0.12% на сделку после комиссии 0.30% за сделку туда-обратно — комиссии съедают результат. Вместо этого фиксация прибыли при схождении на REALIZED (min_capture_pct = 0.45% от номинала) даёт около 0.46% до комиссий и 0.16% после комиссий на сделку: 3 сделок туда-обратно и одна открытая позиция за окно в 72 дней. Так честно выглядит преимущество этой стратегии при розничных комиссиях. Честная оговорка для аналитика: механизм реален и почти не несёт риска, но при режиме базиса 2.4% APR, плече 1x (плечо для спотовой части CASH недоступно) и комиссиях 0.30% за сделку туда-обратно совокупная доходность за единственное окно, которое можно проверить бэктестом, изначально мала — около 0.2-0.3% на задействованный капитал за 72 дней. Я реализовал стратегию согласно спецификации; размер позиции выровнен по дельте в терминах COIN: короткая позиция по обратному контракту N*100/F BTC против длинной спотовой позиции того же размера BTC, поэтому в портфеле не возникает скрытой направленной экспозиции, из-за которой раньше терпели крах другие якобы «рыночно-нейтральные» парные стратегии.

backtest_failed: RuntimeError: данные финансирования недоступны для перпетуальной ноги 'BTCUSD_260925.BINANCE_CM' — сбор по запросу не удался или у площадки нет истории финансирования (бэктест заблокирован ради точности; задайте SF_DISABLE_ONDEMAND_FUNDING=1, чтобы обойти проверку) Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 194, in _run_backtest await self._ensure_funding_for_perp_legs(instrument_id, extra_instrs) File "/opt/strategy-factory/src/agents/backtest_agent.py", line 411, in _ensure_funding_for_perp_legs raise RuntimeError( RuntimeError: данные финансирования недоступны для перпетуальной ноги 'BTCUSD_260925.BINANCE_CM' — сбор по запросу не удался или у площадки нет истории финансирования (бэктест заблокирован ради точности; задайте SF_DISABLE_ONDEMAND_FUNDING=1, чтобы обойти проверку)

Реализация

Дельта-нейтральный квартальный кэш-энд-кэрри на BTC. На каждом баре 4H стратегия измеряет долларовый базис датированного квартального контракта Binance COIN-M BTCUSD_260925 относительно спотовой цены BTCUSDT: carry_pct = (F-S)/S*100, а также его годовое значение ann_pct = carry_pct / число лет до истечения (срок истечения извлекается из суффикса YYMMDD контракта; расчёт 08:00 UTC). Когда базис высок в терминах APR (>= entry_annualized_basis_pct) и доступного долларового базиса AND достаточно, чтобы покрыть полный……Показать большеСвернуть

Дельта-нейтральный квартальный кэш-энд-кэрри на BTC. На каждом баре 4H стратегия измеряет долларовый базис датированного квартального контракта Binance COIN-M BTCUSD_260925 относительно спотовой цены BTCUSDT: carry_pct = (F-S)/S*100, а также его годовое значение ann_pct = carry_pct / число лет до истечения (срок истечения извлекается из суффикса YYMMDD контракта; расчёт 08:00 UTC). Когда базис высок в терминах APR (>= entry_annualized_basis_pct) и доступного долларового базиса AND достаточно, чтобы покрыть полный цикл комиссий и целевую прибыль (carry_pct >= min_entry_carry_pct и >= min_capture_pct + round_trip_cost_pct), стратегия открывает классическую позицию кэрри: SHORT квартальный контракт на BINANCE_CM целым числом инверсных контрактов по $100 и BUY ровно соответствующую дельту COIN (100/F BTC) спотовой позиции BTCUSDT, так что чистая дельта BTC по конструкции близка к 0. Прибыль и убыток пары равны базису на входе минус базис на выходе в долларах и не зависят от направления BTC. Позиция закрывается, когда базис действительно сошёлся на min_capture_pct (фиксация прибыли), когда базис опускается ниже exit_carry_pct, расширяется на max_widen_pct против входа (стоп при расхождении), наступает срок close_before_days до расчёта или одна из ног остаётся без хеджа. Обе ноги одновременно открываются и закрываются в calculate_signal; should_enter/should_exit/position_size намеренно неактивны (это стандартный шаблон работы с несколькими ногами в данном репозитории).

Результаты верификации

Проверка не пройдена (уровень 4 — проверка QA) [класс=not_measurable]: - [edge_concern] Даже если не учитывать возможность измерения: при реализованном режиме базиса ~1.35-3.49% APR, плече 1x (ногу спота CASH нельзя использовать с плечом) и комиссиях ~0.30% за полный цикл собственная честная оценка разработчика — ~0.16% чистыми на сделку. Преимущество реально, почти безрисково, но очень мало. Совокупный результат песочницы +0.52% / avg_trade_return_pct 4.30% при колебаниях на ногах около $7-10k MTM в якобы……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA) [класс=not_measurable]: - [edge_concern] Даже если не учитывать возможность измерения: при реализованном режиме базиса ~1.35-3.49% APR, плече 1x (ногу спота CASH нельзя использовать с плечом) и комиссиях ~0.30% за полный цикл собственная честная оценка разработчика — ~0.16% чистыми на сделку. Преимущество реально, почти безрисково, но очень мало. Совокупный результат песочницы +0.52% / avg_trade_return_pct 4.30% при колебаниях на ногах около $7-10k MTM в якобы дельта-нейтральном портфеле объясняется выпуклостью обратного контракта и агрегацией MTM между двумя площадками, а не направленным риском. Только рекомендация: ограничение связано с охватом данных. - NOT MEASURABLE — данных недостаточно для проверки гипотезы. Преимущество стратегии — схождение квартального FORCED к споту AT EXPIRY, но для настроенного контракта BTCUSD_260925.BINANCE_CM в каталоге есть данные 4H лишь за период 2026-03-27 -> 2026-06-07 (~72 дней, 436 баров), а расчёт наступит только 2026-09-25. Файл parquet заканчивается примерно за 110 дней BEFORE экспирации, поэтому схождение к расчёту не наблюдается ни в одном бэктесте. Полный бэктест охватывает то же окно примерно в 72 дней, что и песочница (файлы parquet датированных квартальных контрактов заканчиваются на 2026-06-07), и даёт около 6 сделок — этого недостаточно для walk-forward-анализа на 3 окнах или отложенной выборки HARD >=10 сделок. Данные по другому датированному квартальному контракту (BTCUSD_260626) также заканчиваются 2026-06-07 (примерно за 19 дней до его экспирации), и это не настроенный инструмент; у BTCUSD_261225 баров нет. Один усечённый цикл экспирации (n=1) не может подтвердить преимущество от схождения. - Заявленный в гипотезе порог — годовой базис > 6%, но в коде используется 2.6%, поскольку доступный контракт ни разу не превысил 3.49% APR. Это прозрачное, обусловленное данными изменение величины порога (структурный порог и защита от убыточности после комиссий сохранены), а не замена механизма. Однако предпосылка прибыльности самой гипотезы (6% с запасом покрывает комиссии) не проверяется; при 2.6% преимущество минимально, что усиливает сомнения в возможности его измерить.

История итераций

RuntimeError: данные финансирования недоступны для перпетуальной ноги 'BTCUSD_260925.BINANCE_CM' — сбор по запросу не удался или у площадки нет истории финансирования (бэктест заблокирован ради точности; задайте SF_DISABLE_ONDEMAND_FUNDING=1, чтобы обойти проверку) Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 194, in _run_backtest await self._ensure_funding_for_perp_legs(instrument_id, extra_instrs) File "/opt/strategy-factory/src/agents/backtest_agent.py", line 411, in _ensure_funding_for_perp_legs raise RuntimeError( RuntimeError: данные финансирования недоступны для перпетуальной ноги 'BTCUSD_260925.BINANCE_CM' — сбор по запросу не удался или у площадки нет истории финансирования (бэктест заблокирован ради точности; задайте SF_DISABLE_ONDEMAND_FUNDING=1, чтобы обойти проверку)

Причина отказа

backtest_failed: RuntimeError: данные финансирования недоступны для перпетуальной ноги 'BTCUSD_260925.BINANCE_CM' — сбор по запросу не удался или у площадки нет истории финансирования (бэктест заблокирован ради точности; задайте SF_DISABLE_ONDEMAND_FUNDING=1, чтобы обойти проверку) Traceback (most recent call last): File "/opt/strategy-factory/src/agents/backtest_agent.py", line 194, in _run_backtest await self._ensure_funding_for_perp_legs(instrument_id, extra_instrs) File "/opt/strategy-factory/src/agents/backtest_agent.py", line 411, in _ensure_funding_for_perp_legs raise RuntimeError( RuntimeError: данные финансирования недоступны для перпетуальной ноги 'BTCUSD_260925.BINANCE_CM' — сбор по запросу не удался или у площадки нет истории финансирования (бэктест заблокирован ради точности; задайте SF_DISABLE_ONDEMAND_FUNDING=1, чтобы обойти проверку)

Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.