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

Стратегии

Бэктест стратегии возврата к среднему при вакууме ликвидности в выходные на LTCUSDT.BINANCE Perp: лонг-шорт против резкого движения от закрытия пятницы до открытия воскресенья, вход на воскресном баре 22:00 UTC, выход по фиксированному времени понедельничной сессии (бары 1H, по календарю, 3 параметров)

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

LtcWeekendLiquidityVacuumReversionLS1H

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

Стратегия предполагает преимущество, обусловленное календарём, а не индикатором: измерить сдвиг от закрытия пятницы до открытия воскресенья по бессрочному контракту LTCUSDT, требовать, чтобы он был крупным относительно собственного распределения доходности инструмента за последние 26 выходных, и занять противоположную сторону на воскресном баре 22:00 UTC с фиксированным выходом в понедельничную сессию. Всего три настраиваемых параметра, чтобы снизить риск подгонки по принципу выбора лучшего из N. Бэктест прошёл……Показать большеСвернуть

Стратегия предполагает преимущество, обусловленное календарём, а не индикатором: измерить сдвиг от закрытия пятницы до открытия воскресенья по бессрочному контракту LTCUSDT, требовать, чтобы он был крупным относительно собственного распределения доходности инструмента за последние 26 выходных, и занять противоположную сторону на воскресном баре 22:00 UTC с фиксированным выходом в понедельничную сессию. Всего три настраиваемых параметра, чтобы снизить риск подгонки по принципу выбора лучшего из N. Бэктест прошёл без сбоев за период более шести лет и 58,454 баров, сформировал сигналы и открыл 74 позиций без сокращения размера или номинала, но результат составил -17.96% общей доходности, коэффициент Шарпа -0.52, фактор прибыли 0.67 и среднюю доходность на сделку -0.222%; доля прибыльных сделок 50%, при этом убытки были существенно крупнее прибыли. Результаты были отрицательными при низкой, обычной и высокой волатильности, а также в большинстве стрессовых периодов; положительным оказался только период запрета криптовалют в Китае 2021. Вердикт так и не был записан: этап проверки бэктеста до оптимизации трижды завершился по тайм-ауту, и запуск был оставлен со статусом «backtest_review_stuck_3_timeouts», поэтому оптимизация, анализ аналитиком и проверка рисков не проводились.

Гипотеза

Стратегия LONG-SHORT по одному инструменту, только на основе OHLCV, с фильтром CALENDAR-GATED, для LTCUSDT.BINANCE USD-M бессрочного контракта, бары 1-HOUR (проверено по каталогу: 2020-01-09 -> 2026-09-10, около 58,500 часовых баров, около 348 выходных). Механизм основан NOT на возврате к среднему по индикатору и NOT на переименованной стратегии импульса: это эффект календаря ликвидности. Криптовалютные бессрочные контракты торгуются 24/7, но институциональная ликвидность и ликвидность маркет-мейкеров,……Показать большеСвернуть

Стратегия LONG-SHORT по одному инструменту, только на основе OHLCV, с фильтром CALENDAR-GATED, для LTCUSDT.BINANCE USD-M бессрочного контракта, бары 1-HOUR (проверено по каталогу: 2020-01-09 -> 2026-09-10, около 58,500 часовых баров, около 348 выходных). Механизм основан NOT на возврате к среднему по индикатору и NOT на переименованной стратегии импульса: это эффект календаря ликвидности. Криптовалютные бессрочные контракты торгуются 24/7, но институциональная ликвидность и ликвидность маркет-мейкеров, обеспечивающая их, — нет: CME BTC фьючерсы закрыты, US/EU торговые отделы, ETF уполномоченные участники, отделы казначейства/OTC и большинство поставщиков алгоритмической ликвидности сокращают позиции или выходят из рынка с пятницы примерно 21:00 UTC до понедельника. Глубина книги ордеров на Binance USD-M в инструментах средней капитализации, таких как LTC, заметно снижается в этот период. При меньшей глубине книги заданный объём потока ордеров (принудительная ликвидация, одна крупная сделка по усмотрению трейдера, реакция на новость при отсутствии арбитражного контрагента) сдвигает цену сильнее, чем тот же поток во вторник. Часть этого сдвига вызвана исключительно влиянием на цену, а не новой информацией, и отыгрывается с возвращением глубокой ликвидности в начале глобальной сессии понедельника. Стратегия измеряет изменение цены за выходные, требует, чтобы оно было значительным относительно собственного недавнего распределения доходности инструмента за выходные, и открывает позицию в сторону OTHER на закрытии воскресного бара 22:00 UTC, выходя из неё в установленное время в ходе сессии понедельника. Предусмотрено только THREE настраиваемых параметра (sigma_mult, hold_hours, stop_atr_mult); все остальные элементы (контрольная отметка пятницы 21:00 UTC, отметка входа воскресенья 22:00 UTC, скользящее окно сигмы длиной 26 недель) — это календарные/структурные константы FIXED, а не подбираемые параметры, поскольку в этой фабрике стратегий повторяющаяся причина провала — выбор параметров по лучшему результату из множества вариантов. Примечание по реализации для разработчика (родственная гипотеза только что провалилась из-за тайм-аута песочницы Layer-3): обработка каждого бара должна выполняться за O(1); обновляйте контрольное пятничное закрытие -21:00 и дек фиксированной длины с последними 26 доходностями за выходные инкрементально в on_bar, используя день недели/час бара UTC; никогда не сканируйте историю заново внутри calculate_signal.

Прямая реализация гипотезы. Опорная метка пятницы 21:00 UTC, метка входа в воскресенье 22:00 UTC и окно сигмы длиной 26 недель жёстко заданы константами, а не параметрами, точно как указано; оптимизатор может менять только sigma_mult, hold_hours и stop_atr_mult (плюс размер позиции с учётом риска), что снижает выбор лучшего из N. Тайм-аут родственной стратегии на Layer-3 устранён структурно: цена закрытия пятницы, буфер TR (текущая сумма, двусторонняя очередь maxlen 168) и буфер доходностей за выходные (maxlen……Показать большеСвернуть

Прямая реализация гипотезы. Опорная метка пятницы 21:00 UTC, метка входа в воскресенье 22:00 UTC и окно сигмы длиной 26 недель жёстко заданы константами, а не параметрами, точно как указано; оптимизатор может менять только sigma_mult, hold_hours и stop_atr_mult (плюс размер позиции с учётом риска), что снижает выбор лучшего из N. Тайм-аут родственной стратегии на Layer-3 устранён структурно: цена закрытия пятницы, буфер TR (текущая сумма, двусторонняя очередь maxlen 168) и буфер доходностей за выходные (maxlen 26) обновляются инкрементально по дню недели/часу самого бара UTC, вычисляемым целочисленно; внутри calculate_signal история не пересканируется, сигма пересчитывается не чаще раза за выходные и не более чем по 26 числам с плавающей точкой. Функция дня недели/часа вынесена на уровень модуля, а не сделана статическим методом, поэтому прокси Layer-2 не сможет передать self. Частота входов в окне песочницы: около 119 выходных, примерно 13 из них использованы для прогрева сигмы, условие |z| >= 1.0 срабатывает примерно в трети случаев — около 30 сделок, что заметно превышает требование не менее 1 сделок. Аналитику следует оценить ONE HONEST CAVEAT: офлайн-проверка исходного механизма на всей истории из 348 выходных (sigma_mult 1.0, удержание 20h, без стопа) даёт около 74 сделок с валовой прибылью +0.19% на сделку, то есть всего около +0.09% после круговых комиссий тейкера 0.10% — ниже минимального уровня фьючерсов 0.15%. Годовая прибыль и убыток меняются местами (2020/21 положительный, 2022 и 2024/25 отрицательные), поэтому возврат к среднему на фоне дефицита ликвидности мог ослабнуть по мере профессионализации криптовалютной ликвидности в выходные. Я реализовал запрошенное; настройки по умолчанию hold_hours 20 и широкий хвостовой стоп 3.5-ATR сохраняют механизм (узкий стоп прерывает возврат до его завершения).

backtest_review_stuck_3_timeouts

Реализация

Стратегия возврата к среднему с длинными и короткими позициями, запускаемая по календарю при дефиците ликвидности в выходные, на бессрочном контракте LTCUSDT.BINANCE USD-M, бары 1-HOUR, только OHLCV. Опорное значение — закрытие пятничного бара 21:00 UTC (фиксированная метка). Сдвиг за выходные r = close(вс 22:00 UTC)/close(пт 21:00 UTC) - 1 нормируется на стандартное отклонение собственных сдвигов инструмента за последние 26 выходных (фиксированное окно, измеренное строго до текущих выходных). calculate_signal……Показать большеСвернуть

Стратегия возврата к среднему с длинными и короткими позициями, запускаемая по календарю при дефиците ликвидности в выходные, на бессрочном контракте LTCUSDT.BINANCE USD-M, бары 1-HOUR, только OHLCV. Опорное значение — закрытие пятничного бара 21:00 UTC (фиксированная метка). Сдвиг за выходные r = close(вс 22:00 UTC)/close(пт 21:00 UTC) - 1 нормируется на стандартное отклонение собственных сдвигов инструмента за последние 26 выходных (фиксированное окно, измеренное строго до текущих выходных). calculate_signal рассчитывает непрерывный z-счёт противоположного движения z = -сдвиг/сигма на баре EVERY (сдвиг измеряется относительно последней пятничной опорной цены, поэтому переменная меняется в течение недели); решение о входе в should_enter ограничено воскресным баром 22:00 UTC с условием |z| >= sigma_mult; позиция открывается в сторону OTHER движения за выходные (падение за выходные -> BUY, резкий рост -> SELL). Выход — по фиксированному времени в понедельничную сессию: через hold_hours после исполнения, отсчёт ведётся от собственного ts_opened позиции (календарное время, устойчивое к перезапуску); широкий хвостовой стоп stop_atr_mult x ATR(168h) проверяется при закрытии бара. Размер позиции зависит от капитала: risk_pct капитала с учётом расстояния до стопа ATR, максимум max_notional_frac x капитал x плечо; плечо 1.0 (фьючерсная площадка нужна только потому, что стратегия открывает короткие позиции). Три настраиваемых параметра (sigma_mult, hold_hours, stop_atr_mult) плюс размер позиции; все календарные/структурные элементы — фиксированные константы. Все вычисления для каждого бара имеют сложность O(1): кольцевой буфер на 168 ячеек TR с текущей суммой и кольцевой буфер доходностей за выходные на 26 ячеек, сигма пересчитывается только при завершении выходных.

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

Когда `_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 выходных), а не заглядывание в будущее.

Способность покрывать комиссии — главный риск здесь, и он носит структурный характер во всём заявленном пространстве параметров WHOLE, а не только в прогоне песочницы. Я офлайн точно воспроизвёл механику стратегии на истории каталога за LTCUSDT.BINANCE 1H (58,454 баров, 2020-01-09 -> 2026-09-10) и воспроизвёл результат песочницы с точностью до 3 знаков после запятой (23 сделок, валовой результат на сделку -1.145% против заявленных в песочнице avg_trade_return_pct -1.151%) — поэтому приведённые ниже цифры отражают……Показать большеСвернуть

Способность покрывать комиссии — главный риск здесь, и он носит структурный характер во всём заявленном пространстве параметров WHOLE, а не только в прогоне песочницы. Я офлайн точно воспроизвёл механику стратегии на истории каталога за LTCUSDT.BINANCE 1H (58,454 баров, 2020-01-09 -> 2026-09-10) и воспроизвёл результат песочницы с точностью до 3 знаков после запятой (23 сделок, валовой результат на сделку -1.145% против заявленных в песочнице avg_trade_return_pct -1.151%) — поэтому приведённые ниже цифры отражают механику, а не артефакт исполнения. За всю историю при заданных по умолчанию значениях (sigma_mult 1.0, удержание 20ч, стоп 3.5xATR): 74 сделок, GROSS -0.217%/сделку, то есть -0.317% после вычета комиссий за круговую сделку в размере около 0.10% BINANCE. Затем я перебрал всю допустимую область сетки 4x4x3 (sigma_mult 0.7-1.6, удержание 12-24ч, стоп 2.0-5.0): ячейка BEST в 48 даёт +0.118% валового результата = +0.018% чистого результата на сделку (sm=1.0, hold=16, stop=2.0, n=74) — и это уже лучший результат из -48 вариантов, поэтому потолок оптимизатора примерно на 8x ниже нижней границы комиссий по фьючерсам 0.15%, а во всех остальных точках результат отрицательный. Годовая прибыль и убыток меняют знак именно так, как предупреждал разработчик (2020 +5.9%, 2021 +28.5%, 2022 -18.8%, 2023 +2.4%, 2024 -14.2%, 2025 -20.8%); это согласуется с ослаблением эффекта вакуума ликвидности по мере профессионализации маркетмейкинга на крипторынке в выходные. Разбивка песочницы по рыночным режимам (спокойный +1.66%, обычный -5.82%, стрессовый -7.59%) указывает на то же. Выборка также мала: 74 сделок при настройках по умолчанию, 110 при наиболее свободных допустимых настройках (sigma_mult 0.7) за 6.5 лет — это ниже порога примерно в 100 сделок, необходимого, чтобы отличить преимущество от шума; этого порога достигает только один угол сетки. По конструкции частота входов ограничена примерно 348 выходными. Переход на импульсную стратегию не приводит к её спасению (NOT валового результата -0.203%), значит, преимущество отсутствует, а не обращено в противоположную сторону. При разборе бэктеста я сначала проверил бы, не обеспечивают ли 2020-21 прибыльных лет весь результат, поскольку подвыборка за период после -2022 неизменно убыточна.

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

Стратегия игры на затухание движения в условиях вакуума ликвидности по выходным показала отрицательное преимущество на сделку, значительно уступающее затратам на полный цикл сделки на 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 — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.