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

Стратегии

FMZ «交割合约现货套利策略测试版» (арбитраж спота и фьючерсов с поставкой, тестовая версия) автора ianzeng123, точный перенос: арбитраж базиса с z-оценкой и фильтром ADF, BTCUSDT.BINANCE_SPOT против квартальных фьючерсов Binance USD-M BTC (текущий и следующий квартал), свечи по 1 мин

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

FmzSpotDeliveryAdfZScoreBasisArb

Сводка по итогам

FmzSpotDeliveryAdfZScoreBasisArb перенёс стратегию с открытым исходным кодом FMZ, которая арбитражирует базис между спотом BTC и квартальными фьючерсами Binance USD-M. Используются фильтр стационарности ADF и вход по z-оценке спреда; объём обеих частей фиксирован — 0.05 BTC, плечо фьючерса — 10x. Стратегия проходила по квартальным контрактам с BTCUSDT_210326, сопоставляя каждый со спотом по времени. При первой итерации проверка зависла, и после трёх истечений времени ожидания запуск прервали («verifying_stuck_3_timeouts»). До бэктеста, оптимизации и анализа стратегия не дошла, поэтому её преимущество не было измерено.

Гипотеза

Точный перевод стратегии с открытым исходным кодом ianzeng123 под названием «交割合约现货套利策略测试版» (FMZ; благодарность автору). В исходнике сочетается спотовый рынок SPOT (exchanges[0], BTC_USDT) с фьючерсами USDT-маржинального типа DELIVERY (exchanges[1], BTC_USDT.quarter и BTC_USDT.next_quarter; allowedCoins=['BTC']). Для каждого контракта с поставкой стратегия хранит историю spreadRate = (deliveryClose - spotClose)/spotClose за 1 минут (максимум 5000 точек), каждый час проводит тест стационарности ADF на последних……Показать большеСвернуть

Точный перевод стратегии с открытым исходным кодом ianzeng123 под названием «交割合约现货套利策略测试版» (FMZ; благодарность автору). В исходнике сочетается спотовый рынок SPOT (exchanges[0], BTC_USDT) с фьючерсами USDT-маржинального типа DELIVERY (exchanges[1], BTC_USDT.quarter и BTC_USDT.next_quarter; allowedCoins=['BTC']). Для каждого контракта с поставкой стратегия хранит историю spreadRate = (deliveryClose - spotClose)/spotClose за 1 минут (максимум 5000 точек), каждый час проводит тест стационарности ADF на последних 1000 точках, а когда спред «достаточно стационарен» и |z| >= 1.0, открывает хеджированную пару: при z>0 («положительная» / 正套) — BUY спотовый актив и SELL фьючерс с поставкой; при z<0 («отрицательная» / 反套) — SELL спотовый актив и BUY фьючерс с поставкой. Позиция закрывается, когда долларовый спред возвращается в целевой диапазон, при совокупном стоп-лоссе 1.5%, за 1 день до поставки или через 10 дней, если позиция прибыльна. Тейк-профита нет. PLATFORM MAPPING. Спотовая часть: BTCUSDT.BINANCE_SPOT (CASH, смоделированная для бэктеста ставка комиссии тейкера 0.10%/сторона). Фьючерсная часть: датированные квартальные контракты Binance USD-M BTCUSDT (BINANCE площадка, MARGIN, смоделированные для бэктеста ставки комиссии тейкера 0.05% / мейкера 0.02%), идентификаторы каталога BTCUSDT_YYMMDD.BINANCE, бары 1-MINUTE имеются в каталоге для каждого квартального контракта с BTCUSDT_210326 по BTCUSDT_261225 (у каждого примерно 3-6 месяцев истории с интервалом 1m до истечения срока; для BTCUSDT_270326 сбор данных только начался). Основной инструмент = BTCUSDT.BINANCE_SPOT-1-MINUTE-LAST-EXTERNAL; каждый квартальный контракт — это extra_instrument с типом баров 1-MINUTE. Исходник обнаруживает пары один раз при запуске; в многолетнем бэктесте порт должен повторять обнаружение при истечении срока контракта: на любом баре контрактом «quarter» считается листинг с ближайшей датой поставки, для которого ещё имеются бары, а 'next_quarter' — следующий за ним; каждый из них независимо объединяется в пару со спотовым активом (собственная история цен, кэш ADF, счётчик ошибок, периоды ожидания и запись позиции), а контракт пропускается для NEW входов, если daysToDelivery < minDaysToDelivery (7). Время поставки разбирается точно так же, как в исходнике: YYMMDD в символе в позиции 16:00 UTC (parseDeliveryDateFromString). Бары контракта после этого времени игнорируются. Кредитное плечо фьючерсной части = marginLevel 10 (плечо в конфигурации 10.0; спотовая часть — CASH, без плеча). SIZING (значение по умолчанию в исходнике, сохранено): orderAmount = 0.05 BTC спотового актива на пару; количество фьючерсов = те же 0.05 BTC (в исходнике calculateContractAmount с округлением вниз spotAmount/ctVal — это преобразование количества монет в количество контрактов, чтобы номинал фьючерсов соответствовал спотовой части; квартальные контракты Binance USD-M котируются в базовых единицах с шагом 0.001, поэтому хедж составляет ровно 0.05 BTC). Для покупки спотового актива требуется баланс USDT не менее 0.05*price + minUSDTReserve (10 USDT). При счёте в $100k это использует примерно 2-6% капитала на пару — таков размер позиции автора, и он намеренно сохранён; результаты каждой сделки оцениваются в процентах от номинала. SPOT SHORTING. На счёте изначально есть только USDT, поэтому собственная проверка исходника checkSpotBalance('sell') не проходит для входа в обратную позицию (z<0) («BTC不足», canRetry=false: пропустить, без периода ожидания, продолжать ждать положительной возможности). Порт сохраняет эту проверку; монеты, уже задействованные в открытой записи положительного арбитража пары OTHER, считаются недоступными (иначе обратный арбитраж по одному контракту продал бы хедж другого — ошибка, которая возникла бы и в исходнике; она задокументирована как единственное намеренное отклонение). На практике поэтому стратегия работает только в положительном направлении (длинная позиция по спотовому активу / короткая по квартальному фьючерсу), если свободен BTC спотового актива. Общее направление: рыночно-нейтральное (длинная позиция по спотовому активу + короткая по фьючерсу).

BTC чрезмерно часто встречается в наборе, но механизм действительно требует этот актив: BTC — единственная разрешённая монета в исходнике, а квартальные фьючерсы Binance USD-M с многолетней историей 1 мин есть в нашем каталоге только для крупных активов (проверено по каждому контракту: с BTCUSDT_210326 по BTCUSDT_261225). Стратегия заполняет наименее представленные категории: межбиржевая (7.4% против целевого значения >= 15%), рыночно-нейтральная / лонг-шорт, короткий горизонт и ранее не испробованный механизм (спот против базиса фьючерса с датой экспирации).

verifying_stuck_3_timeouts

Реализация

Точный перенос стратегии ianzeng123 на уровне свечей: FMZ «交割合约现货套利策略测试版». Сопоставляет BTCUSDT.BINANCE_SPOT с квартальными фьючерсами Binance USD-M BTC с датой экспирации (BTCUSDT_YYMMDD.BINANCE, свечи по 1 минут). Для каждого контракта хранит историю spreadRate=(fut-spot)/spot за период 1m (макс. 5000), ежечасно выполняет тест ADF (последние 1000 точек, лаг floor(12*(n/100)^0.25), p-значение по нормальному приближению, как в исходнике; 3 последовательных неудач запрещают торговлю), а для двух ближайших……Показать большеСвернуть

Точный перенос стратегии ianzeng123 на уровне свечей: FMZ «交割合约现货套利策略测试版». Сопоставляет BTCUSDT.BINANCE_SPOT с квартальными фьючерсами Binance USD-M BTC с датой экспирации (BTCUSDT_YYMMDD.BINANCE, свечи по 1 минут). Для каждого контракта хранит историю spreadRate=(fut-spot)/spot за период 1m (макс. 5000), ежечасно выполняет тест ADF (последние 1000 точек, лаг floor(12*(n/100)^0.25), p-значение по нормальному приближению, как в исходнике; 3 последовательных неудач запрещают торговлю), а для двух ближайших действующих контрактов («quarter»/«next_quarter», цепочка обновляется на каждой свече и проходит всю историю) открывает позицию при |z|>=zScoreEntry: при z>0 покупает 0.05 спота BTC и продаёт 0.05 квартального контракта BTC; при z<0 продаёт спот и покупает квартальный контракт только при наличии свободного спота BTC (проверка баланса из исходника). Выход — когда долларовый спред возвращается в диапазон [mu±0.5σ]*spot (диапазон расширяется, чтобы сохранить minProfitSpaceRate относительно спреда входа), при общем стопе 1.5%, менее чем за 1 день до поставки (YYMMDD 16:00 UTC) или спустя 10 дней при прибыли. Тейк-профита нет.

Перенос следует циклу исходника для каждого контракта: updatePrices -> runStationarityChecks -> проверки закрытия -> проверки открытия; сохранены z-оценка (среднее и выборочное стандартное отклонение по всей истории), фильтр ADF, целевой диапазон с поправкой на минимальную прибыль, выходы по стопу, поставке и максимальному сроку удержания, фиксированный размер 0.05 BTC и проверки баланса спота (USDT>=amount*price+10 для покупок; свободный BTC для продаж, где BTC, задействованный в открытой положительной паре……Показать большеСвернуть

Перенос следует циклу исходника для каждого контракта: updatePrices -> runStationarityChecks -> проверки закрытия -> проверки открытия; сохранены z-оценка (среднее и выборочное стандартное отклонение по всей истории), фильтр ADF, целевой диапазон с поправкой на минимальную прибыль, выходы по стопу, поставке и максимальному сроку удержания, фиксированный размер 0.05 BTC и проверки баланса спота (USDT>=amount*price+10 для покупок; свободный BTC для продаж, где BTC, задействованный в открытой положительной паре контракта OTHER, считается недоступным — единственное намеренное отклонение, которое не даёт обратному арбитражу продать хедж другой пары). Адаптации платформы: (1) уровень свечей: повторная проверка средней цены по стакану из исходника, цены лимитных ордеров (limitOrderSpreadRatio, orderWaitTimeout), порядок открытия частей по отклонению, второе подтверждение стоп-лосса и допуск закрытия (spreadTolerance) здесь повторно читают одно и то же закрытие свечи 1m, поэтому это проходные параметры; обе части выставляются рыночными ордерами в один момент (лимитные ордера исходника исполнились бы как рыночные, то есть как тейкерские). Эти фиксированные параметры сохранены в конфигурации плана, но не действуют. (2) Откат: если после входа отсутствует фьючерсная часть, спотовая часть закрывается, а для пары вводится пауза 10 минут (source rollbackSpotOrder/addCooldown); opportunityLostCooldown не срабатывает, потому что в модели свечей нет повторной проверки устаревшего стакана. (3) Синхронизация: базовый барьер одинакового таймфрейма отключён (истёкшие контракты блокировали бы его навсегда); вместо этого контракт обновляется, только когда ts его свечи равен ts спотовой свечи, поэтому данные одной части не опережают другую. (4) Цепочка контрактов: конфигурация расширяет объявленный список (210326-250926) на 251226-270326, имеющиеся в каталоге с шагом 1 мин; без них в недавнем окне песочницы нет действующего контракта. Свечи после времени поставки игнорируются. (5) Для проверки маржи фьючерса перед сделкой используется плечо конфигурации 10 (marginLevel); спот без плеча (CASH). Вычисления на каждой свече имеют сложность O(contracts) с накопительными суммами; тест ADF OLS для каждого контракта выполняется не чаще раза в час. Примечание: одна спотовая позиция NETTING используется совместно максимум двумя парами, поэтому в журнале спота могут объединяться пересекающиеся пары. Обоснованное опасение: при 0.05 BTC на пару и стоимости тейкерских операций около 0.30% туда-обратно от номинала пары (0.10% спот + 0.05% фьючерс с каждой стороны) целевой minProfitSpaceRate 0.5% оставляет небольшую чистую маржу. Размер позиции задан автором и сохранён согласно инструкции.

Сводка по итогам

Мультиинструментальная стратегия со свечами по 1 мин, которая заново обнаруживает скользящую цепочку множества квартальных контрактов и периодически выполняет регрессии ADF, должна укладываться в лимит времени песочницы проверки. Например, перед оценкой можно ограничить число загружаемых дополнительных инструментов.

Запуск прерван на этапе проверки с причиной «verifying_stuck_3_timeouts» после 1 итерации: трижды истекло время ожидания, поэтому проверка бэктеста, оптимизация, анализ и оценка риска не выполнялись.

Точный перенос спотово-фьючерсного арбитража с поставкой ianzeng123 FMZ: торговля базисом BTC между BTCUSDT.BINANCE_SPOT и двумя ближайшими квартальными фьючерсами Binance USD-M на свечах по 1 мин. Хеджированные пары открываются, когда ежечасный тест ADF указывает на стационарность спреда и |z| >= 1.0 (на практике только длинная позиция по споту / короткая по фьючерсу, поскольку на счёте изначально только USDT).

Данных о результатах нет: отчёт о бэктесте пуст, отчёта об оптимизации нет, поэтому цифры доходности, коэффициента Шарпа и числа сделок не получены.

Анализ

交割合约现货套利策略测试版

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