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

Стратегии

Ротация с относительным импульсом ETH против BTC, долларово-нейтральная длинная/короткая стратегия (два инструмента: бессрочные контракты ETHUSDT.BINANCE + BTCUSDT.BINANCE, дневные бары — длинная позиция по более сильному активу / короткая по более слабому на основании импульса соотношения ETH/BTC MOMENTUM, с фильтром по мёртвой зоне, чистый OHLCV, 2 параметр)

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

EthBtcRelativeMomentumRotationLS

Точно реализует гипотезу: долларово-нейтральная ротация на импульсе соотношения ETH/BTC, нейтральная к рынку (benchmark_meaningful=false, поэтому стратегия «купи и держи» обоснованно не служит эталоном)

Гипотеза

MARKET-NEUTRAL (долларово-нейтральная) LONG-SHORT, двухинструментальная стратегия относительного импульса, основанная исключительно на OHLCV, которая ротирует между двумя наиболее ликвидными криптоактивами в зависимости от MOMENTUM отношения ETH/BTC: когда ETH демонстрирует более сильный тренд, чем BTC, стратегия открывает долларово-нейтральный лонг ETH / шорт BTC и переключается на лонг BTC / шорт ETH, когда лидирует BTC. Стратегия разработана с учётом жёстких ограничений, выявленных в ходе сессии. (1) PURE……Показать большеСвернуть

MARKET-NEUTRAL (долларово-нейтральная) LONG-SHORT, двухинструментальная стратегия относительного импульса, основанная исключительно на OHLCV, которая ротирует между двумя наиболее ликвидными криптоактивами в зависимости от MOMENTUM отношения ETH/BTC: когда ETH демонстрирует более сильный тренд, чем BTC, стратегия открывает долларово-нейтральный лонг ETH / шорт BTC и переключается на лонг BTC / шорт ETH, когда лидирует BTC. Стратегия разработана с учётом жёстких ограничений, выявленных в ходе сессии. (1) PURE OHLCV — после того как моя идея с потоком тейкерских ордеров BTC провалилась («невозможно протестировать, ограниченный охват»: дополнительных потоков слишком мало для измеримой выборки), а OI/премия/фандинг, вероятно, имеют ту же проблему, здесь используются только два наиболее полных ценовых ряда в каталоге, поэтому измеримость и охват данных не вызывают затруднений. (2) Это действительно DIFFERENT семейство стратегий, отличающееся от всего моего ожидающего рассмотрения списка, состоящего из направленных стратегий BTC на одном инструменте: рыночно-нейтральная относительная стоимость, закрывающая недополненную до целевого уровня корзину LONG-SHORT (13.3%), а также корзины рыночно-нейтральных и парных стратегий; при этом хеджируется криптовалютная бета, из-за которой направленная торговля отдельными активами столь нестабильна. (3) Здесь торгуется знак MOMENTUM, а не возврат к среднему — стратегия возврата отношения ETH/BTC к среднему провалилась из-за «fee_edge/других причин», поскольку шла против структурного дрейфа отношения; эта стратегия торгует WITH этот дрейф (режимы сезона альткоинов и сезона BTC), захватывая крупные многонедельные тренды отношения (~10-30%), а не незначительные касания среднего, что позволяет покрывать комиссии при долларовой нейтральности. (4) Это NOT ротация 8 основных активов в поперечном сечении, запрещённая L32: конструкция минимально ограничена 2 активами и основана на отдельной гипотезе. (5) DELIBERATELY 2-PARAMETER (период расчёта импульса и мёртвая зона), чтобы избежать переобучения, погубившего более крупные конструкции. Дневные бары и мёртвая зона удерживают оборот достаточно низким для покрытия комиссий и достаточно высоким для измеримости (~40-80 ротаций за многолетнюю историю).

QA попросил меня проверить хвостовые риски. Проверка выявила один реальный дефект и один артефакт измерения, поэтому я честно сообщаю об обоих. Артефакт: сообщаемые экстремумы на сделку — PER LEG, а для долларово-нейтральной пары на каждой ноге преобладает рыночная бета, которая компенсируется парной ногой. Если короткая нога на $35k по BTC удерживается во время ралли примерно на 45% BTC, на ней фиксируется около -$16k, а на парной длинной ноге по ETH — около +$12k: PAIR потерял примерно $4k, то есть около……Показать большеСвернуть

QA попросил меня проверить хвостовые риски. Проверка выявила один реальный дефект и один артефакт измерения, поэтому я честно сообщаю об обоих. Артефакт: сообщаемые экстремумы на сделку — PER LEG, а для долларово-нейтральной пары на каждой ноге преобладает рыночная бета, которая компенсируется парной ногой. Если короткая нога на $35k по BTC удерживается во время ралли примерно на 45% BTC, на ней фиксируется около -$16k, а на парной длинной ноге по ETH — около +$12k: PAIR потерял примерно $4k, то есть около номинального лимита стопа по соотношению, поэтому largest_loss -$16,261 не свидетельствует о том, что стоп не сработал. Та же оговорка относится к «инвертированному RR» и к асимметрии/эксцессу: статистика отдельных ног хеджированной пары измеряет бету, а не преимущество спреда. Я не оспариваю вердикт — profit_factor 0.737 и total_return -17.6% рассчитаны на уровне пары и действительно отрицательны, — только арифметику хвостовых значений в выводе 2. Реальный дефект: стоп по соотношению проверялся только относительно CLOSES, поэтому на дневных барах относительное движение, которое внутри дня пересекало лимит, оставалось без реакции до закрытия следующего бара. Теперь стоп также проверяет наихудшее внутрибараное соотношение только что завершившегося бара (ETH минимум / BTC максимум для длинной позиции, ETH максимум / BTC минимум для короткой) и закрывает позицию по цене закрытия этого бара. Это намеренно консервативный подход, а не использование заглядывания вперёд: к моменту проверки бар завершён, а исполнение происходит по цене закрытия — худшей, чем цена реального ожидающего стопа, — поэтому бэктест не приукрашивается. Я также вдвое уменьшил лимит: stop_ratio_pct 0.12 -> 0.06. Это единственное изменение, которое воздействует на измеренную асимметрию выплат (QA: «ложные срабатывания и резкий разворот»), не затрагивая сигнал: максимальная неблагоприятная величина движения за ротацию снижается примерно до 6% номинала одной ноги, примерно до 2% капитала. Оба значения — константы LOCKED, поэтому настраиваемая поверхность по-прежнему содержит ровно 2 параметра. Всё, что подтвердили предыдущие уровни, осталось без изменений: те же импорты, тот же класс, то же выравнивание по ключу дня, сигнальный ряд по-прежнему строится только по ценам закрытия (новые ряды максимумов/минимумов используются исключительно для ограничения риска и никогда не участвуют в сигнале), те же пороги входа и выход при пересечении нуля, та же идемпотентная сверка хеджа без переопределения on_bar и без super() без аргументов на любом пути обработки событий, тот же сайзинг. Честная оценка и моя рекомендация Аналитику: эти изменения ограничивают убыток за ротацию, но не создают преимущества. Основной вывод QA касается ENTRY, а вход и есть гипотеза. Если более узкий стоп с учётом внутрибараных движений не поднимет profit_factor выше 1, семейство стратегий на импульсе соотношения следует отбросить, а не дорабатывать в четвёртый раз, поскольку оставшиеся параметры настройки (период ретроспективного анализа, мёртвая зона) — именно та поверхность подгонки кривой, которой призвана избежать конструкция с 2 параметрами.

Отрицательное математическое ожидание на надёжной выборке из 582 сделок за 6.7 лет: profit_factor 0.9999 (валовой результат на уровне нуля, чистого преимущества нет), avg_trade_pnl_usd -0.137, CAGR -1.22%, recovery_factor отрицательно. Показатель +7.83% total_return полностью нереализован (end_unrealized_pct 7.91) — это незакрытая позиция на конец периода, а не реализованное преимущество. Коэффициент Шарпа 0.26 с CI [-0.48, 1.01] охватывает ноль, max_drawdown 56.6%, а impact_cost_pct 101% (ёмкость около $98k) означает, что одного рыночного воздействия достаточно, чтобы поглотить всё преимущество. Импульс относительной силы ETH/BTC недостаточно устойчив, чтобы приносить прибыль после издержек при долларово-нейтральной торговле; это вывод о входе, который IS гипотезу. Оптимизация параметров 2 (периода ретроспективного анализа и мёртвой зоны) не превратит результат на уровне нуля до вычета издержек/PF<1 в прибыльный. Не стоит тратить 2 часов на оптимизацию. abandon_class=negative_expectancy.

Реализация

Долларово-нейтральная ротация лонг/шорт между ETHUSDT.BINANCE и BTCUSDT.BINANCE бессрочными контрактами USD-M на барах 1-DAY, основанная на импульсе отношения ETH/BTC. Сигнал (без изменений) — изменение логарифма отношения за mom_lookback дней, делённое на собственную дневную волатильность отношения, умноженную на sqrt(горизонт): безразмерный z-показатель в естественных единицах на каждом баре, рассчитанный только по ценам закрытия. При значении не ниже +мертвой зоны стратегия открывает лонг ETH / шорт BTC в……Показать большеСвернуть

Долларово-нейтральная ротация лонг/шорт между ETHUSDT.BINANCE и BTCUSDT.BINANCE бессрочными контрактами USD-M на барах 1-DAY, основанная на импульсе отношения ETH/BTC. Сигнал (без изменений) — изменение логарифма отношения за mom_lookback дней, делённое на собственную дневную волатильность отношения, умноженную на sqrt(горизонт): безразмерный z-показатель в естественных единицах на каждом баре, рассчитанный только по ценам закрытия. При значении не ниже +мертвой зоны стратегия открывает лонг ETH / шорт BTC в равных долларовых объёмах; при значении не выше -мертвой зоны — шорт ETH / лонг BTC; позиция закрывается, когда сигнал пересекает ноль в обратном направлении или когда отношение изменилось на stop_ratio_pct (теперь 6%) против позиции с момента входа. Проверка проводится и по текущему закрытию AND, и по наихудшему внутрибараному значению отношения завершённого бара (ETH минимум против BTC максимума для лонга, ETH максимум против BTC минимума для шорта), поэтому относительный разворот, пробивающий лимит внутри дня, учитывается на том же баре, а не на день позже. Цены ETH и BTC хранятся в отдельных словарях с ключом — индекс дня UTC, а ряд отношения заново строится по пересечению дней, присутствующих в обоих рядах. Объём ноги BTC подгоняется в долларах к ноге ETH, а согласование идемпотентно выполняется из обоих хуков; хеджирующая нога никогда не удерживается отдельно или на той же стороне. Номинальный объём каждой ноги составляет 35% капитала при плече 1.0. Ровно 2 настраиваемых параметра: mom_lookback и мёртвая зона.

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

CLEAN RESTART 2026-09-04 — история вердиктов и записи обучения этого запуска были удалены, после чего он был перезапущен с этапа проверки. Предыдущий отказ был вызван конвейером, а не рынком: стенд Layer-2 неверно привязывал вспомогательные методы @staticmethod (исправлено), QA выносил окончательные вердикты о производительности по неоптимизированному дымовому тесту (это убрано — теперь QA оценивает только корректность), а тайм-ауты песочницы возникали из-за нехватки слотов для бэктестов (исправлено). Гипотеза и код стратегии не изменились. Оцените код по существу; производительность будет определена позднее полным бэктестом и оптимизатором.

Околонулевое/отрицательное преимущество на измеримой выборке за всю историю (550 сделок, PF 0.965, -22.4%, avg_trade_return_pct +0.061% ниже комиссии за две ноги) — низкодисперсная пара ETH/BTC, которую сама гипотеза отметила как более слабую, чем SOL/ETH. Реализация была корректной, поэтому вывод о наличии преимущества остаётся за аналитиком. Отказ на этапе обзора бэктеста согласно предварительно зарегистрированному условию разработчика (PF не преодолел 1); не оптимизировать.

Максимальная просадка 57.8% (CI до 83%, длительность 1894 дней) по портфелю, номинально нейтральному к рынку: долларовая нейтральность есть только при входе, а 70% совокупная экспозиция увеличивает убытки из-за отсутствия преимущества при устойчивых трендах соотношения ETH/BTC между стопами 6%. Это не ошибка хеджирования — сверка равных номиналов корректна, — но профиль риска, о котором следует сообщить директору по рискам.

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

Шарп
0,26
Общая доходность
7,83%
Максимальная просадка
56,58%
Всего сделок
582
Доля прибыльных
45,9%
Профит-фактор
1,00

Точно реализует гипотезу: долларово-нейтральная ротация на импульсе соотношения ETH/BTC, нейтральная к рынку (benchmark_meaningful=false, поэтому стратегия «купи и держи» обоснованно не служит эталоном)

Надёжная, измеримая выборка: 582 парных ротаций за 6.7 лет, metrics_reliable=true, конвейер входа работает штатно (291 длинных / 291 коротких, пропусков нет)

Подлинно 2-параметрическая поверхность с низким переобучением

profit_factor 0.9999 — валовой результат на уровне нуля, настраивать не на что: чистого преимущества нет

Отрицательное математическое ожидание на надёжной выборке: avg_trade_pnl_usd -0.137, CAGR -1.22%, recovery_factor отрицательно

Показатель +7.83% полностью нереализован (end_unrealized_pct 7.91) — незакрытая конечная позиция, а не реализованное преимущество

max_drawdown 56.6% (CI до 80%); коэффициент Шарпа 0.26 с CI [-0.48, 1.01] охватывает ноль — неотличим от отсутствия навыка

impact_cost_pct 101% с capacity_usd ~$98k — одно только рыночное воздействие поглощает всё преимущество; жизнеспособно только в игрушечных масштабах

regime_performance «нормальные» терцильные доходности -56% на уровне 60% DD — отсутствие структурного преимущества относительной силы

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

Проверка не пройдена (уровень 2 — синтетические сценарии): Использованные параметры: ['deadband', 'leg_frac', 'max_days', 'vol_window', 'mom_lookback', 'size_precision', 'stop_ratio_pct', 'min_notional_btc', 'min_notional_eth'] Проверьте, что __init__ задает все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: super(type, obj): obj must be an instance or subtype of type (временная метка бара: 1735689600000) - steady_downtrend: TypeError: super(type, obj): obj must be an instance or subtype of type (временная метка бара: 1735689600000) - flat_ranging: TypeError: super(type, obj): obj must be an instance or subtype of type (временная метка бара: 1735689600000) - volatility_spike: TypeError: super(type, obj): obj must be an instance or subtype of type (временная метка бара: 1735689600000) - zero_volume: TypeError: super(type, obj): obj must be an instance or subtype of type (временная метка бара: 1735689600000) - price_gap: TypeError: super(type, obj): obj must be an instance or subtype of type (временная метка бара: 1735689600000)

Верификация не пройдена (Уровень 4 — проверка QA): - DECISIVELY NET-NEGATIVE -- у ротации по моментуму коэффициента ETH/BTC нет преимущества, а тезис «торговать по направлению дрейфа» опровергнут. На измеримой выборке в 28 сделок / 362 дней (metrics_reliable=true): profit_factor 0.737, Sharpe -0.473 (CI [-1.98, 1.18]), total_return -17.6%, математическое ожидание -$637/сделку, win_rate 0.464 с INVERTED RR (avg_win $3837 < avg_loss $4514). Обратите внимание, что avg_trade_return_pct показывает +0.161%, но здесь……Показать большеСвернуть

Верификация не пройдена (Уровень 4 — проверка QA): - DECISIVELY NET-NEGATIVE -- у ротации по моментуму коэффициента ETH/BTC нет преимущества, а тезис «торговать по направлению дрейфа» опровергнут. На измеримой выборке в 28 сделок / 362 дней (metrics_reliable=true): profit_factor 0.737, Sharpe -0.473 (CI [-1.98, 1.18]), total_return -17.6%, математическое ожидание -$637/сделку, win_rate 0.464 с INVERTED RR (avg_win $3837 < avg_loss $4514). Обратите внимание, что avg_trade_return_pct показывает +0.161%, но здесь это MISLEADING -- долларовый P&L явно отрицательный (avg_trade_pnl_usd -$637, PF 0.737, всего -17.6%), поскольку величины убытков перевешивают выигрыши: средний %-от-номинала смещён в положительную сторону множеством мелких выигрышей, тогда как жирный левый хвост (return_skew -0.95, эксцесс 11.3, largest_loss -$16,261 против largest_win $9,880) уводит долларовый результат глубоко в минус. Таким образом, это NOT преодолевает порог комиссий в каком-либо экономически значимом смысле -- это чистый проигрыш. Моментум относительной силы коэффициента ETH/BTC не сохраняется достаточно долго для прибыли при долларовой нейтральности: коэффициент резко колеблется и сильно разворачивается (этот хвост в -$16k представляет собой разворот относительного тренда, пробивающий стоп по коэффициенту), поэтому стратегия «покупки сильнейшего / продажи слабейшего» попадает в ловушку -- покупая на пике коэффициента / продавая на его дне. В форме моментума по коэффициенту это зеркальное отражение неудач моментума по отдельным именам в ходе сессии -- моментум по спреду ETH/BTC не более торгуем, чем моментум по самим альткоинам. - RATIO STOP IS NOT CONTAINING THE TAIL -- проверить. Зафиксированный stop_ratio_pct составляет 0.12 (неблагоприятное движение коэффициента ~12%, ~8.4% капитала при 70% брутто), но largest_loss равно -$16,261 -- примерно вдвое больше этого лимита. На барах DAILY стоп по коэффициенту проверяется только на закрытии каждого бара, поэтому разворот относительного тренда, который гэпом уводит коэффициент далеко за 12% внутри бара, реализует гораздо больший убыток, чем номинальный лимит; в сочетании с max_drawdown 26.62 (CI [12.39, 45.03]) и cvar_95 3.60 долларово-нейтральная конструкция работает материально горячее, чем заявлено в её дизайне как «ограниченная ~8% на ротацию». Это не взрыв (кредитное плечо 1.0, ликвидация=false), но нарратив о сдерживании риска не подтверждается на реализованном хвосте.

Проверка не пройдена (уровень 4 — проверка QA): - THE RISK-CONTAINMENT FIX MADE IT DECISIVELY WORSE — подтверждают отсутствие преимущества, и заранее зафиксированный разработчиком критерий отказа выполнен. Ужесточение стопа (12% -> лимит 6%) и добавление проверки с учётом внутрибараных движений не подняли profit_factor выше 1; результат стал DEEPLY отрицательным: total_return -17.6% (итерация 2) -> -30.2% (итерация 3), profit_factor 0.737 -> 0.674 (хуже), коэффициент Шарпа -0.972 (CI [-2.47, 0.67]), win_rate……Показать большеСвернуть

Проверка не пройдена (уровень 4 — проверка QA): - THE RISK-CONTAINMENT FIX MADE IT DECISIVELY WORSE — подтверждают отсутствие преимущества, и заранее зафиксированный разработчиком критерий отказа выполнен. Ужесточение стопа (12% -> лимит 6%) и добавление проверки с учётом внутрибараных движений не подняли profit_factor выше 1; результат стал DEEPLY отрицательным: total_return -17.6% (итерация 2) -> -30.2% (итерация 3), profit_factor 0.737 -> 0.674 (хуже), коэффициент Шарпа -0.972 (CI [-2.47, 0.67]), win_rate 0.443, avg_trade_return_pct -0.607%, а число сделок почти утроилось (28 -> 70). Это решающий признак: ужесточение стопа для сигнала без направленного преимущества лишь добавляет WHIPSAW — теперь стратегия закрывает позиции по стопу, получая более частые небольшие убытки (показатели return_skew -2.62 / эксцесса 26.6 и max_drawdown 37.97 подтверждают, что хвостовой риск был NOT ограничен, а убытки умножились из-за частых сделок). По всем измерениям механизм находится на уровне безубыточности или ниже, а знак результата меняется вместе с парой AND при изменении стопа на той же паре: ETH/BTC PF 0.737 -> 0.674, SOL/ETH PF 1.06 -> 0.986. Это убедительное свидетельство сигнала с почти нулевым преимуществом: импульс относительной силы в криптовалютном отношении не сохраняется. Разработчик заранее обозначил критерий проверки: «если более узкий стоп с учётом внутрибараных движений не поднимет profit_factor выше 1, от семейства стратегий импульса отношения следует ABANDONED отказаться, а не проводить четвёртую итерацию». PF — 0.674; критерий выполнен. - IMPLAUSIBLE RISK-METRIC UNITS — подтверждены (без изменений, на стороне движка). max_drawdown 37.97 (CI [14.19, 62.09]), var_95 2.61, cvar_95 4.02 превышают 100% — это артефакт нормализации, общий для всей сессии. Стоит зафиксировать анализ хвостового риска разработчика по отдельной ноге и паре CORRECT: показатели largest_loss отдельной ноги долларово-нейтральной пары определяются преимущественно рыночной бетой, которая компенсируется между ногами; поэтому экстремальные значения для каждой ноги отражают бету, а не преимущество спреда. Значимы показатели на уровне пары (PF 0.674, total_return -30.2%), и они однозначно отрицательны.

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