Перейти до вмісту
Усі стратегії

Стратегії

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/рік), яка долає поріг вимірюваності та звужує оцінку дефльованого коефіцієнта Шарпа, а лише 2 FREE параметри (поріг входу за рухом Азії, множник стопу ATR) мінімізують штраф за дефляцію найкращого з -225 випробувань. Вона також заповнює недопредставлений короткостроковий сегмент (8.6% проти 10%).

Ітерація 2 виправляє помилку Layer-2 дослівно: усі шість синтетичних сценаріїв видавали 'TypeError: _day_of() takes 1 positional argument but 2 were given'. Обгортка Layer-2 перепризначає кожен викликаний атрибут проксі як BOUND метод, тому допоміжні методи @staticmethod _day_of/_hour_of отримували екземпляр як перший аргумент, а бар — як другий. Виправлення: обидва тепер є звичайними методами екземпляра (self, bar) — місця виклику вже використовували self._day_of(bar)/self._hour_of(bar), тож більше нічого не……Показати більшеПоказати менше

Ітерація 2 виправляє помилку Layer-2 дослівно: усі шість синтетичних сценаріїв видавали 'TypeError: _day_of() takes 1 positional argument but 2 were given'. Обгортка Layer-2 перепризначає кожен викликаний атрибут проксі як BOUND метод, тому допоміжні методи @staticmethod _day_of/_hour_of отримували екземпляр як перший аргумент, а бар — як другий. Виправлення: обидва тепер є звичайними методами екземпляра (self, bar) — місця виклику вже використовували self._day_of(bar)/self._hour_of(bar), тож більше нічого не змінилося, і поведінка під рушієм ідентична. По-друге, захисна зміна в тому самому допоміжному шляху: часовий штамп, який повідомляє обгортка (1735690980000), вимірюється в MILLISECONDS, тоді як рушій надає наносекунди; старий код беззастережно ділив на 1e9, що під обгорткою призводило б до злиття кожного синтетичного бару в ту саму годину/день і заморожувало логіку сесії (прихована друга помилка Layer-2, яка проявилася б після усунення TypeError). Нова функція _epoch_secs() нормалізує за порядком величини (ns/us/ms/s) і є нейтральною для реальних наносекундних барів, тому Layer-3 та реальний бектест не постраждали. Форма сигналу, правила входу/виходу, ATR, розмір позиції, імпорти та структура класу залишилися незмінними в порівнянні з кодом, який вже пройшов Layer 1.

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

Реалізація

Безстроковий ф'ючерс BTCUSDT.BINANCE USD-M, бари 1H, внутрішньоденний лонг-шорт лід-лаг між сесіями. Кожного дня UTC прибутковість азійської сесії (00:00-08:00 UTC відкриття-до-закриття) накопичується інкрементально та нормалізується стандартним відхиленням останніх 30 азійських прибутковостей (запасний варіант дисперсії на основі ATR, поки ця історія накопичується), даючи неперервний масштабно-інваріантний z-показник, що повертається кожен бар. У годину відкриття сесії US (13:00 UTC) стратегія відкриває позицію……Показати більшеПоказати менше

Безстроковий ф'ючерс BTCUSDT.BINANCE USD-M, бари 1H, внутрішньоденний лонг-шорт лід-лаг між сесіями. Кожного дня UTC прибутковість азійської сесії (00:00-08:00 UTC відкриття-до-закриття) накопичується інкрементально та нормалізується стандартним відхиленням останніх 30 азійських прибутковостей (запасний варіант дисперсії на основі ATR, поки ця історія накопичується), даючи неперервний масштабно-інваріантний z-показник, що повертається кожен бар. У годину відкриття сесії 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 загальний капітал брутто. Весь стан (ATR, прибутковість сесії, черга дисперсії) становить O(1) на бар; перехід доби прив'язаний до власного часового штампу бару, а не до лічильника барів.

Результати перевірки

CLEAN RESTART 2026-09-04 — історію вердиктів та записи навчання цього запуску було видалено, і його перезапущено з етапу верифікації. Попереднє припинення роботи було спричинене конвеєром (pipeline), а не ринком: обгортка Layer-2 неправильно прив'язувала допоміжні методи @staticmethod (виправлено), QA видавав остаточні вердикти щодо продуктивності на неоптимізованому smoke-тесті (видалено — тепер QA оцінює лише коректність), а тайм-аути пісочниці виникали через нестачу слотів для бектестів (виправлено). Гіпотеза та код стратегії залишилися без змін. Перевіряйте код за його суттю; продуктивність визначається пізніше повним бектестом та оптимізатором.

Додайте _param_bounds = {entry_z: [...], stop_atr_mult: [...]}, що відповідає обмеженням у коді; тримайте всі константи години сесії/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/угоду, коефіцієнт Шарпа -0.15 (CI охоплює нуль), information_ratio -0.76

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

Лише 2020 (+15.3%) є суттєво позитивним; кожен наступний рік — негативний або нульовий (2025 -10.8%), ковзний коефіцієнт Шарпа прямує до -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 timestamp:……Показати більшеПоказати менше

Перевірку не пройдено (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 — це інструмент для дослідження та паперової торгівлі, а не фінансова консультація чи брокер. Результати бектестів і паперової торгівлі є гіпотетичними. Торгівля пов'язана з ризиком втрати коштів.