Стратегии
Бэктест стратегии возврата к среднему при вакууме ликвидности в выходные на LTCUSDT.BINANCE Perp: лонг-шорт против резкого движения от закрытия пятницы до открытия воскресенья, вход на воскресном баре 22:00 UTC, выход по фиксированному времени понедельничной сессии (бары 1H, по календарю, 3 параметров)
Итог: Отменено
LtcWeekendLiquidityVacuumReversionLS1H
Сводка по итогам
Гипотеза
backtest_review_stuck_3_timeouts
Реализация
Результаты верификации
Когда `_pos_key` меняется и `_pending_stop_pct` равен 0.0, пересобирай стоп по текущему состоянию, а не отключай его; например, `self._active_stop_pct = self._pending_stop_pct or (self.stop_atr_mult * self._atr / self._price if self._atr > 0 and self._price > 0 else 0.0)`. Кольцевой буфер ATR снова заполнится за 168 баров, поэтому вскоре после перезапуска это будет возможно.
Хвостовой стоп ATR неустойчив к перезапуску, в отличие от выхода по времени. `_pending_stop_pct` / `_active_stop_pct` хранятся только в памяти. После перезапуска узла реальной или бумажной торговли при открытой позиции `should_exit` получает новый `ts_opened` (_pos_key == -1) и копирует `_pending_stop_pct`, у которого всё ещё начальное значение 0.0; поэтому `_active_stop_pct` равен 0.0, и проверка `if self._active_stop_pct > 0.0` незаметно отключает хвостовой стоп до конца срока жизни позиции. Тогда позицию защищает только ограничение по времени hold_hours (<= 24h). В строке документации сказано, что выход «устойчив к перезапуску»; это верно для временной привязки (position.ts_opened), но не для стопа.
Ограничь расстояние до стопа, например, значением `stop_pct = min(self.stop_atr_mult * self._atr / self._price, 0.10)`, чтобы стоп ATR оставался настоящим хвостовым стопом в стрессовых режимах, а не превращался в «только выход по времени», и чтобы risk_pct означало именно то, что заявлено.
«Широкий хвостовой стоп ATR» почти не срабатывает при высокой волатильности, поэтому `risk_pct` завышает фактический контроль риска. За всю историю LTC 1H измеренное значение stop_pct = stop_atr_mult * ATR(168) / цена находится в диапазоне от 2.28% до 26.14% (среднее 5.52%). При верхней границе стоп не может сработать в течение удержания 20h, поэтому фактический выход всегда происходит по времени, а худшая реализованная сделка составила -14.37% от номинала (-4.18% капитала) при номинальном лимите риска 1.5%. Расчёт размера позиции внутренне согласован (номинал уменьшается при увеличении стопа, notional_frac находился в диапазоне 0.057-0.658), так что это не ошибка расчёта размера позиции, однако значение largest_loss в песочнице из -4,241 USD объясняется именно этим, а не несработавшим стопом.
Либо требуй полный период `_SIGMA_WINDOW` до начала торговли (`len(self._wk) < _SIGMA_WINDOW -> sigma = 0.0`), что добавит примерно 13 выходных к прогреву, либо оставь текущую реализацию и укажи это в аналитической записке. В гипотезе 26 назван фиксированной структурной константой, поэтому точное соответствие ему также убирает фактически бесплатный параметр.
Полуширина прогрева сигмы: `_MIN_SIGMA_OBS = 13` позволяет начать торговлю с оценкой сигмы по 13 выходным, хотя гипотеза задаёт скользящее окно длиной 26 недель. Во время разгона знаменатель z заметно шумнее, поэтому условие |z| >= sigma_mult несопоставимо между первыми примерно 13 выходными торговли и остальной выборкой. Это небольшой разовый эффект качества выборки (около 13 из примерно 348 выходных), а не заглядывание в будущее.
Сводка по итогам
Стратегия игры на затухание движения в условиях вакуума ликвидности по выходным показала отрицательное преимущество на сделку, значительно уступающее затратам на полный цикл сделки на LTC, несмотря на почти равные шансы выигрыша, а выборка из 74 сделок, накопленная за шесть лет, оставляет этапу проверки мало материала для анализа — календарные эффекты на малой выборке следует предварительно проверять на асимметрию доходности, прежде чем включать их в очередь на проверку.
Запуск не получил вердикта по проверке бэктеста: его прекратили по причине «backtest_review_stuck_3_timeouts» после трёх тайм-аутов на этапе проверки до оптимизации, поэтому до оптимизации, анализа аналитиком и проверки рисков дело не дошло.
Занять противоположную сторону после чрезмерного движения с пятницы -21:00-UTC до воскресенья -22:00-UTC по бессрочному контракту LTCUSDT.BINANCE на барах 1H. Идея в том, что низкая ликвидность выходных создаёт влияние на цену, которое нивелируется с возвращением институциональной глубины в понедельничную сессию. Вход в длинную или короткую позицию на воскресном баре 22:00, выход по фиксированному времени в понедельник, хвостовой стоп ATR.
За 2,436 дней (58,454 часовых баров) бэктест дал 74 сделок и общую доходность -17.96% (CAGR -2.90%), коэффициент Шарпа -0.52, Сортино -0.18, фактор прибыли 0.67 и максимальную просадку 21.53%. Доля прибыльных сделок составила ровно 50%, но средняя доходность на сделку была -0.222% от номинала (математическое ожидание -$229.61); средний убыток $1,371 превысил среднюю прибыль $912, а коэффициент Шарпа был отрицательным во всех трёх режимах волатильности.
Обзор бэктеста
- Шарп
- -0,52
- Общая доходность
- -17,96%
- Максимальная просадка
- 21,53%
- Всего сделок
- 74
- Доля прибыльных
- 50,0%
- Профит-фактор
- 0,67
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.