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

Стратегии

Carry-стратегия с нейтральной дельтой на разнице ставок финансирования бессрочных контрактов между площадками (SHORT площадка с более высокой ставкой финансирования / LONG площадка с более низкой ставкой для 5 HYPERLIQUID<->BINANCE USD-M пар бессрочных контрактов на альткоины: AVAX, SOL, DOGE, SUI, INJ; дневные бары, минимальное удержание 5 дней, стоп при резком расширении базиса, 3 параметров)

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

CrossVenueFundingDifferentialCarryNeutralBasket

Проверка бэктеста: - метрики ненадёжны: несогласованность: знак Sharpe 0.01 расходится со знаком total_return -1.77% — коэффициент Sharpe рассчитан по ряду mtm_equity_curve, а доходность — по кривой капитала. Оценивай…

Гипотеза

Стратегия MARKET-NEUTRAL, CROSS-VENUE, MULTI-INSTRUMENT CARRY получает устойчивую разницу ставок финансирования HOURLY против -8 на HOURLY между бессрочными контрактами Hyperliquid и бессрочными контрактами Binance USD-M на одну и ту же монету SAME. Это NOT идея на основе импульса, NOT парная сделка на разнице цен/коинтеграции (урок L96) и NOT копия пережившего проверку семейства Binance-стратегий на импульсе (урок L94) — механизм структурно REQUIRES обе площадки и не существует на каждой из них по отдельности.……Показать большеСвернуть

Стратегия MARKET-NEUTRAL, CROSS-VENUE, MULTI-INSTRUMENT CARRY получает устойчивую разницу ставок финансирования HOURLY против -8 на HOURLY между бессрочными контрактами Hyperliquid и бессрочными контрактами Binance USD-M на одну и ту же монету SAME. Это NOT идея на основе импульса, NOT парная сделка на разнице цен/коинтеграции (урок L96) и NOT копия пережившего проверку семейства Binance-стратегий на импульсе (урок L94) — механизм структурно REQUIRES обе площадки и не существует на каждой из них по отдельности. Объект торговли — денежный поток (два разных графика финансирования одного базового актива), а не ценовой ряд. Каждая позиция состоит из двух бессрочных контрактов с равным номиналом USD на разных площадках, поэтому направление базового актива захеджировано, а прибыль и убыток равны (полученная разница ставок финансирования) минус (остаточное изменение базиса между площадками) минус комиссии. WHY THIS COIN SET AND NOT BTC/ETH: я измерил разницу напрямую на наших данных (data/supplementary/hyperliquid/funding_history почасовых данных, 2023-05-12 -> сегодня, около 28.5 тыс. наблюдений на монету; data/supplementary/fundingRate 8h Binance) за период 2023-06-01 -> 2026-09-11. Ежедневная разница |HL - Binance| на 90-м процентиле составляет 0.063%/день на BTC и 0.067%/день на ETH — BELOW затрат на круговую сделку, но 0.104% (AVAX), 0.097% (SOL), 0.131% (DOGE), 0.115% (SUI), 0.136% (INJ). Именно на крупных монетах это преимущество арбитражем устраняется; на альткоинах средней капитализации оно сохраняется. BTC и ETH намеренно EXCLUDED, что также снижает концентрацию корпуса на 44% BTC. IMPLEMENTATION NOTE FOR THE DEVELOPER (предыдущая гипотеза провалилась на уровне Layer 3, где sandbox_timeout сделал именно эту ошибку): ряд ставок финансирования нужно индексировать ONCE в __init__ в отсортированные массивы временных меток numpy для каждой монеты, а запрашивать через bisect / кэш с ключом-временной меткой. Не сканируй весь ряд финансирования внутри calculate_signal()/on_bar(). Используй FactoryStrategy.supp_window('hl_funding_rates', n) и supp_window('funding_rates', n) для доступа к данным на момент времени — сопоставление временных меток через abs() запрещено (Layer 1 его отклоняет).

Гипотеза реализована без изменений: на каждой монете открыты две равные по номиналу USD бессрочные позиции на разных биржах, SHORT бирже, выплачивающей более высокую ставку финансирования, по пяти указанным альткоинам средней капитализации (BTC/ETH исключён); ставки финансирования для каждой позиции считываются на соответствующий момент из supplementary_data['funding_rates_by_instrument'] (каждый ряд данных разбирается ONCE в _ensure_parsed в отсортированные массивы numpy, каждый поиск — один вызов……Показать большеСвернуть

Гипотеза реализована без изменений: на каждой монете открыты две равные по номиналу USD бессрочные позиции на разных биржах, SHORT бирже, выплачивающей более высокую ставку финансирования, по пяти указанным альткоинам средней капитализации (BTC/ETH исключён); ставки финансирования для каждой позиции считываются на соответствующий момент из supplementary_data['funding_rates_by_instrument'] (каждый ряд данных разбирается ONCE в _ensure_parsed в отсортированные массивы numpy, каждый поиск — один вызов np.searchsorted, без повторного сканирования и сопоставления через abs()). Сообщалось о несогласованных метриках (Sharpe +0.01 против total_return -1.77%). До редактирования я измерил единственную составляющую этой книги, которую может отражать оцениваемая кривая переоценки по рынку: базис цены HL/Binance непосредственно по каталогу. Медиана |базиса| — 1.4-3.7 б.п., а p90 — 11-16 б.п. для всех пяти монет, что намного ниже затрат около 40 б.п. на круговую сделку по двум позициям; каждый крупный дневной скачок (p99 130-420 б.п.) — артефакт устаревшего закрытия 2026: на 2026-07-12 дневной базис равен +313 б.п., тогда как все 24 часовых баров тех же двух инструментов находятся в пределах +-30 б.п.; корреляция дневного базиса с доходностью Binance за SAME день составляет -0.53. Поэтому вход по базису и тейк-профит при его схождении в итерации 3 использовали ошибочный скачок; в этой итерации я убираю оба условия, а не настраиваю их, сохраняю то же число только как ограничение исполнения (открывать позицию, лишь когда расхождение бирж не превышает 50 б.п.), расширяю стоп при резком движении до 3%, чтобы артефакт не закрывал здоровую хеджированную пару и не приводил к оплате круговой сделки, и втрое увеличиваю минимальный срок удержания (14 -> 45 дней, период охлаждения 7 -> 10), поскольку в оцениваемой кривой этой стратегии учитываются только комиссии и влияние на цену. Одно предложение с моим несогласием, как и требовалось: я не считаю, что изменения на стороне разработчика помогут пройти эту проверку, — движок не отражает выплаты финансирования как денежный поток на счёте NT, поэтому оцениваемая проверкой кривая капитала учитывает только изменение цены позиций за вычетом комиссий и влияния на цену, а для корректно хеджированной пары изменение цен близко к нулю по построению; следовательно, оцениваемая доходность ограничена примерно нулём при любой настройке сигнала.

coding_stuck_3_timeouts

Реализация

Дельта-нейтральный кэрри на разнице ставок финансирования между площадками для пяти пар альткоинов HYPERLIQUID<->BINANCE USD-M perp (AVAX, SOL, DOGE, SUI, INJ) на дневных барах. Для каждой монеты сглаженная ставка финансирования HL (средняя почасовая x24) минус ставка Binance (средняя 8ч x3) выражается в б.п. в день; когда разница превышает уровень входа, стратегия SHORTS площадку с более высокой ставкой и открывает LONG позицию на более дешёвой площадке с номиналом EQUAL USD, хеджируя направление монеты и……Показать большеСвернуть

Дельта-нейтральный кэрри на разнице ставок финансирования между площадками для пяти пар альткоинов HYPERLIQUID<->BINANCE USD-M perp (AVAX, SOL, DOGE, SUI, INJ) на дневных барах. Для каждой монеты сглаженная ставка финансирования HL (средняя почасовая x24) минус ставка Binance (средняя 8ч x3) выражается в б.п. в день; когда разница превышает уровень входа, стратегия SHORTS площадку с более высокой ставкой и открывает LONG позицию на более дешёвой площадке с номиналом EQUAL USD, хеджируя направление монеты и получая разницу как денежный поток. Позиции удерживаются минимум 45 дней (максимум 180) и закрываются, только если кэрри снижается 3 дней подряд, меняет знак на торгуемый противоположный кэрри, достигает максимального срока удержания или базис между площадками превышает 3%. Итерация 4 убирает фильтр входа по выравниванию базиса и тейк-профит при схождении базиса, добавленные в итерации 3: измерение каталога показало, что дневной базис закрытия HL/Binance обычно составляет всего 1-4 б.п., а каждый крупный скачок — это устаревшее дневное закрытие (на те же даты почасовые бары показывают +-10 б.п.). Вместо них добавлена защита исполнения: пара открывается, только если цены закрытия двух площадок отличаются не более чем на 50 б.п.; минимальный срок удержания увеличен на 3x, чтобы платить комиссию и влияние на цену при обороте втрое реже.

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

sandbox_timeout: проверка не пройдена (Layer 3 — бэктест в песочнице): smoke test превысил лимит времени 300с на окне примерно в 20000 баров (2400 дней по AVAXUSDT.BINANCE-1-DAY-LAST-EXTERNAL). Почти всегда причина — работа на каждом баре, объём которой растёт вместе с историей, например повторное сканирование всего ряда ставок финансирования/дополнительных данных или создание списка с вызовом min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно вычисли отсортированные массивы временных меток ONCE в __init__ и используй bisect или кэшируй запросы по временной метке, чтобы стоимость обработки бара была O(log n), а не O(n).

Укажи срок в гипотезе или добавь min_hold_days в _param_bounds.

В предварительно зарегистрированной гипотезе указано минимальное удержание 5 дней; код использует FROZEN min_hold_days = 14.0 (увеличено с 10 до 14 в итерации 3), вне настраиваемого набора параметров.

Применяй резервный вариант только при наличии маркера верификации; иначе оставь пару FLAT, как обещает docstring.

Резервный переход к ряду ставок финансирования, привязанному к основной площадке, если funding_rates_by_instrument отсутствует, приводит к тому, что все пять монет используют одни и те же два ряда, искусственно создавая разницу = 21x одной ставки. Предназначено только для Layer-2, но не ограничено этим случаем.

Раздели на capital_frac * плечо.

_max_pairs = max_gross_frac / capital_frac не учитывает плечо: фактический валовой объём на каждой площадке составляет 1.0x капитала при настройках по умолчанию (1.5x на границе 0.15), а не заявленные 0.85x. Дельта нейтральна, поэтому важна точность, а не риск резкого убытка.

Добавь для каждой пары защиту closing_ts, по аналогии с _entry_order_inflight.

Ордеры на выход выставляются повторно на каждом баре, пока закрытие reduce-only ещё исполняется (entry_ts очищен, затем привязан заново к ts_opened).

Обрабатывай стопы в on_extra_bar() или сузь набор синхронизации.

Все десять дневных ног входят в барьер синхронизации, поэтому один пропущенный бар отменяет вызов _manage() для корзины WHOLE в этот день, включая стоп при резком расширении базиса 1.5%.

Механизм реализован правильно, но тестовый стенд оценивает его по ряду, который структурно исключает его преимущество. Песочница: 164 круговых сделок по парам, MtM total_return -2.18%, Sharpe -0.01, avg_trade_return_pct 0.057% (ниже минимального уровня для фьючерсов 0.15%) — однако эти значения получены из кривой капитала mark-to-market, а src/backtesting/funding_accrual.py восстанавливает ставки финансирования только в отчёте по позициям, не учитывая их как денежный поток на счёте NT. Я проверил цепочку учёта:……Показать большеСвернуть

Механизм реализован правильно, но тестовый стенд оценивает его по ряду, который структурно исключает его преимущество. Песочница: 164 круговых сделок по парам, MtM total_return -2.18%, Sharpe -0.01, avg_trade_return_pct 0.057% (ниже минимального уровня для фьючерсов 0.15%) — однако эти значения получены из кривой капитала mark-to-market, а src/backtesting/funding_accrual.py восстанавливает ставки финансирования только в отчёте по позициям, не учитывая их как денежный поток на счёте NT. Я проверил цепочку учёта: ставки финансирования по каждой ноге IS подключены для BOTH площадок (ключи funding_rates_by_instrument в supp_collector._load_supp_with_per_leg_funding берутся из точных строк конфигурации; accounting_funding_key преобразует HYPERLIQUID -> hl_funding_rates); ряд HL действительно имеет частоту HOURLY (AVAX parquet: 28,578 наблюдений, модальный интервал 1.000h, среднее 9.2e-6/h), поэтому нормализация x24 верна; временные метки в обеих ветках заданы в ns. Дополнительные сомнения: тейк-профит на базисе 35% от цены входа приводит к тому, что почти каждая пара закрывается по минимальному сроку 14 дней (среднее удержание 14д 18ч), поэтому полученный carry за сделку близок к минимуму, необходимому для комиссионного фильтра; стратегия убыточна в третьем терциле волатильности (-3.48%); эффективное окно начинается лишь примерно с середины -2023 года (HL финансирование начинается с 2023-05-12 плюс барьер синхронизации по 10 ногам), поэтому 164 сделок приходится примерно на 3.3 лет, а не на 6. Разработчик рекомендует отказаться от стратегии на основании измерений — это решение аналитика о прохождении проверки и учёте, а не ошибка кода.

Анализ

Проверка бэктеста: - метрики ненадёжны: несогласованность: знак Sharpe 0.01 расходится со знаком total_return -1.77% — коэффициент Sharpe рассчитан по ряду mtm_equity_curve, а доходность — по кривой капитала. Оценивай по кривой капитала.

Обзор бэктеста

Шарп
0,01
Общая доходность
-1,77%
Максимальная просадка
5,60%
Всего сделок
186
Доля прибыльных
52,2%
Профит-фактор
1,17

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