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

Стратегии

BTC→SOL Внутридневной импульс догоняющего движения с лидером и ведомым, лонг-шорт (два инструмента, бессрочные контракты BINANCE USD-M, бары 15 мин, только OHLCV; торгуем SOL в направлении значимого импульса BTC, нормированного по волатильности, когда SOL ещё не переоценил движение, ожидаемое по бете (NOT); выход при догоняющем движении, по времени или стопу ATR; 3 параметров)

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

BtcSolLeadLagCatchUpMomentumLS

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

BtcSolLeadLagCatchUpMomentumLS делала ставку на преимущество микроструктуры крипторынка: BTC опережает информационный поток, а SOL с более высокой бетой с задержкой переоценивает тот же макроимпульс, поэтому стратегия открывала позицию SOL в направлении BTC, когда SOL захватывал меньше ожидаемого по бете совместного движения. Сделки соответствовали задумке (SOL-только, лонг и шорт, удержание около 3 ч), но результат дал ясный вердикт по гипотезе, а не выявил ошибку: стратегия теряла деньги все семь лет и завершила тест с результатом -95.3%, просадкой 95.3%, коэффициентом Шарпа -0.95, фактором прибыли 0.55 и отрицательным матожиданием на сделку из-за перевёрнутого соотношения avg_win $350 < avg_loss $444 при доле прибыльных сделок 41%. Аналитик отказался от неё на этапе проверки бэктеста: SOL слишком быстро переоценивает движение BTC, чтобы получить на нём прибыль, а настройка трёх параметров не могла изменить отрицательное матожидание во всех рыночных режимах. Стратегия не дошла до оптимизации, проверки риска или бумажной торговли.

Гипотеза

LONG-SHORT, внутридневной импульс LEAD-LAG между двумя инструментами на бессрочных контрактах Binance USD-M: BTCUSDT.BINANCE — лидер информационного потока LEADER (только источник сигнала, не торгуется), а SOLUSDT.BINANCE — ведомый FOLLOWER, которым мы торгуем. Это NOT кросс-секционного ранжирования и ротации (исчерпанный класс L32), возврата к среднему соотношения NOT (затухание ETH/BTC погубило «прочие»), финансирования, опционов и ликвидаций NOT (все не сработали), а также возврата к среднему для одной монеты……Показать большеСвернуть

LONG-SHORT, внутридневной импульс LEAD-LAG между двумя инструментами на бессрочных контрактах Binance USD-M: BTCUSDT.BINANCE — лидер информационного потока LEADER (только источник сигнала, не торгуется), а SOLUSDT.BINANCE — ведомый FOLLOWER, которым мы торгуем. Это NOT кросс-секционного ранжирования и ротации (исчерпанный класс L32), возврата к среднему соотношения NOT (затухание ETH/BTC погубило «прочие»), финансирования, опционов и ликвидаций NOT (все не сработали), а также возврата к среднему для одной монеты по NOT/Кельтнеру VWAP (переполненный подход). Механизм основан на микроструктуре крипторынка: BTC первым отражает информационный поток рынка, а альткоины L1 с более высокой бетой переоценивают тот же макроимпульс с задержкой из-за фрагментированной ликвидности и более медленной реакции участников. Когда BTC совершает за короткое окно большое движение с нормировкой по волатильности, а SOL учитывает лишь часть совместного движения, ожидаемого по бете, мы открываем SOL в направлении BTC и извлекаем выгоду из догоняющего движения. Только OHLCV на двух ликвидных крупных активах (для обоих есть полная история каталога за несколько лет — риска data_unavailable нет; no_supplementary_data — лучшее сохранившееся семейство тегов с показателем 4%). Стратегия намеренно охватывает сразу три недостаточно представленные категории: пары (13.6%), направление long_short (13.8%) и горизонт short_1m_15m (8.8%). Настраиваются только параметры 3 (BTC порог импульса z, коэффициент догоняющего движения, максимальное удержание в барах), чтобы избежать провала из-за переобучения 248; бета оценивается на скользящем окне, а не подбирается.

Итерация 3 направлена на устранение каждого из трёх дефектов Layer-4 QA с помощью точечных изменений; расчёт сигнала (скользящая бета, импульсный z-показатель BTC, остаток, нормализованный по волатильности) и чистые импорты не изменены, поэтому Layers 1-3 остаются в рабочем состоянии (локальная проверка: статический анализ и все шесть синтетических сценариев пройдены). (1) Ликвидация счёта / спираль смерти из-за кредитного плеча: плечо снижено с 3.0 до 1.0, а валовая экспозиция жёстко ограничена на уровне……Показать большеСвернуть

Итерация 3 направлена на устранение каждого из трёх дефектов Layer-4 QA с помощью точечных изменений; расчёт сигнала (скользящая бета, импульсный z-показатель BTC, остаток, нормализованный по волатильности) и чистые импорты не изменены, поэтому Layers 1-3 остаются в рабочем состоянии (локальная проверка: статический анализ и все шесть синтетических сценариев пройдены). (1) Ликвидация счёта / спираль смерти из-за кредитного плеча: плечо снижено с 3.0 до 1.0, а валовая экспозиция жёстко ограничена на уровне gross_cap=0.5 x номинала капитала (max_notional = капитал*min(плечо,gross_cap)); показатель ATR, используемый для расчёта размера позиции, теперь равен FLOORED при min_atr_frac (0.4%) цены, что устраняет взрывной рост размера позиции при низкой волатильности, из-за которого достигался лимит номинала и раздувались позиции с фиксированным номиналом по мере сокращения капитала; риск на сделку снижен с 2.0% до 0.75%. При одной позиции за раз, ограниченной 0.5x капитала, и без кредитного плеча обнуление счёта больше невозможно. (2) Преимущество ниже порога комиссий и оборот 1123x: входной фильтр теперь учитывает комиссии и требует, чтобы ожидаемое ещё не захваченное движение |остаток| составляло не менее min_catchup_frac (0.4%, что с запасом превышает примерно 0.10% за полный цикл с учётом рыночного воздействия); порог импульса BTC повышен (btc_z 1.5->2.0), фильтр захвата ужесточён (0.5->0.35), а блокировка повторного входа cooldown_bars=4 вместе с увеличенным max_hold (12->16) сокращают частые сделки и отбирают более крупные компенсирующие движения на сделку. (3) Дрейфующий выход при компенсационном движении: выход при пересечении остатком нуля (которое происходило по мере снижения скользящего ожидаемого значения BTC в скользящем окне, а не из-за компенсационного движения SOL) REMOVED; теперь выходы основаны исключительно на снимке состояния: зафиксированное при входе значение ATR TP/стоп и временной стоп. Поэтому цель остаётся неизменной в течение всего срока сделки, что устраняет преждевременные и хаотичные выходы. Это также позволяет прибыльным позициям дойти до 2.5-ATR TP, вместо того чтобы фиксировать крошечную прибыль, устраняя перевёрнутое соотношение риска и доходности. Кредитное плечо=1.0, поэтому условие «плечо задано, но не используется» неприменимо.

Отрицательное преимущество во всех режимах на убедительной выборке. Стратегия догоняющего импульса с лагом BTC->SOL убыточна во все 7 лет (2020 -27.4%, 2021 -32.3%, 2022 -21.1%, 2023 -44.9%, 2024 -34.3%, 2025 -37.6%, 2026 -38.0%); итог total_return -95.3%, просадка max_drawdown 95.3% (CI 74.9%-100%) — превышен порог окончательного отказа >50%. На выборке из 803 сделок: profit_factor 0.55, коэффициент Шарпа -0.95, доверительный интервал CI [-1.89, -0.44] полностью ниже нуля, коэффициент Сортино -0.65, PSR 0.0,……Показать большеСвернуть

Отрицательное преимущество во всех режимах на убедительной выборке. Стратегия догоняющего импульса с лагом BTC->SOL убыточна во все 7 лет (2020 -27.4%, 2021 -32.3%, 2022 -21.1%, 2023 -44.9%, 2024 -34.3%, 2025 -37.6%, 2026 -38.0%); итог total_return -95.3%, просадка max_drawdown 95.3% (CI 74.9%-100%) — превышен порог окончательного отказа >50%. На выборке из 803 сделок: profit_factor 0.55, коэффициент Шарпа -0.95, доверительный интервал CI [-1.89, -0.44] полностью ниже нуля, коэффициент Сортино -0.65, PSR 0.0, avg_trade_return_pct -0.35% (отрицательное, ниже уровня комиссий), матожидание -$117.78/сделку. Гипотеза о догоняющем движении опровергается собственными данными: avg_win $350 меньше, чем avg_loss $444 (соотношение доходности к риску перевёрнуто), при доле прибыльных сделок 41%: к моменту срабатывания порога z в 4 баров SOL уже переоценил импульс BTC, поэтому стратегия гонится за исчерпанными движениями. Это класс импульсных стратегий с лагом только на OHLCV, где не осталось ни одной стратегии; настройка btc_z/catch_up_ratio/max_hold_bars не изменит отрицательное матожидание, сохраняющееся каждый год. Догоняющее движение после лага на ликвидных крупных инструментах — хорошо изученная, структурно несостоятельная идея, поэтому не подходят ни дальнейшие итерации, ни revise_hypothesis.

Реализация

Внутридневной импульс догоняющего движения с лагом BTC->SOL по двум инструментам на бессрочных контрактах Binance USD-M (бары по 15 мин, только OHLCV, лонг и шорт). BTCUSDT.BINANCE — лидер (только источник сигнала, сделки не открываются); торгуется следующий за ним SOLUSDT.BINANCE. На каждом баре стратегия выравнивает цены закрытия SOL/BTC по временным меткам, оценивает скользящую бету SOL к BTC за vol_lookback баров и измеряет импульс BTC за L баров, нормированный по волатильности (z_btc). Непрерывный сигнал —……Показать большеСвернуть

Внутридневной импульс догоняющего движения с лагом BTC->SOL по двум инструментам на бессрочных контрактах Binance USD-M (бары по 15 мин, только OHLCV, лонг и шорт). BTCUSDT.BINANCE — лидер (только источник сигнала, сделки не открываются); торгуется следующий за ним SOLUSDT.BINANCE. На каждом баре стратегия выравнивает цены закрытия SOL/BTC по временным меткам, оценивает скользящую бету SOL к BTC за vol_lookback баров и измеряет импульс BTC за L баров, нормированный по волатильности (z_btc). Непрерывный сигнал — остаток беты, нормированный по волатильности: (бета*btc_ret - sol_ret)/sigma_sol. Вход: |z_btc| > btc_z AND SOL захватывает меньше catch_up_ratio совместного движения, ожидаемого по бете, AND ещё не захваченное движение |остаток| превышает min_catchup_frac (с учётом комиссий); после паузы перед повторным входом торгуется SOL в направлении BTC. Выходы основаны только на зафиксированных при входе значениях: фиксированные тейк-профит ATR / стоп ATR (от ATR на момент входа) либо выход по времени. Сайзинг задаёт риск risk_per_trade капитала при стопе ATR (ATR ограничен снизу, чтобы объём не взлетал при низкой волатильности); жёсткий лимит номинала — gross_cap x капитала; плечо=1 (без маржи).

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

Проверка не пройдена (слой 4 — проверка QA): - Стратегия LIQUIDATED счёт в песочнице: total_return -100%, max_drawdown 100%, ликвидация=true (2026-05-10), коэффициент Шарпа -2.52 с CI [-6.59, -2.12] (модуль > 5 — область ошибок кода/риска), profit_factor 0.44, return_skew -14.2, эксцесс 217. avg_position_pct 1743% намного выше предполагаемого ограничения плеча 3x (300%) — характерный признак спирали смерти из-за плеча: сайзинг по риску достигает лимита max_notional=капитал*плечо=3x в периоды низкой волатильности,……Показать большеСвернуть

Проверка не пройдена (слой 4 — проверка QA): - Стратегия LIQUIDATED счёт в песочнице: total_return -100%, max_drawdown 100%, ликвидация=true (2026-05-10), коэффициент Шарпа -2.52 с CI [-6.59, -2.12] (модуль > 5 — область ошибок кода/риска), profit_factor 0.44, return_skew -14.2, эксцесс 217. avg_position_pct 1743% намного выше предполагаемого ограничения плеча 3x (300%) — характерный признак спирали смерти из-за плеча: сайзинг по риску достигает лимита max_notional=капитал*плечо=3x в периоды низкой волатильности, а при накоплении убытков позиции с фиксированным номиналом становятся всё крупнее относительно сокращающегося капитала, пока не наступает ликвидация. Стратегия, обнуляющая счёт, не может пройти проверку; плечо 3x + риск 2% на сделку в книге с высокой оборачиваемостью и таймфреймом 15 мин неустойчивы, а общего ограничения экспозиции нет. - Преимущество ниже уровня комиссий, чистый результат отрицательный. avg_trade_return_pct 0.069% ниже минимального порога для фьючерсов 0.15% и около 0.10% за полный цикл сделки на 353 сделках. Оборот 1123x, total_impact_usd $83,527 — внутридневной сигнал лага не даёт валового движения, достаточного для покрытия комиссий и влияния на цену при такой частоте сделок. Фактическое соотношение доходности к риску перевёрнуто (avg_loss $1191 ≈ 2.1x avg_win $564), несмотря на «примерно симметричный» стоп 2.0-ATR / 2.5-ATR TP: выход по времени и догоняющему движению фиксирует небольшую прибыль, а стопы и гэпы приводят к крупным убыткам. - Выход по догоняющему движению использует остаток текущего бара, но ожидаемое значение = бета*btc_ret пересчитывается на каждом баре по скользящему окну L. Поэтому целевое значение остатка дрейфует, пока скользящий импульс BTC затухает, а остаток пересекает ноль по причинам, не связанным с тем, что SOL догоняет движение, что вызывает преждевременные и нестабильные выходы.

Аналитику: оценить на этапе backtest_review. Условие входа структурно учитывает комиссии (min_catchup_frac 0.4% > порога 0.15%), но отрицательное матожидание на сделку и асимметрия лонга и шорта (long_win_rate 0.25 против short_win_rate 0.50) указывают, что ставка на продолжение движения на выборке ведёт себя как возврат к среднему; вряд ли это исправить настройкой 3 параметров.

Бэктест в песочнице показывает явный чистый убыток на измеримой выборке из 66 сделок за 363 дней: total_return -13.7%, коэффициент Шарпа -2.24 (CI [-3.76, -0.81] полностью ниже нуля), profit_factor 0.44, avg_trade_return_pct -0.329% (отрицательное, ниже уровня комиссий), win_rate 0.36. Признаков дефекта кода здесь NOT (win_rate не равно 0.0, |коэффициент Шарпа| < 5, profit_factor != 0.0), значит, это реальный провал фактического преимущества, а не ошибка знака, сайзинга или выхода. Код верно реализует гипотезу; догоняющее движение после лага просто не даёт положительного матожидания на выборке. Передано аналитику на этапе backtest_review; это не блокирующая проверка корректности QA.

Необязательно: добавить нижнюю границу (например, захват > -catch_up_ratio), если подразумевается только «SOL отстаёт, двигаясь в том же направлении». В текущем виде соответствует заявленной гипотезе.

Условие догоняющего движения `self._captured >= self.catch_up_ratio -> None` также допускает значения захвата с большим NEGATIVE (SOL двигался в направлении, противоположном BTC), превращая такие бары во входы при неограниченном расхождении. Это соответствует направлению ставки на догоняющее движение и намерению гипотезы, поэтому не является дефектом; отмечено для подтверждения, что предполагался охват расхождений в противоположных направлениях, а не только небольшого недозахвата.

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

Шарп
-0,95
Общая доходность
-95,29%
Максимальная просадка
95,29%
Всего сделок
803
Доля прибыльных
41,1%
Профит-фактор
0,55

Чистая конструкция на двух инструментах: BTC используется только как источник сигнала, 803 сделок (убедительная выборка), только OHLCV, полная история в каталоге (риска данных нет)

Сделки соответствуют предполагаемому механизму (SOL-только, лонг и шорт, удержание около 3 ч), поэтому отрицательный результат — реальный вердикт по гипотезе, а не ошибка

Убыточна в EVERY году 2020-2026 (ежегодно с -21% по -45%); total_return -95.3%, max_drawdown 95.3% (от CI до 100%) — превышен порог окончательного отказа

profit_factor 0.55, коэффициент Шарпа -0.95 (CI [-1.89, -0.44] полностью отрицательный), коэффициент Сортино -0.65, PSR 0.0 — статистического преимущества нет

avg_trade_return_pct -0.35% (отрицательное, ниже уровня комиссий), матожидание -$117.78/сделку; соотношение доходности к риску перевёрнуто (avg_win $350 < avg_loss $444) при доле прибыльных сделок 41%

Класс лага/импульса только на OHLCV, без сохранившихся стратегий; SOL слишком быстро переоценивает импульс BTC, чтобы получить на нём прибыль — стратегия гонится за исчерпанными движениями

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

Проверка не пройдена (слой 2 — синтетические сценарии): Использованные параметры: ['btc_z', 'beta_max', 'beta_min', 'lookback', 'atr_period', 'atr_tp_mult', 'min_notional', 'vol_lookback', 'atr_stop_mult', 'max_hold_bars', 'catch_up_ratio', 'risk_per_trade'] Убедись, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735695840000) - steady_downtrend: TypeError:……Показать большеСвернуть

Проверка не пройдена (слой 2 — синтетические сценарии): Использованные параметры: ['btc_z', 'beta_max', 'beta_min', 'lookback', 'atr_period', 'atr_tp_mult', 'min_notional', 'vol_lookback', 'atr_stop_mult', 'max_hold_bars', 'catch_up_ratio', 'risk_per_trade'] Убедись, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735695840000) - steady_downtrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735695840000) - flat_ranging: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735695840000) - volatility_spike: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735695840000) - zero_volume: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735695840000) - price_gap: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (временная метка бара: 1735695840000)

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

На ликвидных крупных инструментах движение вслед за лидером слишком быстрое, чтобы его использовать: к моменту срабатывания z-порога за несколько баров SOL уже переоценил импульс BTC, поэтому стратегия гонится за исчерпанными движениями; гипотеза о микроструктуре, глубоко изученная рынком, может быть структурно несостоятельной, а не просто плохо настроенной.

От стратегии отказались на контрольном этапе проверки бэктеста перед оптимизацией: преимущество было отрицательным и статистически значимо имело неверный знак во всех режимах, а просадка превысила порог окончательного отказа >50%. До оптимизации и следующих этапов дело не дошло.

Внутридневная стратегия импульса лонг-шорт с лагом по двум инструментам на бессрочных контрактах Binance USD-M: BTC использовался только как лидер и источник сигнала, а SOL торговался в направлении значимого импульса BTC, нормированного по волатильности, когда SOL захватывал лишь часть совместного движения, ожидаемого по скользящей бете. Выход — при догоняющем движении, стопе/тейк-профите ATR или по времени; настроено три параметра.

На убедительной выборке из 803 сделок стратегия теряла деньги каждый год с 2020 по 2026; итоговая доходность -95.3%, максимальная просадка 95.3% (CI–100%), коэффициент Шарпа -0.95 (CI [-1.89, -0.44] полностью отрицательный), фактор прибыли 0.55 и вероятностный коэффициент Шарпа 0.0. Матожидание на сделку составило -$117.78 (avg_trade_return_pct -0.35%, ниже уровня комиссий), соотношение доходности к риску перевёрнуто: avg_win $350 против avg_loss $444 при доле прибыльных сделок 41%.

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