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

Стратегии

SOL 4-часовое продолжение импульсного бара, лонг-шорт (Binance USD-M, перенос продвиженного выражения импульса ETH-4H на второй подтверждённый импульсный актив с выгодной по комиссиям частотой сделок, ограниченный порог импульса, тесный начальный стоп, трейлинг-стоп для прибыльных сделок, дискретное ограничение капитала)

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

SolImpulseBarContinuationTrendLS4H

Глубокая многолетняя история SOL (13,079 баров, 451 сделок) — полноценная выборка

Гипотеза

Направленная стратегия продолжения импульса на одном инструменте, только на основе OHLCV: LONG-SHORT CONTINUATION для бессрочного контракта SOLUSDT.BINANCE USD-M с барами 4–HOUR. Это сочетание CADENCE + ASSET двух независимо VALIDATED фактов фабрики стратегий, NOT спекулятивный новый триггер или бросок монеты с новым активом: (1) триггер продолжения после выброса величины на IMPULSE барах — сильнейшее преимущество фабрики, неоднократно продвигавшееся (ETH-1H ~1.40 продвинуто, ETH-4H только что продвинуто с Sharpe……Показать большеСвернуть

Направленная стратегия продолжения импульса на одном инструменте, только на основе OHLCV: LONG-SHORT CONTINUATION для бессрочного контракта SOLUSDT.BINANCE USD-M с барами 4–HOUR. Это сочетание CADENCE + ASSET двух независимо VALIDATED фактов фабрики стратегий, NOT спекулятивный новый триггер или бросок монеты с новым активом: (1) триггер продолжения после выброса величины на IMPULSE барах — сильнейшее преимущество фабрики, неоднократно продвигавшееся (ETH-1H ~1.40 продвинуто, ETH-4H только что продвинуто с Sharpe 1.05, теперь paper_stage); и (2) SOL — SECOND актив, доказавший способность нести именно это преимущество продолжения импульса (SOL-1H импульс ~0.69, бумажная торговля). То есть SOL находится на проверенной оси «чистого продолжения» ETH/SOL, а NOT — на оси «хлыстовых движений» LINK/XRP/DOGE/AVAX/DOT. Единственное, что ещё не пробовали, — темп FEE-FAVORABLE 4–HOUR на SOL: именно этот сдвиг темпа вывел выражение ETH на продвижение, сократив потери на комиссиях и позволив торговать более крупные и чистые импульсы на бар. Механизм: когда один бар 4H оказывается выбросом по величине (его истинный диапазон превышает ограниченное кратное недавнего ATR), движение на SOL/ETH обычно CONTINUE в том же направлении в течение следующих баров; стратегия входит по направлению импульса с коротким начальным стопом и сопровождает прибыльные позиции. Согласно прямым рекомендациям аналитика («изучать отдельные проверенные активы, например импульс SOL» и «варианты темпа/структуры на уже WINNING активах»), это доступный вариант с наибольшей ожидаемой вероятностью выживания. Глубокая многолетняя история Binance SOL позволяет проверку walk-forward и на отложенной выборке (в отличие от портов HL и ликвидационных стратегий). ~4 параметров с ограничениями снижают риск повторяющегося во всей серии переобучения.

Итерация 5 исправляет ONLY сообщённую проверку leverage_set_but_unused. Проверка — это статическая проверка токенов: она отклоняет конфигурацию с плечом>1, если код не содержит config.leverage/.leverage/self.leverage/self._lev. В предыдущей итерации размер позиции рассчитывался без обращения к плечу, поэтому она получила отметку, а её байткод был идентичен 1x. В этой версии плечо задействовано в position_size (leverage = float(self.config.leverage); risk_budget = equity * risk_frac * leverage; max_notional = equity * leverage), поэтому портфель 3x действительно открывает позицию примерно в 3x раз больше 1x (без ограничения при типичных соотношениях SOL-4H ATR/стоп), а self._leverage также кэшируется в __init__. Вся логика, ранее прошедшая проверку, — непрерывный сигнал знакового тела в единицах ATR, ограниченный фильтр входа при выбросе по величине и выход с тесным стопом/трейлинг-стопом — осталась неизменной; уровни 1-2 сохранены, а плечо теперь влияет на бэктест.

Катастрофическая просадка и безубыточное, не масштабируемое преимущество — оптимизировать нечего. max_drawdown 79.14% (CI–98.99%) далеко за жёсткой границей отказа 50% (L19) и никогда не преодолеет порог просадки для продвижения. profit_factor составляет 1.038 (ниже порога значимого преимущества 1.2), а у Sharpe 0.50 бутстрэп-интервал CI [-0.29, 1.23] пересекает ноль: статистически значимого преимущества нет ещё до смещения отбора при оптимизации. Заглавный показатель +165% — артефакт: его обеспечивают……Показать большеСвернуть

Катастрофическая просадка и безубыточное, не масштабируемое преимущество — оптимизировать нечего. max_drawdown 79.14% (CI–98.99%) далеко за жёсткой границей отказа 50% (L19) и никогда не преодолеет порог просадки для продвижения. profit_factor составляет 1.038 (ниже порога значимого преимущества 1.2), а у Sharpe 0.50 бутстрэп-интервал CI [-0.29, 1.23] пересекает ноль: статистически значимого преимущества нет ещё до смещения отбора при оптимизации. Заглавный показатель +165% — артефакт: его обеспечивают return_kurtosis 71.9 / асимметрия 4.2, а также отдельные дни с +106.7% (2026-08-22) и +48.5% (2026-02-06); при этом end_unrealized_pct 54.3% означает, что более половины результата приходится на незакрытую открытую позицию, а не на реализованный результат. Критически важно, что impact_cost_pct 41.6% при всего лишь $578K объёма capacity_usd: влияние на рынок уже съедает 42% валовой прибыли — преимущество существует только на игрушечном масштабе, и само по себе блокирует продвижение. information_ratio — -0.68 (скорректированная на риск доходность хуже, чем у стратегии «купи и держи»), а годовые результаты резко колеблются (2026 -43.4%). Это направленная стратегия продолжения импульса для одного актива OHLCV; формулировка продвинутой родственной стратегии ETH-4H здесь неприменима: на SOL тот же механизм даёт просадку 79% и PF~1.0. Подбор параметров не исправит просадку 80% или влияние на результат 42%; оптимизатор подгонит кривую под выбросные выигрыши и провалит проверку deflated-Sharpe и на отложенной выборке. Тип провала: risk_reject/переобученная направленная стратегия на одном активе с >50% DD.

Реализация

Продолжение одиночного импульсного бара лонг-шорт на барах SOLUSDT.BINANCE USD-M 4H. Фильтр выброса по величине срабатывает, когда истинный диапазон бара превышает ограниченный множитель недавнего ATR; стратегия входит в направлении бара (знаковое тело в единицах ATR), использует тесный начальный стоп ATR и сопровождает прибыльные позиции более широким трейлинг-стопом ATR. Расчёт размера позиции с учётом риска и плеча при 3x, с ограничением номинала по плечу.

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

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

Округляй размер позиции до точности SOLUSDT (3). Не блокирует.

position_size возвращает Decimal(str(size)) без округления до точности размера SOL (3). Судя по всему, шаблон выполняет квантование (451 сделок исполнено), но округляй явно, чтобы избежать отклонения из-за точности.

Рассмотри расчёт фиксированного дробного риска независимо от плеча, чтобы плечо только повышало предел номинала; либо снизь плечо/risk_frac, чтобы просадка опустилась ниже порога продвижения. Решение оптимизатора/по рискам.

Плечо умножает бюджет риска на сделку (капитал * risk_frac * плечо), поэтому при 3x каждая сделка рискует 3% капитала до стопа — это прямой источник просадки 79%. Это допустимо (и проходит проверку leverage_set_but_unused), но значит, что плечо масштабирует RISK, а не только запас по лимиту.

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

Шарп
0,50
Общая доходность
165,31%
Максимальная просадка
79,14%
Всего сделок
451
Доля прибыльных
38,4%
Профит-фактор
1,04

Глубокая многолетняя история SOL (13,079 баров, 451 сделок) — полноценная выборка

avg_trade_return_pct 0.51% достигает порога минимальной комиссии Binance USD-M

Механизм реализован чётко (фильтр импульса по выбросу величины, трейлинг-стоп ATR)

max_drawdown 79.14% (от CI до 98.99%) — намного выше жёсткого порога отказа 50% (L19); порог просадки для продвижения недостижим

profit_factor 1.038 — ниже порога значимого преимущества 1.2; преимущество практически на уровне безубыточности

Коэффициент Шарпа 0.50, бутстрэп-интервал CI [-0.29, 1.23] пересекает ноль — статистической значимости нет

impact_cost_pct 41.6% с использованием только capacity_usd: лишь $578K — влияние на рынок поглощает 42% валовой прибыли; преимущество реально только в игрушечном масштабе

Заявленная доходность +165% обусловлена выбросами (эксцесс 71.9, асимметрия 4.2; отдельные дни +106.7% и +48.5%), а 54.3% этой доходности — нереализованная прибыль по незакрытой открытой позиции (end_unrealized_pct)

information_ratio -0.68 (хуже соотношение риска и доходности, чем у стратегии «купи и держи»); сильная нестабильность по годам (2026 -43.4%)

Продолжение движения по одному активу OHLCV — подход с акцентом на родственный ETH-4H не переносится; на SOL тот же механизм даёт 79% DD и PF~1.0

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

Верификация не пройдена (Layer 2 — синтетические сценарии): Использованные параметры: ['risk_frac', 'atr_period', 'min_notional', 'stop_atr_mult', 'trail_atr_mult', 'impulse_atr_mult'] Убедись, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: SolImpulseBarContinuationTrendLS4H._true_range() принимает 2 позиционных аргументов, но передано 3 (время бара: 1735690560000) - steady_downtrend: TypeError: SolImpulseBarContinuationTrendLS4H._true_range() принимает 2 позиционных……Показать большеСвернуть

Верификация не пройдена (Layer 2 — синтетические сценарии): Использованные параметры: ['risk_frac', 'atr_period', 'min_notional', 'stop_atr_mult', 'trail_atr_mult', 'impulse_atr_mult'] Убедись, что __init__ задаёт все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: SolImpulseBarContinuationTrendLS4H._true_range() принимает 2 позиционных аргументов, но передано 3 (время бара: 1735690560000) - steady_downtrend: TypeError: SolImpulseBarContinuationTrendLS4H._true_range() принимает 2 позиционных аргументов, но передано 3 (время бара: 1735690560000) - flat_ranging: TypeError: SolImpulseBarContinuationTrendLS4H._true_range() принимает 2 позиционных аргументов, но передано 3 (время бара: 1735690560000) - volatility_spike: TypeError: SolImpulseBarContinuationTrendLS4H._true_range() принимает 2 позиционных аргументов, но передано 3 (время бара: 1735690560000) - zero_volume: TypeError: SolImpulseBarContinuationTrendLS4H._true_range() принимает 2 позиционных аргументов, но передано 3 (время бара: 1735690560000) - price_gap: TypeError: SolImpulseBarContinuationTrendLS4H._true_range() принимает 2 позиционных аргументов, но передано 3 (время бара: 1735690560000)

Верификация не пройдена (leverage_set_but_unused): конфигурация задаёт плечо=3.0, но стратегия не использует плечо при расчёте размера позиции. Рассчитывай размер с его учётом — номинал = капитал * доля * плечо / цена (читай self.config.leverage) — или задай плечо=1.0. В текущем виде плечо не действует, а бэктест идентичен 1x.

Верификация не пройдена (Layer 3 — бэктест в песочнице): дымовой тест превысил лимит времени 300 с. Почти всегда это означает, что работа на каждом баре растёт вместе с историей — например, полное повторное сканирование ряда ставок финансирования/дополнительного ряда или создание списка с вызовом min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно создавай отсортированные массивы временных меток ONCE в __init__ и используй bisect либо кэшируй результаты поиска по временной метке, чтобы стоимость обработки бара была O(log n), а не O(n).

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