Стратегии
SOL Затухание чрезмерного отклонения премии бессрочного контракта к индексу, лонг-шорт (один инструмент BINANCE USD-M бессрочный контракт против его INDEX, свечи mark/index из DEEP; возврат контракта к спотовому индексу при отклонении базиса > 0.35% во время резкого движения — конвергенцию обеспечивает механика рынка ENFORCED, ставка финансирования и арбитраж; базисный сигнал, не основанный на цене — быстрое схождение, жёсткий стоп при дальнейшем расширении базиса, 2 параметров)
Итог: Отменено
SolPerpIndexPremiumOvershootFadeLS5m
Поток premium_index (базис mark price к индексу) — подлинный сигнал, не основанный на цене, и подключён правильно (346 событий ставки финансирования / глубокий ряд, отправлено заявок на вход: 6792), поэтому проблема не…
Гипотеза
Счёт ликвидирован в первый месяц (total_return -100%, max_drawdown 100%) при отрицательном матожидании после издержек (avg_trade_return_pct -0.147%, profit_factor 6.4e-05, матожидание -$45 на сделку). У затухания отклонения базиса катастрофический левый хвост (avg_loss $59.8 против avg_win $0.01, largest_loss -$2463, асимметрия -12.3, эксцесс 177): позиции против временных отклонений бессрочного контракта от индекса разносят именно во время резких движений, на которые нацелена гипотеза, а стоп при расширении базиса не ограничивает хвостовые потери. Семейства стратегий на одном бессрочном контракте с дополнительным фильтром и затухания движения по одной монете L73 и L55 не имеют выживших; настройка порогов не превратит ликвидируемую стратегию с отрицательным матожиданием в источник преимущества. Оптимизация не стоит 2 часов.
Реализация
Лонг-шорт стратегия затухания движения на одном инструменте: бессрочный контракт SOLUSDT.BINANCE USD-M против его спотового индекса на барах 5-MINUTE. Переменная для принятия решения — опубликованная премия mark price к индексу (premium_index / close в premiumIndexKlines = (perp_mark - index)/index), считываемая на момент закрытия каждого бара посредством бисекционного поиска O(log n) в массиве numpy, разобранном один раз при создании объекта. Когда бессрочный контракт торгуется на уровне ≥ +0.15% RICH к индексу, стратегия SHORTS бессрочный контракт; когда отклонение ≥ 0.15% CHEAP, открывает LONG. Выход — когда базис сходится и возвращается внутрь 0.03%, при жёстком стопе, если отклонение расширяется ещё на 0.15% против позиции, при неблагоприятном движении цены на 1.2% либо по достижении внутридневного лимита удержания 30 минут (6 баров). Ставка финансирования, подтягивая бессрочный контракт к индексу, обеспечивает конвергенцию TWAP вместе с межрыночным арбитражем. Это не ставка на возврат цены, а сигнал, не основанный на геометрии цены.
Результаты верификации
Проверка не пройдена (слой 1 — config): config.instrument_id и config.bar_type имеют значение REQUIRED (получено: instrument_id=None, bar_type=None). Укажите для обоих параметры гипотезы, например instrument_id='BTCUSDT.BINANCE', bar_type='BTCUSDT.BINANCE-4-HOUR-LAST-EXTERNAL'.
Запусти оптимизатор по сетке basis_entry; подтверди ≥100 сделок AND avg_trade_return_pct > 0.15%.
Порог в заголовке гипотезы — 0.35%, но код срабатывает при 0.15%; задокументирована перекалибровка по измеренному распределению премии SOL. Структура соответствует описанию (вход/выход при схождении/стоп при расширении базиса/лимит времени), поэтому изменение величины допустимо и не считается несоответствием.
Исправление не требуется; считайте предположение о конвергенции неподтверждённым, пока полный бэктест не покажет положительное матожидание после издержек.
Затухание движения по базису с одной позицией без хеджирования индекса — прибыль и убыток реализуются только по бессрочному контракту, поэтому схождение, вызванное индексом, даёт мало. Это свойство гипотезы на одном инструменте, а не дефект кода, но оно ослабляет утверждение о «конвергенции, обеспеченной механикой рынка».
Обзор бэктеста
- Шарп
- -3,36
- Общая доходность
- -100,00%
- Максимальная просадка
- 100,00%
- Всего сделок
- 6792
- Доля прибыльных
- 24,7%
- Профит-фактор
- 0,00
Поток premium_index (базис mark price к индексу) — подлинный сигнал, не основанный на цене, и подключён правильно (346 событий ставки финансирования / глубокий ряд, отправлено заявок на вход: 6792), поэтому проблема не в данных и не в их обработке.
На 2020-10-10 счёт достиг LIQUIDATED: total_return -100%, max_drawdown 100.0%, коэффициент Кальмара/восстановления -1.0. Бэктест даже не дошёл до 2021 — капитал обнулился в первый месяц торговли.
Отрицательное матожидание после издержек: avg_trade_return_pct -0.147% (ниже нуля, а не просто ниже порога комиссий 0.15%), profit_factor 0.0000639, матожидание -$45.0 на сделку за 6792 сделок.
Катастрофическая асимметрия левого хвоста: avg_win $0.01 против avg_loss $59.8, largest_win $1.21 против largest_loss -$2463, return_skew -12.3, эксцесс 177, tail_ratio 0.0001, омега 0.0. Стратегия собирает крошечную прибыль на схождении базиса и несёт огромные убытки, когда базис продолжает расширяться: стоп по расширению базиса и ценовой ограничитель не сдерживают хвостовые потери.
Однозначно плохие метрики доходности с поправкой на риск: коэффициент Шарпа -3.36 (CI [-6.59, -2.76], всё значение ниже нуля), коэффициент Сортино -3.35, PSR 0.0, information_ratio -8.34, альфа -41.6.
Это L73 семейство направленных стратегий на одном бессрочном контракте с дополнительным фильтром (премия/базис) — выживших нет — в сочетании с сигнатурой затухания движения по одной монете L55: затухание внутридневных отклонений базиса на одном альткоине приводит к неблагоприятному отбору именно во время быстрых движений, на которые нацелена гипотеза.
История итераций
Проверка не пройдена (слой 3 — бэктест в песочнице): у объекта 'SolPerpIndexPremiumOvershootFadeLS1m' нет атрибута 'subscribe_mark_price_updates' Использованный тип баров: SOLUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL, обработано баров: 0 Убедитесь, что стратегия совершает сделки на предоставленных данных и с заданными параметрами.
Проверка не пройдена (слой 3 — бэктест в песочнице): дымовой тест превысил лимит времени выполнения 300 с. Обычно это означает, что объём работы на каждом баре растёт вместе с историей, например повторное сканирование всего ряда ставок финансирования/дополнительных данных или создание нового списка с вызовом min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно создайте отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы стоимость обработки бара была O(log n), а не O(n).
sandbox_timeout: проверка не пройдена (слой 3 — бэктест в песочнице): дымовой тест превысил лимит времени выполнения 300 с на окне около 20000 баров (69 дней по SOLUSDT.BINANCE-5-MINUTE-LAST-EXTERNAL). Обычно это означает, что объём работы на каждом баре растёт вместе с историей, например повторное сканирование всего ряда ставок финансирования/дополнительных данных или создание нового списка с вызовом min()/sorted() внутри calculate_signal()/on_bar() на каждом баре. Предварительно создайте отсортированные массивы временных меток ONCE в __init__ и используйте bisect либо кэшируйте результаты поиска по временной метке, чтобы стоимость обработки бара была O(log n), а не O(n).
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.