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

Стратегии

BTC Перенос межсессионного моментума — лонг-шорт, один инструмент OHLCV: Направление движения сессии ASIA предсказывает движение сессии US; торговать сессией US в этом направлении ONLY, когда движение в Азии крупное, без позиций на ночь (BINANCE BTCUSDT USD-M, бары 1H, внутридневная, 2-параметровая)

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

BtcAsiaToUsSessionCarryoverLS

Хорошо измерено: 594 сделок за полную историю 2020-2026 1H, сбалансированные лонги/шорты (293/301), чистое исполнение (594 сигналов, 594 отправлено, без потерь)

Гипотеза

LONG-SHORT, SINGLE-INSTRUMENT, чисто OHLCV стратегия INTRADAY на бессрочном контракте BTCUSDT.BINANCE USD-M, принадлежащая к семейству, действительно отличному от всего, что находится в ожидании или мертво здесь — это NOT трендовая/пробойная стратегия (двойной TF моментум, SuperTrend, Donchian, ORB), NOT стратегия возврата к среднему/фейд (обе мертвы), и NOT сигнал на основе дополнительного источника данных (все чистые убыточники). Она эксплуатирует внутридневную SESSION LEAD-LAG: направленный тон, заданный во……Показать большеСвернуть

LONG-SHORT, SINGLE-INSTRUMENT, чисто OHLCV стратегия INTRADAY на бессрочном контракте BTCUSDT.BINANCE USD-M, принадлежащая к семейству, действительно отличному от всего, что находится в ожидании или мертво здесь — это NOT трендовая/пробойная стратегия (двойной TF моментум, SuperTrend, Donchian, ORB), NOT стратегия возврата к среднему/фейд (обе мертвы), и NOT сигнал на основе дополнительного источника данных (все чистые убыточники). Она эксплуатирует внутридневную SESSION LEAD-LAG: направленный тон, заданный во время низколиквидной сессии ASIA (00:00-08:00 UTC), как правило PERSIST переносится в более ликвидную сессию US (13:00-21:00 UTC), поскольку поток US/институциональных участников продолжает движение, а не разворачивает его. Каждый UTC день измеряются знак и величина доходности азиатской сессии; когда движение в Азии LARGE (реальный направленный сигнал, а не шум), стратегия входит в сессию US в направлении SAME и удерживает позицию только в течение этой сессии, уходя в FLAT на ночь (без экспозиции по финансированию, без ночного гэпа, без многодневного трендового риска). Это отличается от ожидающего пробоя диапазона открытия BTC (который торгует диапазон BREAKOUT первых часов) — здесь нет пробоя; это направленное CARRYOVER уже установившегося движения сессии в более позднюю, отдельную сессию. Стратегия сохраняет выживаемые инварианты (один инструмент, чисто OHLCV с полной историей 2020-2026 1H, лонг-шорт, без дополнительного источника данных согласно уроку с чистыми убыточниками, без второй ноги согласно L69) и построена под статистические критерии: почти ежедневная периодичность даёт LARGE число сделок (>100/год), что проходит проверку измеримости и уточняет дефлированную оценку Sharpe, а всего 2 FREE параметра (порог входа по движению Азии, множитель стопа ATR) минимизируют штраф за дефляцию по лучшему из -225 прогонов. Она также заполняет недопредставленную категорию коротких горизонтов (8.6% против 10%).

Итерация 2 устраняет ошибку Layer-2 дословно: все шесть синтетических сценариев вызывали «TypeError: _day_of() takes 1 positional argument but 2 were given». Harness Layer-2 перепривязывает каждый вызываемый атрибут прокси как BOUND-метод, поэтому вспомогательные функции @staticmethod _day_of/_hour_of получали экземпляр в качестве первого аргумента и бар в качестве второго. Исправление: обе теперь являются обычными методами экземпляра (self, bar) — места вызова уже использовали……Показать большеСвернуть

Итерация 2 устраняет ошибку Layer-2 дословно: все шесть синтетических сценариев вызывали «TypeError: _day_of() takes 1 positional argument but 2 were given». Harness Layer-2 перепривязывает каждый вызываемый атрибут прокси как BOUND-метод, поэтому вспомогательные функции @staticmethod _day_of/_hour_of получали экземпляр в качестве первого аргумента и бар в качестве второго. Исправление: обе теперь являются обычными методами экземпляра (self, bar) — места вызова уже использовали self._day_of(bar)/self._hour_of(bar), так что больше ничего не изменилось, а поведение в движке идентично. Второе, защитное изменение в том же пути вспомогательных функций: временная метка, сообщаемая harness'ом (1735690980000), выражена в MILLISECONDS, тогда как движок предоставляет наносекунды; старый код безусловно делил на 1e9, что под harness'ом схлопывало бы каждый синтетический бар в один и тот же час/день и замораживало логику сессии (скрытая вторая ошибка Layer-2, которая проявилась бы после устранения TypeError). Новая функция _epoch_secs() нормализует по порядку величины (нс/мкс/мс/с) и является no-op для реальных наносекундных баров, поэтому Layer-3 и реальный бэктест не затронуты. Форма сигнала, правила входа/выхода, ATR, размер позиции, импорты и структура класса в остальном не изменились по сравнению с кодом, который уже прошёл Layer 1.

Предпосылка с отрицательным математическим ожиданием на хорошо измеренной выборке за всю историю. За 594 сделок по 2020-2026 перенос сессии Asia->US приносит убыток: profit_factor 0.937 (<1), total_return -9.81%, ожидание -$17.34/сделка, Sharpe -0.15 с CI [-0.760, 0.458], охватывающим ноль, information_ratio -0.76. Единственный положительный год — 2020 (+15.3%); каждый год после этого отрицательный или нулевой (2021 -8.1, 2022 -5.8, 2025 -10.8), причём скользящий Sharpe стремится к -8.3 к 2026 — гипотеза «крупное движение в Азии предсказывает движение US» попросту не подтверждается. Кроме того, стратегия находится на грани по комиссиям: avg_trade_return_pct 0.110% ниже минимального порога комиссии Binance 0.15% USD-M (L22). При всего 2 свободных параметрах и чистo отрицательном направленном преимуществе тюнинг не способен изменить знак несуществующего преимущества. Это характерная сигнатура чистого убыточника fee_edge/no_edge — не стоит 2 часов оптимизации.

Реализация

Бессрочный контракт BTCUSDT.BINANCE USD-M, бары 1H, внутридневное опережение/запаздывание между сессиями лонг-шорт. Каждый UTC день доходность азиатской сессии (00:00-08:00 UTC от открытия до закрытия) накапливается инкрементально и нормализуется стандартным отклонением последних 30 азиатских доходностей (резервный расчёт разброса на основе ATR на время «разогрева» этой истории), давая непрерывный масштабно-инвариантный z-score, возвращаемый на каждом баре. В час открытия сессии US (13:00 UTC) стратегия входит в……Показать большеСвернуть

Бессрочный контракт BTCUSDT.BINANCE USD-M, бары 1H, внутридневное опережение/запаздывание между сессиями лонг-шорт. Каждый UTC день доходность азиатской сессии (00:00-08:00 UTC от открытия до закрытия) накапливается инкрементально и нормализуется стандартным отклонением последних 30 азиатских доходностей (резервный расчёт разброса на основе ATR на время «разогрева» этой истории), давая непрерывный масштабно-инвариантный z-score, возвращаемый на каждом баре. В час открытия сессии US (13:00 UTC) стратегия входит в направлении SAME, совпадающем с движением Азии, когда |z| >= entry_z, не более одного входа в календарный день. Выход происходит в час закрытия сессии US (20:00 UTC), поэтому книга FLAT на ночь (без финансирования, без риска гэпа), либо раньше по стопу на основе ATR (stop_atr_mult x ATR, с нижним порогом min_stop_pct). Размер позиции рискует risk_frac капитала на дистанции до стопа, с ограничением до max_notional_frac x капитала (gross). Всё состояние (ATR, доходность сессии, очередь разброса) имеет сложность O(1) на бар; переход дня привязан к собственной временной метке бара, а не к счётчику баров.

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

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

Добавьте _param_bounds = {entry_z: [...], stop_atr_mult: [...]}, соответствующие ограничениям (clamps) в коде; не включайте туда константы часов сессии/ATR/риска.

Конфигурация объявляет NO _param_bounds, несмотря на то что гипотеза опирается на «всего 2 FREE параметра» для минимизации штрафа за дефляцию по лучшему из -225 прогонов. Без этого у оптимизатора нет явной поверхности, привязанной к {entry_z, stop_atr_mult}, что подрывает дисциплину 2-параметрового подхода. Не является дефектом корректности.

Установите us_exit_hour=21 на весь период, либо задокументируйте 20:00 как задуманное.

Гипотеза называет сессию US 13:00-21:00 UTC, но us_exit_hour — 20, что заставляет выходить в кэш на час раньше. Незначительно, не меняет механизм или инвариант отсутствия позиций на ночь.

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

Шарп
-0,15
Общая доходность
-9,81%
Максимальная просадка
23,40%
Всего сделок
594
Доля прибыльных
44,8%
Профит-фактор
0,94

Хорошо измерено: 594 сделок за полную историю 2020-2026 1H, сбалансированные лонги/шорты (293/301), чистое исполнение (594 сигналов, 594 отправлено, без потерь)

Действительно отличное семейство внутридневного опережения/запаздывания между сессиями; без позиций на ночь, низкая корреляция с бенчмарком (0.025), нет зависимости от дополнительного источника данных

Чистый убыточник: profit_factor 0.937 (<1), total_return -9.81%, ожидание -$17.34/сделка, Sharpe -0.15 (CI охватывает ноль), information_ratio -0.76

avg_trade_return_pct 0.110% ниже минимального порога комиссии Binance 0.15% USD-M — на грани по комиссиям даже без учёта отрицательного ожидания

Только 2020 (+15.3%) значимо положителен; каждый последующий год отрицательный или нулевой (2025 -10.8%), скользящий Sharpe стремится к -8.3 к 2026 — у предпосылки переноса сессии нет устойчивого преимущества

return_kurtosis 78.6 — неровная лента (например, день -6.07% на 2023-08-29), а не устойчивое преимущество

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

Верификация не пройдена (Layer 2 — синтетические сценарии): Использованные параметры: ['entry_z', 'min_bars', 'risk_frac', 'atr_period', 'min_notional', 'min_stop_pct', 'min_vol_days', 'us_exit_hour', 'asia_end_hour', 'stop_atr_mult', 'us_entry_hour', 'asia_start_hour', 'max_notional_frac', 'vol_lookback_days'] Проверьте, что __init__ устанавливает все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bar……Показать большеСвернуть

Верификация не пройдена (Layer 2 — синтетические сценарии): Использованные параметры: ['entry_z', 'min_bars', 'risk_frac', 'atr_period', 'min_notional', 'min_stop_pct', 'min_vol_days', 'us_exit_hour', 'asia_end_hour', 'stop_atr_mult', 'us_entry_hour', 'asia_start_hour', 'max_notional_frac', 'vol_lookback_days'] Проверьте, что __init__ устанавливает все атрибуты из self.parameters.get(). - steady_uptrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bar timestamp: 1735690980000) - steady_downtrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bar timestamp: 1735690980000) - flat_ranging: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bar timestamp: 1735690980000) - volatility_spike: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bar timestamp: 1735690980000) - zero_volume: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bar timestamp: 1735690980000) - price_gap: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bar timestamp: 1735690980000)

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