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

Стратегии

BTC-ETH-SOL Дневная ротация относительной силы трёх активов, только длинные позиции

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

BtcEthSolDailyThreeWayRelativeStrengthRotationLong

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

Эта стратегия расширила только что добавленный шаблон BtcEthRelativeStrengthRotationLong на 2 активов до дневной ротации относительной силы между 3 BTC/ETH/SOL, удерживая крупнейший актив с восходящим трендом или оставаясь в кэше. В первых трёх итерациях возникали проблемы с инвариантом одной позиции: отдельные взаимно не зачитываемые ноги позволяли незавершённым заявкам накапливаться и раздувать экспозицию. Состояниевая машина с учётом исполнения заявок наконец исправила это, и запуск прошёл проверку бэктеста:……Показать большеСвернуть

Эта стратегия расширила только что добавленный шаблон BtcEthRelativeStrengthRotationLong на 2 активов до дневной ротации относительной силы между 3 BTC/ETH/SOL, удерживая крупнейший актив с восходящим трендом или оставаясь в кэше. В первых трёх итерациях возникали проблемы с инвариантом одной позиции: отдельные взаимно не зачитываемые ноги позволяли незавершённым заявкам накапливаться и раздувать экспозицию. Состояниевая машина с учётом исполнения заявок наконец исправила это, и запуск прошёл проверку бэктеста: 114 сделок, фактор прибыли 1.51 и положительная альфа внутри выборки. Но оптимизация показала переобучение и отсутствие обобщения: PBO 0.8744, провал отложенной выборки (коэффициент 0.55), отрицательное последнее окно OOS и четыре резких перепада чувствительности — и всё это при базовом коэффициенте Шарпа 0.10, заголовочная доходность 182x которого почти полностью отражала переоценку открытой позиции по рынку. Во второй и последней попытке оптимизации аналитик отказался от стратегии из-за структурной проблемы множественных проверок и провала отложенной выборки, а не стал подгонять шум; стратегия не дошла до проверки риска, бумажной торговли или реальной торговли.

Гипотеза

Лонговая стратегия ротации между несколькими инструментами (3 активов) на дневном таймфрейме для трёх наиболее ликвидных крупных криптоактивов — BTCUSDT.BINANCE (голубая фишка), ETHUSDT.BINANCE (L1-альтернатива), SOLUSDT.BINANCE (альткоин с высокой бетой). Механизм: на каждом дневном баре рассчитывается доходность за 20 дней для всех трёх активов, определяется актив с наилучшим результатом, который ALSO находится в собственном восходящем тренде (цена закрытия > 50-дневной SMA), и удерживается только он. Порог……Показать большеСвернуть

Лонговая стратегия ротации между несколькими инструментами (3 активов) на дневном таймфрейме для трёх наиболее ликвидных крупных криптоактивов — BTCUSDT.BINANCE (голубая фишка), ETHUSDT.BINANCE (L1-альтернатива), SOLUSDT.BINANCE (альткоин с высокой бетой). Механизм: на каждом дневном баре рассчитывается доходность за 20 дней для всех трёх активов, определяется актив с наилучшим результатом, который ALSO находится в собственном восходящем тренде (цена закрытия > 50-дневной SMA), и удерживается только он. Порог гистерезиса предотвращает частую смену позиции между активами с почти одинаковыми результатами. Если NONE из трёх активов проходят фильтр тренда, стратегия держит средства в наличных (сохраняет капитал во время синхронных медвежьих рынков криптоактивов). Напрямую развивает шаблон BTCETHRelativeStrengthRotationLong (только что добавленный в конвейер), расширяя сравнение с 2 до 3 вариантов и охватывая цикл ротации крупных активов FULL: BTC доминирует в периоды институционального бегства в качество, ETH лидирует в нарративных циклах DeFi/L1, а SOL — в фазах мемкоинов и альткоинов с высокой бетой. Охват 3 активов существенно расширяет возможности захвата лидерства по сравнению с версией на 2 активов. Закрывает дефицитную квоту на стратегии с несколькими инструментами (8.7% при целевом значении ≥15%). Используются ONLY дневные бары, чья работоспособность подтверждена: BtcSpotDrawdownAccumulationLong подтверждает BTC на дневных данных, EthDailyGoldenCrossMomentumLong подтверждает ETH на дневных данных, SolDailyEmaTrendContinuationLong подтверждает SOL на дневных данных. NO вторичных инструментов добавляются для фильтров тренда или источников сигналов — это напрямую позволяет избежать сценария сбоя Layer-3-audit_stale, из-за которого провалились два моих недавних предложения по межбиржевой торговле (зависевшие от дневных данных ADA или ETH 4H/дневных данных). Стратегия только лонговая, поскольку все три актива — крупные криптоактивы с документированным положительным долгосрочным дрейфом; эмпирические данные опровергают направленные стратегии только в шорт по крупным криптоактивам (-2.6 разрыв по коэффициенту Шарпа по сравнению с лонгом). Ограничение одной позицией (одновременно удерживается ровно ZERO или ONE позиция).

Исправление в итерации -3 устраняет именно указанную проблему: валовая экспозиция раздулась, потому что входные заявки отправлялись повторно, пока предыдущие ещё исполнялись (BTC/ETH/SOL — отдельные инструменты без взаимозачёта, поэтому positions_open отстаёт от исполнения на бар). Два изменения обеспечивают инвариант 0 или -1: (1) `_has_pending_orders()` блокирует действия с заявками ALL: если у любой ноги есть активная или исполняющаяся заявка, стратегия ничего не делает на этом баре, исключая повторную……Показать большеСвернуть

Исправление в итерации -3 устраняет именно указанную проблему: валовая экспозиция раздулась, потому что входные заявки отправлялись повторно, пока предыдущие ещё исполнялись (BTC/ETH/SOL — отдельные инструменты без взаимозачёта, поэтому positions_open отстаёт от исполнения на бар). Два изменения обеспечивают инвариант 0 или -1: (1) `_has_pending_orders()` блокирует действия с заявками ALL: если у любой ноги есть активная или исполняющаяся заявка, стратегия ничего не делает на этом баре, исключая повторную отправку до завершения исполнения и накопление позиций. (2) Сведение и вход разделены по барам: при ротации ноги вне целевого актива сводятся на этом баре, а новый вход откладывается до `not flattened`, пока выход не исполнен. Поэтому размер позиции (`equity * notional_pct`) всегда рассчитывается, когда FLAT, по освободившемуся после выхода капиталу, а не по завышенной нереализованной прибыли. `_held()`/`_current_qty()` безопасно считывают чистое количество позиции (сохраняя самокоррекцию при остаточной позиции в любой ноге). Вся остальная логика (ранжирование сигналов, гистерезис, фильтр тренда, непрерывный сигнал доходности лидера для верификатора, ручное управление ногами) без изменений, сохраняет ранее прошедшие проверку уровни. Результат: не более одной открытой ноги (номинал около 95%) на каждом баре, без физически невозможной доходности MTM.

Решительно провалены проверки на отложенной выборке и множественные сравнения при последней попытке оптимизации (2 из 2). walk_forward PBO=0.8744 — вероятность переобучения бэктеста 87% (deflated_sharpe нулевой, поэтому определяющими являются PBO + отложенная выборка + IS/OOS). Нетронутый хронологически упорядоченный HOLDOUT FAILED (коэффициент 0.55 < 0.70, holdout_sharpe 0.307 против WF-OOS 0.559), а самое недавнее окно OOS скользящей проверки отрицательное (-1.08); is_overfitted=false только благодаря слабому……Показать большеСвернуть

Решительно провалены проверки на отложенной выборке и множественные сравнения при последней попытке оптимизации (2 из 2). walk_forward PBO=0.8744 — вероятность переобучения бэктеста 87% (deflated_sharpe нулевой, поэтому определяющими являются PBO + отложенная выборка + IS/OOS). Нетронутый хронологически упорядоченный HOLDOUT FAILED (коэффициент 0.55 < 0.70, holdout_sharpe 0.307 против WF-OOS 0.559), а самое недавнее окно OOS скользящей проверки отрицательное (-1.08); is_overfitted=false только благодаря слабому коэффициенту IS/OOS 2.27, который отложенная выборка перевешивает. Анализ чувствительности FAILED при пороговых параметрах 4 (mom_lb, trend_sma, notional_pct, hysteresis_margin) — notional_pct меняет коэффициент Шарпа с 0.52 до -0.45 по всей сетке, поэтому устойчивой области для настройки нет. Заголовочный показатель базовой +18,224% — повод для осторожности, а не признак преимущества: коэффициент Шарпа составляет всего 0.10, end_unrealized_pct=1301% означает, что доходность почти целиком обусловлена переоценкой открытых позиций по рынку, а не реализованной прибылью; профиль держится на выбросах бычьего ралли (2021 +2329%, отдельные дни +315/+205/+149%; return_kurtosis 187, асимметрия 11.7), при этом максимальная просадка составляет 69.9%, 2026 YTD -13%, а скользящий коэффициент Шарпа неоднократно отрицателен вплоть до 2025. Не повторять итерацию: это последняя попытка, а определяющие провалы (PBO 0.87, провал на отложенной выборке, поверхность с порогом 4, заголовочный результат с артефактом MTM/выброса) носят структурный характер, поэтому третий перебор лучших вариантов из -225 лишь заново выберет шум. Дело не в revise_hypothesis: BTC/ETH/SOL Daily — валидные инструменты с богатыми данными, и родственная стратегия BtcEthRelativeStrengthRotationLong с ротацией между 2 инструментами только что дала результат — это провал из-за множественных сравнений/переобучения и проваленной отложенной выборки на хорошем наборе инструментов, а не доказанный механизм, оказавшийся на непригодной целевой области. FAILURE PATTERN: расширение ротации относительной силы между 2 инструментами до лонговой ротации 3 BTC/ETH/SOL Daily не NOT наследует потенциал для продвижения — оно демонстрирует признаки переобучения на поиске (PBO 0.874, провал коэффициента на отложенной выборке 0.55, пороговые скачки чувствительности 4, отрицательное самое недавнее окно OOS) на фоне базового коэффициента Шарпа 0.10, чье значение 182x total_return представляет собой артефакт 1301% нереализованной прибыли MTM/выброса бычьего рынка. Отсутствие флага переобучения у скользящей проверки и положительная альфа относительно корзины показывают устойчивость, а не статистическую значимость или обобщение на будущие данные, и не спасают стратегию, которая одновременно проваливает проверку на отложенной выборке и PBO.

Реализация

Дневная ротация только в длинную позицию между 3 активами на бессрочных контрактах Binance BTC/ETH/SOL. Каждый дневной бар ранжирует доходность трёх крупнейших активов за 20 дней и удерживает актив с лучшим результатом, который также находится выше 50-дневной SMA (иначе средства остаются в кэше); порог гистерезиса предотвращает частые смены актива. Состояниевая машина с учётом исполнения заявок удерживает ровно 0 или 1 позицию, не отправляет повторную заявку, пока предыдущая исполняется, и откладывает новые входы до полного исполнения предыдущего выхода.

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

Шарп
0,10
Общая доходность
18223,89%
Максимальная просадка
69,94%
Всего сделок
114
Доля прибыльных
41,2%
Профит-фактор
1,51

Инвариант одной позиции теперь соблюдается: реестр сделок показывает по одной ноге за раз, плечо около 0.95-1.0, накопления позиций нет (исправлен режим сбоя итерации -2).

Сделки соответствуют предполагаемому механизму: ротация только в длинные позиции между BTC/ETH/SOL с удержанием сильнейшего актива в восходящем тренде (SOL во время роста альткоинов, BTC во время резких взлётов; есть периоды в кэше).

Достаточная выборка: 114 реальных сделок примерно за 6 лет; profit_factor 1.51.

Положительное преимущество внутри выборки относительно равновзвешенной корзины: альфа 0.47, information_ratio 0.42.

Коэффициент Шарпа всего 0.10, а max_drawdown 69.9% — профиль с поправкой на риск слабый и намного ниже порогов продвижения.

Доходность крайне неравномерна и обеспечена выбросами (return_kurtosis 187, асимметрия 11.7) — несколько сделок (например, удержание SOL в течение 64 дней, +315%) определяют PnL, повышая риск переобучения при оптимизации.

Заголовочный показатель total_return (18223%) в значительной степени обусловлен нереализованной прибылью (end_unrealized_pct 1301%) — одна из постоянно удерживаемых ног остаётся открытой на конец бэктеста.

Направленная длинная бета (бета 0.55) — преимущество перед простым удержанием основных активов нужно подтвердить вне выборки, а не только альфой внутри выборки.

Анализ

Ротация между несколькими инструментами действительно отличается от других стратегий (закрывает пробел по стратегиям с несколькими инструментами), работает только в длинную позицию по ликвидным крупным активам, а состояниевая машина с учётом исполнения заявок, похоже, соблюдает инвариант одной позиции на 0 или -1 (avg_position_pct около 103%, позиции не накапливаются).

Положительная альфа (0.47) и information_ratio (0.42) относительно равновзвешенной корзины в базовом запуске; у walk-forward нет флага is_overfitted.

walk_forward PBO = 0.8744 — вероятность переобучения бэктеста 87%, значительно выше порога 0.5.

Отложенная выборка FAILED: коэффициент 0.55 < 0.70, holdout_sharpe 0.307 против WF-OOS 0.559 — нетронутое будущее окно не выдерживает проверку, а последнее окно WF-OOS отрицательно (-1.08).

Чувствительность FAILED с параметрами 4, создающими резкие перепады (mom_lb, trend_sma, notional_pct, hysteresis_margin) — notional_pct меняет коэффициент Шарпа с 0.52 на -0.45; устойчивой области для настройки нет.

Базовый total_return +18,224% — артефакт: коэффициент Шарпа всего 0.10, end_unrealized_pct 1301% (заголовочный показатель в основном отражает открытую позицию MTM, а не реализованный результат), return_kurtosis 187, асимметрия 11.7; прибыль обеспечена выбросами бычьего ралли (2021 +2329%; отдельные дни +315/+205/+149%).

max_drawdown 69.9% (CI 98.7-145%), 2026 YTD -13%, скользящий коэффициент Шарпа неоднократно отрицателен вплоть до 2025 — преимущество угасает, риск высок.

Бэктест недействителен: он содержит физически невозможные результаты для длинного портфеля с номиналом 0- или -1 на сумму 0.95x — однодневная доходность +304% (2021-03-14), +212% (2021-10-01), +175% (2021-05-08) и max_drawdown_ci_high в размере 154.7% (просадка >100% невозможна без плеча). Несмотря на итерацию-2 «автоматическое исправление с закрытием единственной позиции», валовая экспозиция явно выходит из-под контроля (коэффициент Шарпа -0.26 при доходности +28,316%, end_unrealized_pct 1892%, обороте 5629%,……Показать большеСвернуть

Бэктест недействителен: он содержит физически невозможные результаты для длинного портфеля с номиналом 0- или -1 на сумму 0.95x — однодневная доходность +304% (2021-03-14), +212% (2021-10-01), +175% (2021-05-08) и max_drawdown_ci_high в размере 154.7% (просадка >100% невозможна без плеча). Несмотря на итерацию-2 «автоматическое исправление с закрытием единственной позиции», валовая экспозиция явно выходит из-под контроля (коэффициент Шарпа -0.26 при доходности +28,316%, end_unrealized_pct 1892%, обороте 5629%, комиссии $1.5M при стартовом капитале $100k). NOT отправляйте результат повторно, пока не докажете, что в портфеле на каждом баре открыто не более ONE позиции (номинал около 95%). Что конкретно исправить и проверить: (1) Время исполнения внутри бара — вызовы _flatten(old_leg) и _enter(new_leg) выполняются на баре SAME; вероятно, рыночные ордера на выход не исполняются до расчёта размера и входа, а поскольку инструменты BTC/ETH/SOL являются SEPARATE (позиции не взаимозачитываются), если закрытие не исполнено, у вас остаются две ноги, которые затем обе удерживаются и накапливаются в последующих барах. Перед входом в целевую позицию убедитесь, что каждая нога действительно закрыта (в кэше нулевой открытый объём), либо отложите новый вход до следующего бара, после исполнения выхода. (2) Расчёт размера по завышенному капиталу — номинал = get_account_equity() * 0.95 использует капитал, включающий стремительно растущую нереализованную прибыль, что приводит к сверхлинейному наращиванию размера; рассмотрите использование стабильной базы капитала. (3) Добавьте в стратегию логирование TOTAL валовой долларовой экспозиции по всем трём инструментам на каждом баре и проверку, что она остаётся примерно равной одной позиции notional_pct; выполните повторный прогон и убедитесь, что однодневная доходность не превышает правдоподобное движение одного актива, а max_drawdown остаётся <100%, прежде чем имеет смысл оптимизировать стратегию.

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

Повышение ротации относительной силы с 2 активов до 3-активной версии BTC/ETH/SOL не означает, что стратегию можно продвигать: положительная альфа внутри выборки и отсутствие флага переобучения у walk-forward-метрики подтверждают согласованность, но не переносимость на будущие данные. Они не спасают стратегию с базовым коэффициентом Шарпа 0.10 и заголовочной доходностью, оказавшейся артефактом нереализованной MTM и бычьих выбросов: стратегия не проходит ни проверку на отложенной выборке, ни PBO.

Стратегия прошла этап проверки бэктеста («оптимизировать»), когда наконец выполнялся инвариант одной позиции, но после оптимизации аналитик проголосовал за «отказ»: стратегия провалила проверки на переобучение и переносимость на будущие данные — walk-forward PBO 0.8744, провал отложенной выборки (коэффициент 0.55, holdout_sharpe 0.307), отрицательное последнее окно OOS (-1.08) и 4 резких перепадов чувствительности без устойчивой области для настройки.

Лонговая стратегия ротации с 0 или -1 позициями между BTC, ETH и SOL на дневном таймфрейме: держать крупный актив с наибольшей доходностью относительной силы за 20 дней, если он также находится выше своего SMA за 50 дней (с порогом гистерезиса для предотвращения частой смены актива), либо держать денежные средства, если ни один актив не проходит трендовый фильтр.

Бэктест охватил 114 сделок примерно за 6 лет; фактор прибыли 1.51, положительная альфа внутри выборки (0.47) и информационный коэффициент (0.42) относительно равновзвешенной корзины. Однако качество с поправкой на риск низкое: коэффициент Шарпа 0.10, максимальная просадка 69.9%, а заголовочный показатель +18,224% в основном оказался артефактом переоценки по рынку (end_unrealized_pct 1301%, return_kurtosis 187, асимметрия 11.7).

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