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

Стратегии

BTC COIN-M Базис квартального и бессрочного контрактов: длинная позиция по бессрочному и короткая по квартальному при годовом базисе >= 8% (кэш-энд-кэрри с обратной маржой)

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

BtcCmQuarterlyPerpBasisCarryNeutral

BTC COIN-M Базис квартального и бессрочного контрактов: длинная позиция по бессрочному и короткая по квартальному при годовом базисе >= 8% (кэш-энд-кэрри с обратной маржой)

Гипотеза

Рыночно-нейтральный календарный спред на Binance COIN-M: инверсные контракты BTC. Лонг по бессрочному контракту BTCUSD_PERP и шорт по ближайшему квартальному фьючерсу BTCUSD_YYMMDD, если годовой базис между ними не ниже 8%. Маржа обеих ног — BTC (инверсные контракты), поэтому прибыль и убыток учитываются в BTC. Это сделка для повышения доходности в BTC для держателей актива наряду со спредом, нейтральным к USD. Механика основана на условиях контракта: квартальные фьючерсы с датой экспирации MUST по спецификации……Показать большеСвернуть

Рыночно-нейтральный календарный спред на Binance COIN-M: инверсные контракты BTC. Лонг по бессрочному контракту BTCUSD_PERP и шорт по ближайшему квартальному фьючерсу BTCUSD_YYMMDD, если годовой базис между ними не ниже 8%. Маржа обеих ног — BTC (инверсные контракты), поэтому прибыль и убыток учитываются в BTC. Это сделка для повышения доходности в BTC для держателей актива наряду со спредом, нейтральным к USD. Механика основана на условиях контракта: квартальные фьючерсы с датой экспирации MUST по спецификации контракта сходятся к цене базового спотового/бессрочного контракта при экспирации. Поэтому квартальный фьючерс, торгующийся с премией к бессрочному, будет сближаться с ним по мере приближения экспирации (базис = mark_quarterly / mark_perp - 1, годовая ставка рассчитана за days_to_expiry). Это принципиально отличается от неудачной стратегии возврата к среднему для коэффициента ETH/BTC: коэффициент между двумя разными активами ничем не обязан сходиться и может неограниченно долго двигаться в одном направлении. Здесь базис между двумя контрактами на один и тот же актив SAME имеет заданную контрактом точку схождения. Стратегия нацелена на наименее представленную группу площадок (BINANCE_CM при целевом значении не менее 5%, сейчас 0.9%), а также добавляет направление лонг-шорт (12.4%) и пары (18.0%), вводя ранее не тестировавшийся в портфеле класс механик «керри на базисе / кэш-энд-керри». Только OHLCV: без дополнительных данных, классических паттернов TA, возврата коэффициента между разными активами к среднему; простая позиция из 2 ног.

Точно реализует механизм гипотезы: лонг по бессрочному контракту / шорт по срочному квартальному, одна площадка, две ноги, только OHLCV, триггер по годовой базисной ставке, контрактная конвергенция вместо статистической реверсии к среднему. Срочную ногу я выбрал с учётом правила площадки: квартальный контракт должен быть CURRENTLY LISTED. Контракт BTCUSD_260925 (экспирация 2026-09-25) активен, а BTCUSD_260626 из каталога уже истёк, поэтому его нельзя было ни протестировать на текущем окне, ни запустить в реальную……Показать большеСвернуть

Точно реализует механизм гипотезы: лонг по бессрочному контракту / шорт по срочному квартальному, одна площадка, две ноги, только OHLCV, триггер по годовой базисной ставке, контрактная конвергенция вместо статистической реверсии к среднему. Срочную ногу я выбрал с учётом правила площадки: квартальный контракт должен быть CURRENTLY LISTED. Контракт BTCUSD_260925 (экспирация 2026-09-25) активен, а BTCUSD_260626 из каталога уже истёк, поэтому его нельзя было ни протестировать на текущем окне, ни запустить в реальную торговлю. Квартальный контракт — основная нога и временной ориентир PRIMARY, поскольку срок его действия короче; для каждого основного бара есть соответствующий по времени бар бессрочного контракта, поэтому барьер согласования данных между ногами всегда можно пройти. При обратном выборе помешала бы история бессрочного контракта длительностью 2020-2026. Дельта-нейтральность заложена в конструкцию, а не достигается арифметически: одинаковый номинал $100 означает, что равное число контрактов даёт равные номиналы. Именно этот недостаток погубил предыдущие рыночно-нейтральные пары. Отмечу два сознательных отклонения. Во-первых, годовой порог 8% не сработает: по реальному ряду базиса из каталога годовой базис для BTCUSD_260925 составляет лишь 1.8%-3.6% (медиана 2.5%), а по предыдущему контракту 260626 — 0.1%-5.7%. У 8% всего ZERO таких случаев, поэтому фиксированный порог 8% не дал бы ни одной сделки. Поэтому порог по умолчанию — 2.8% (примерно 80-й процентиль доступных значений этого контракта); верхняя граница оптимизатора оставлена открытой до 8%, чтобы уровень гипотезы оставался достижимым при более благоприятном режиме. Во-вторых, что важнее для ожиданий, у этого механизма структурно низкая частота сделок. Симуляция точной логики входа и выхода на реальном объединённом ряду даёт 2 входов и 1 завершённых циклов сделки за 334 перекрывающихся баров. За цикл контракта приходится лишь одна конвергенция, поэтому статистика, чувствительная к числу сделок, будет слабой при любых порогах. Экономический эффект небольшой, но реальный: вход около премии в 110 б.п. и удержание до момента за 2 дней до расчёта дают примерно 1.1% до издержек полного цикла по двум ногам в размере около 0.20%. Кредитное плечо остаётся на уровне 1.0, а номинал каждой ноги составляет 0.25x капитала, поэтому общая маржа — около половины капитала и сценария ликвидации нет.

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, чтобы обойти ограничение)

Реализация

Нейтральная к рынку обратная стратегия cash-and-carry на Binance COIN-M по контрактам BTC (4-часовые бары, только OHLCV). Она оценивает календарный базис между текущим датированным квартальным контрактом BTCUSD_260925 (экспирация 2026-09-25) и бессрочным контрактом BTCUSD_PERP: базис = квартальный / бессрочный - 1, годовой пересчёт — по числу дней до экспирации. Когда годовой базис высокий (>= entry_ann) и до экспирации больше 2 дней, стратегия SHORTS квартальный контракт и открывает LONG позицию по бессрочному с……Показать большеСвернуть

Нейтральная к рынку обратная стратегия cash-and-carry на Binance COIN-M по контрактам BTC (4-часовые бары, только OHLCV). Она оценивает календарный базис между текущим датированным квартальным контрактом BTCUSD_260925 (экспирация 2026-09-25) и бессрочным контрактом BTCUSD_PERP: базис = квартальный / бессрочный - 1, годовой пересчёт — по числу дней до экспирации. Когда годовой базис высокий (>= entry_ann) и до экспирации больше 2 дней, стратегия SHORTS квартальный контракт и открывает LONG позицию по бессрочному с равным числом контрактов. Поскольку оба контракта COIN-M имеют одинаковый фиксированный номинал $100 USD, равное число контрактов означает одинаковый номинал USD; поэтому пара нейтральна по дельте и не имеет остаточной направленной экспозиции. Позиция закрывается, когда базис нормализуется (годовой показатель <= exit_ann) или до расчёта остаётся 2 дней; если исполнена только одна нога, позиция немедленно закрывается. Обе ноги имеют маржу в BTC, поэтому прибыль/убыток и комиссии реализуются в BTC — профиль повышения доходности, номинированной в BTC. Обе ноги открываются и закрываются на одном баре внутри calculate_signal; путь исполнения одной ноги в базовом классе намеренно не задействован, поскольку разнесение входов по времени даже на один бар оставило бы непокрытую дельту BTC.

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

Проверка не пройдена (слой 4 — проверка QA) [class=not_measurable]: - [edge_concern] Помимо проблем с измеримостью, собственный реплей разработчика показывает структурно низкую частоту сделок и небольшой edge: около 2 входов и 1 завершённых сделок туда-обратно за срок жизни контракта, прибыль около 1.1% до издержек против около 0.20% затрат на сделку туда-обратно с двумя ногами. Коэффициент Шарпа песочницы 2.85 / PF 2.0 / +4.6% рассчитан по 4 сделкам за окно в 72 дней (metrics_reliable=false), поэтому ему нельзя……Показать большеСвернуть

Проверка не пройдена (слой 4 — проверка QA) [class=not_measurable]: - [edge_concern] Помимо проблем с измеримостью, собственный реплей разработчика показывает структурно низкую частоту сделок и небольшой edge: около 2 входов и 1 завершённых сделок туда-обратно за срок жизни контракта, прибыль около 1.1% до издержек против около 0.20% затрат на сделку туда-обратно с двумя ногами. Коэффициент Шарпа песочницы 2.85 / PF 2.0 / +4.6% рассчитан по 4 сделкам за окно в 72 дней (metrics_reliable=false), поэтому ему нельзя доверять как оценке edge. exposure_pct 285% — артефакт двойного учёта инверсных контрактов, а не реальный направленный риск. Только рекомендация: препятствие — полнота данных. - NOT MEASURABLE — edge состоит в схождении CONTRACTUAL квартального фьючерса с AT EXPIRY перпетуального контракта, но доступное для торговли окно ограничено более коротким сроком жизни квартального фьючерса (основного инструмента и временного ориентира). У BTCUSD_260925.BINANCE_CM есть каталог данных только за 4H, с 2026-03-27 по 2026-06-07 (около 72 дней, 436 баров), тогда как расчёт происходит 2026-09-25 — данные заканчиваются примерно за 110 дней до BEFORE экспирации, поэтому схождение к расчёту не наблюдается. Песочница дала 4 сделок (около 1-2 сделок туда-обратно); реплей разработчика показывает около 2 входов / 1 завершённых сделок туда-обратно. Один усечённый цикл (n=1) не позволяет проверить edge на схождении или заполнить 3-оконный walk-forward-анализ либо отложенную выборку с порогом HARD >=10 сделок. Заявленный триггер 8% не срабатывает (наблюдалось 1.8-3.6%). - Условие гипотезы — годовая базисная ставка >= 8%, однако entry_ann по умолчанию равно 2.8%, поскольку измеренный базис охватывает лишь 1.8-3.6% (8% не наступает). Прозрачное изменение величины на основе данных при сохранении структурного условия (граница открыта до 8%), а не замена механизма. Но предпосылка гипотезы «8% покрывает комиссии» не проверяется; при 2.8% edge невелик. - Дельта-нейтральность основана на USD-NOTIONAL (одинаковое число контрактов с одинаковым номиналом $100). Для контрактов INVERSE дельта BTC равна номиналу, делённому на цену, поэтому BTC дельты двух ног различаются на величину базиса (около 2-3%) — остаётся небольшая направленная экспозиция, а не точный ноль. Для сделки на схождении влияние второго порядка и приемлемо, но формулировка «дельта-нейтральна по конструкции» слегка преувеличивает.

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

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 — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.