Стратегии
SOL-AVAX Коинтеграционный спред, возврат к среднему, рыночно-нейтральная длинно-короткая стратегия (бессрочные контракты BINANCE USD-M, два инструмента, свечи 4ч, скользящий z-счёт спреда с коэффициентом хеджирования, вход только при широких отклонениях на 2 сигма, только OHLCV, 3 параметров)
Итог: Отменено
SolAvaxCointSpreadMarketNeutralLS4h
Сводка по итогам
Стратегия искала рыночно-нейтральное преимущество, играя на возврат широких отклонений в 2 сигма спреда SOL/AVAX: предполагалось, что бессрочные контракты L1 из одного сектора вернутся к устойчивому соотношению относительной стоимости. Конструкция работала по замыслу — чистая нейтральность к beta, без наращивания позиции, строго одна длинная и одна короткая позиция. Но базовое предположение о коинтеграции не подтвердилось: пара резко разошлась при ротации 2021 L1, что привело к году с результатом -73%, отдельному дню с -48.9% и ложному развороту +42%. Стратегия на возврат к среднему снова и снова платила за удержание расширяющихся спредов. На 590 достаточно большой выборке сделок убыток составил 82.76%; ожидание на сделку было отрицательным, фактор прибыли — 0.785, просадка — 87.6%. На этапе проверки до оптимизации аналитик отказался от стратегии как от принципиально неработающей, а не поддающейся оптимизации: настройка параметров z-оценки не могла создать отсутствующую коинтеграцию. Стратегия не дошла до оптимизации, анализа или проверки риска.
Гипотеза
Итерация 2 устраняет единственную ошибку уровня -2: _ols_beta() была объявлена как @staticmethod и вызывалась через self._ols_beta(lb, la), но синтетический прокси уровня -2 повторно привязывает методы стратегии к экземпляру и снимает обёртку staticmethod. Поэтому вызов передавал функции с 2 аргументами 3 аргумента (self, lb, la) и во всех сценариях возникала ошибка 'takes 2 positional arguments but 3 were given'. Изменение превращает _ols_beta в обычный метод экземпляра (self, x, y); место вызова остаётся прежним, и привязка теперь корректна в прокси, движке бэктеста и реальной торговле. Логика сигнала, размера позиции, входа, выхода и взаимодействия компонентов не меняется, поэтому уже пройденные статические проверки уровня -1 остаются успешными, а механизм спреда, нейтрального к beta, сохраняется. Кредитное плечо 2.0 задействовано в расчёте размера позиции (equity * risk_frac * leverage) для обеих сторон: нейтральный портфель с валовым объёмом около 0.8x остаётся в пределах маржи.
Принципиально неработающая стратегия, оптимизация не поможет. Отрицательное ожидание на сделку (avg_trade_return_pct -0.497%, ниже комиссий), profit_factor 0.785 (< 1), total_return -82.76% и max_drawdown 87.6% за 590 сделок — однозначный убыток на достаточной выборке. Данные опровергли основное предположение (SOL и AVAX остаются коинтегрированными и возвращаются к среднему после широких отклонений): пара резко разошлась при ротации 2021 L1 (годовая -73%, день с движением -48.9% на 2021-09-09, ложный разворот +42% на 2022-11-11, эксцесс 18), поэтому стратегия на возврат z-оценки удерживала позиции, пока спреды расширялись. Оптимизация z_lookback/entry_z/exit_z не создаст отсутствующую коинтеграцию и не изменит отрицательное ожидание — она лишь приведёт к переобучению на двух аномальных днях. Не стоит тратить 2 часов на оптимизацию.
Реализация
Рыночно-нейтральная парная торговля на коинтеграции SOLUSDT и AVAXUSDT — бессрочных контрактах BINANCE USD-M, свечи 4ч, только OHLCV. Скользящая OLS по логарифмам цен даёт коэффициент хеджирования beta; спред log(SOL) - beta*log(AVAX) переводится в z-оценку по z_lookback свечам. При широком отклонении >= 2 сигма стратегия открывает одну позицию со спредом, нейтральную к beta: покупает недооценённую сторону и продаёт переоценённую. Закрытие происходит при возврате к среднему (|z|<=exit_z), стопе при расхождении (|z|>=stop_z) или по истечении max_hold_bars. Одновременно открыта ровно одна длинная и одна короткая сторона.
Результаты верификации
Решение аналитика на этапе backtest_review (оптимизировать/итеративно доработать/отказаться). Исправление кода не требуется. При оптимизации следи, чтобы тонкое преимущество не опустилось ниже порога затрат в четыре исполнения, и отслеживай перекос avg_loss>avg_win.
Реализованное преимущество невелико и статистически неотличимо от нуля — это решение аналитика на этапе backtest_review, а не дефект кода. Тестовый прогон (metrics_reliable=true, 90 сделок за 363 дней, удержание около 2.6д, без ликвидации): avg_trade_return_pct 0.244% едва покрывает затраты около 0.20% на полный круг из четырёх исполнений для двухсторонней фьючерсной пары; profit_factor 1.038 лишь немного выше безубыточности; Sharpe 0.046, а CI [-1.49, +1.62] пересекает ноль; только total_return 3.14%. Тест комиссий на уровне дизайна PASSES (entry_z=2.0 нацелена на развороты спреда в несколько процентов при 2 сигма, что значительно больше 0.20%), поэтому это недостаток фактических результатов, а не ошибка расчёта комиссий в дизайне. Обрати внимание: avg_loss ($1,894) > avg_win ($1,572): стратегия на возврат к среднему немного чаще выигрывает (55.6%), но чуть больше теряет на каждой убыточной сделке — небольшой перекос в пользу риска при меньшем вознаграждении, за которым стоит следить, хотя PF остаётся >1.
Изменения не требуются; убедись, что окно бэктеста/оптимизации достаточно длинное, чтобы набрать более ~100 сделок, прежде чем доверять Sharpe.
Число сделок (90 за 363 дней) немного ниже комфортного минимума примерно в 100 сделок для оценки измеримости в этом тестовом окне длиной около 1 лет. Это полноценная стратегия парной торговли с удержанием позиций по несколько дней, поэтому такая частота закономерна; metrics_reliable=true. За многолетний бэктест число сделок должно превысить 100. Отмечаем это лишь для того, чтобы аналитик учитывал размер выборки при оценке тонкого преимущества: широкий Sharpe CI отражает это.
Обзор бэктеста
- Шарп
- 0,17
- Общая доходность
- -82,76%
- Максимальная просадка
- 87,58%
- Всего сделок
- 590
- Доля прибыльных
- 50,3%
- Профит-фактор
- 0,79
Чистая рыночно-нейтральная конструкция: beta -0.08, benchmark_correlation -0.31 — портфель действительно хеджировал направленный риск
Достаточная выборка (590 сделок примерно за 5.9 лет), поэтому отрицательный результат статистически убедителен, а не является шумом
Нет ошибок наращивания позиции или ликвидации; строго одна длинная и одна короткая позиция, как задумано, со стопом при расхождении
avg_trade_return_pct -0.497% — ожидание на сделку NEGATIVE, ниже комиссий; profit_factor 0.785 (< 1, чистый убыток); ожидание -$125/сделку
total_return -82.76% и max_drawdown 87.6% (за пределами порога безусловного отказа 50%, от CI до 99.6%)
Предположение о коинтеграции опровергнуто: годовая -73% на 2021, отдельный день с движением -48.9% (2021-09-09) и ложный разворот +42% (2022-11-11), эксцесс 18 — SOL/AVAX разошлись вместо возврата к среднему; stop_z не защитил
Sharpe 0.166, при этом CI [-0.48, 0.86] пересекает ноль; calmar -0.90; information_ratio -0.78
Сводка по итогам
Рыночно-нейтральная парная конструкция может правильно хеджировать beta и всё равно понести большие убытки, если предполагаемая коинтеграция нестабильна: два высокобетовых актива L1 могут разойтись при ротации секторов, а стоп при расхождении не защитит от продолжающего расширяться спреда.
Аналитик отказался от стратегии на этапе проверки бэктеста до оптимизации, поскольку предположение о коинтеграции не подтвердилось: SOL и AVAX резко разошлись при ротации 2021 L1 (2021 годовая -73%, день с движением -48.9% на 2021-09-09, ложный разворот +42%, эксцесс 18). Поэтому стратегия на возврат z-оценки удерживала позиции, пока спреды расширялись. Настройка параметров не могла создать отсутствующую коинтеграцию или изменить отрицательное ожидание.
Рыночно-нейтральная сделка статистического арбитража на бессрочных контрактах L1 из одного сектора: SOLUSDT.BINANCE (длинная сторона) и AVAXUSDT.BINANCE (хедж), свечи 4ч OHLCV. Скользящий спред с коэффициентом хеджирования OLS переводится в z-оценку; при широком отклонении (>= 2 сигма) стратегия открывает одну длинно-короткую позицию, нейтральную к beta, рассчитывая на возврат к среднему, и закрывает её при возврате к среднему, срабатывании стопа при расхождении или по истечении заданного времени.
За ~5.9 лет и 590 сделок стратегия показала однозначный убыток на достаточной выборке: avg_trade_return_pct -0.497% (отрицательный результат, ниже комиссий), фактор прибыли 0.785, ожидание -$125/сделку, общая доходность -82.76%, максимальная просадка 87.6% (CI–99.6%) и Sharpe 0.166, при этом CI пересекает ноль. Однако конструкция чисто хеджировала направленный риск (beta -0.08, корреляция с бенчмарком -0.31).
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.