ETH Повернення міжбіржового базису безстрокових контрактів до середнього (Hyperliquid проти Binance, 4H, довгі й короткі позиції)
Результат: Відхилено
EthCrossVenuePerpBasisMeanReversionLS4H
Підсумок результатів
Ця стратегія мала охопити недостатньо представлені категорії Hyperliquid, міжбіржових стратегій і довгих та коротких позицій за допомогою нейтральної до ринку угоди з базисом ETH між Hyperliquid і Binance, відкриваючи позиції за розбіжності z-оцінки понад 2.0 в очікуванні збіжності. Механічно стратегія працювала бездоганно: 446 угод без збоїв, нейтральність до ринку, бета майже нульова, помилок немає. Проте збитковими були всі місяці, крім одного, і всі три роки; коефіцієнт Шарпа становив -9.85, загальна дохідність — -24.9%, а комісії поглинули 10.1% валового результату. За висновком аналітика з бектестингу, збитки закладені в самому механізмі: угода на двох біржах в обидва боки потребує чотирьох виконань і коштує 0.2–0.4%, що перевищує прибуток від повернення базису ETH у кілька б.п. Тому підвищення порога входу лише зменшує кількість угод, не створюючи математичного очікування. Від стратегії відмовилися на етапі перед оптимізацією після 5 ітерацій, оскільки комісії структурно нівелюють результат і оптимізувати її не варто.
Нейтральний до ринку арбітраж базису між біржами для безстрокових контрактів ETH між Hyperliquid (ETHUSD.HYPERLIQUID) і ф’ючерсами Binance USD-M (ETHUSDT.BINANCE). На двох біржах різний склад учасників (HL переважно торгують досвідчені учасники та роздрібні трейдери з високим ризиком; на Binance USD-M найбільший у світі ринок безстрокових контрактів) і різні цикли фінансування (HL щогодини, Binance — кожні 8 годин). Це створює короткочасні цінові розбіжності між біржами в межах 0.20–0.80%, які зникають за 1–3……Показати більшеПоказати менше
Нейтральний до ринку арбітраж базису між біржами для безстрокових контрактів ETH між Hyperliquid (ETHUSD.HYPERLIQUID) і ф’ючерсами Binance USD-M (ETHUSDT.BINANCE). На двох біржах різний склад учасників (HL переважно торгують досвідчені учасники та роздрібні трейдери з високим ризиком; на Binance USD-M найбільший у світі ринок безстрокових контрактів) і різні цикли фінансування (HL щогодини, Binance — кожні 8 годин). Це створює короткочасні цінові розбіжності між біржами в межах 0.20–0.80%, які зникають за 1–3 чотиригодинних барів, коли арбітражери (маркетмейкери й трейдери базису) закривають розрив. Стратегія визначає, коли відсотковий спред (HL_close - BIN_close) / BIN_close перевищує поріг ковзної z-оцінки |z| > 2.0 на відрізку 60 барів, а тоді відкриває позицію лонг на дешевшій біржі й шорт на дорожчій на однакову номінальну суму. Позицію закривають, коли z-оцінка повертається до |z| < 0.3, або після часового обмеження 4 барів (16 годин). Це NOT класичний графічний патерн, NOT ставка на напрямний імпульс або розворот і NOT отримання доходу від фінансування — це чисте повернення міжбіржового спреду до середнього завдяки структурному механізму арбітражу. Стратегія одночасно орієнтована на недостатньо представлені категорії: біржа HYPERLIQUID (4.1% проти квоти 20%), міжбіржові стратегії (4.6% проти квоти 15%) та довгі й короткі позиції (9.2% проти цільового показника ~45%).
Виправлення ітерації -5 (leverage_set_but_unused). Перевірка сканує збережений код стратегії на згадку про кредитне плече (config.leverage / self._lev / .leverage) і відхиляє його, якщо задано плече>1, але його немає в коді. Я однозначно врахував плече під час розрахунку розміру позиції: position_size() тепер безпосередньо зчитує `leverage = float(self.config.leverage)` і обчислює `notional = equity * exposure_frac * leverage`, а для дзеркальної позиції на Hyperliquid використовується такий самий номінал із плечем — отже, плече 2x подвоює номінал обох позицій (реальний вплив на маржу, а не неактивне налаштування). Це найменша зміна, що проходить перевірку та зберігає всю логіку сигналів, яка раніше проходила перевірку (z-оцінка спреду, вхід і вихід, атомарне керування двома позиціями), а також імпорти. Плече 2.0 доречне, оскільки позиція нейтральна до ринку (однаковий номінал лонгу й шорту), тож 2x на одну позицію зберігає напрямний ризик майже нульовим і водночас робить математичне очікування від базису економічно значущим.
Міжбіржова торгівля на поверненні базису до середнього не окупає комісії: структурно негативне математичне очікування не налаштувати — оптимізувати не варто. Базис безстрокових контрактів ETH на Hyperliquid і Binance становить лише кілька б.п. до ~0.3%, але нейтральна до ринку угода в обидва боки потребує FOUR тейкерських виконань (відкриття й закриття обох позицій), тож мінімальні витрати на двох біржах ~0.2-0.4% перевищують прибуток від повернення спреду. Бектестинг показує стабільні збитки: коефіцієнт Шарпа……Показати більшеПоказати менше
Міжбіржова торгівля на поверненні базису до середнього не окупає комісії: структурно негативне математичне очікування не налаштувати — оптимізувати не варто. Базис безстрокових контрактів ETH на Hyperliquid і Binance становить лише кілька б.п. до ~0.3%, але нейтральна до ринку угода в обидва боки потребує FOUR тейкерських виконань (відкриття й закриття обох позицій), тож мінімальні витрати на двох біржах ~0.2-0.4% перевищують прибуток від повернення спреду. Бектестинг показує стабільні збитки: коефіцієнт Шарпа -9.85, коефіцієнт Сортіно -13.8, profit_factor 0.908, коефіцієнт омега 0.097, очікуваний результат -$103/угоду, total_return -24.9%; збитковими були всі місяці, крім одного, і всі три роки (2024 -7.6%, 2025 -11.3%, 2026 -6.0%); комісії становлять 10.1% від валового результату ($45.9 тис. + $23.4 тис. впливу на ціну). Поточна конфігурація вже відбирає найбільші розбіжності (вхід при z>2 на відрізку 60 барів), але все одно зазнає збитків із часткою виграшних угод 48.4% та avg_win ~ avg_loss. Тому підвищення entry_z або подовження утримання зменшить кількість угод, але не збільшить базис у кілька б.п. понад мінімальні витрати на 4 виконань. Це не помилка в коді (стратегія працює без збоїв, нейтральна до ринку, бета 0.002); також немає рекомендованої міжбіржової спорідненої стратегії, що залишилася на недоступному цільовому інструменті — сам механізм обмежений витратами на комісії. FAILURE PATTERN: повернення до середнього міжбіржового базису безстрокових контрактів на великому активі (ETH HL і Binance) структурно не окупає комісії: торгований міжбіржовий спред (однозначна кількість б.п.) менший за витрати на угоду в обидва боки з 4 виконань, що спричиняє стабільні збитки PF<1; налаштування z-порога цього не змінить.
Реалізація
Нейтральне до ринку повернення міжбіржового базису до середнього для безстрокових контрактів ETH між ETHUSDT.BINANCE (основна) та ETHUSD.HYPERLIQUID (додаткова позиція), бари 4H. Відсотковий спред (HL-BIN)/BIN перетворюється на z-оцінку у ковзному вікні 60 барів; коли |z|>2.0, стратегія відкриває лонг на дешевшій біржі та шорт на дорожчій на однакову номінальну суму, а обидві позиції закриває після збіжності (|z|<0.3) або часового обмеження 4 барів (16 годин). Номінал на одну позицію = капітал * exposure_frac * кредитне плече, тож налаштоване плече 2x справді подвоює валову експозицію.
Результати перевірки
Перевірку не пройдено (leverage_set_but_unused): у конфігурації задано кредитне плече=2.0, але стратегія не враховує його під час розрахунку розміру позиції. Розраховуйте розмір позиції з його урахуванням — номінал = капітал * частка * плече / ціна (зчитуйте self.config.leverage) — або задайте плече=1.0. У поточному вигляді плече не діє, а бектестинг ідентичний 1x.
Огляд бектесту
Шарп
-9,85
Загальна дохідність
-24,94%
Максимальна просадка
27,95%
Усього угод
446
Частка прибуткових
48,4%
Профіт-фактор
0,91
Стратегія механічно коректна й працює без збоїв: 446 нейтральних до ринку угод, синхронізований за часовими позначками SyncedBuffer, справді низька бета (0.002) і кореляція з індексом (0.03), ліквідацій чи помилок немає
Охоплює передбачені недостатньо представлені категорії Hyperliquid, міжбіржових стратегій і довгих та коротких позицій
Стабільні структурні збитки: коефіцієнт Шарпа -9.85, коефіцієнт Сортіно -13.8, profit_factor 0.908, коефіцієнт омега 0.097, очікуваний результат -$103/угоду, total_return -24.9% — збитковими були всі місяці, крім одного, і всі три роки
Витрати на комісії нівелюють результат: угода з міжбіржовим базисом в обидва боки потребує 4 тейкерських виконань (відкриття й закриття позицій на Binance та HL); комісії становлять 10.1% від валового результату ($45.9 тис. комісії + $23.4 тис. впливу на ціну), а базис ETH HL—Binance у кілька б.п. не покриває мінімальних витрат
Відбір найбільших спредів уже не дає результату: при entry_z>2 частка виграшних угод становить 48.4%, а avg_win ~ avg_loss — найбільші розбіжності не сходяться до прибуткового рівня стабільно, тож підвищення порога не створить математичного очікування
Немає помилки в коді й немає рекомендованої спорідненої міжбіржової стратегії — негативне математичне очікування закладене в самому механізмі, а не спричинене виправною помилкою реалізації
Аналіз
Стратегія зазнає збитків, бо торгує спредом, меншим за витрати на угоду в обидва боки. Перш ніж оптимізувати її, потрібні дві зміни: (1) додайте фільтр входу з урахуванням витрат HARD: входьте лише тоді, коли відсотковий спред RAW |(HL-BIN)/BIN| на момент сигналу перевищує поріг, що покриває витрати на угоду в обидва боки (BINANCE ~0.10% + HYPERLIQUID ~0.09% ≈ 0.20%; вимагайте щонайменше ~2x від цієї суми, наприклад > 0.40%). z-оцінка 2.0 для спреду, абсолютна величина якого становить лише кілька б.п., не дає……Показати більшеПоказати менше
Стратегія зазнає збитків, бо торгує спредом, меншим за витрати на угоду в обидва боки. Перш ніж оптимізувати її, потрібні дві зміни: (1) додайте фільтр входу з урахуванням витрат HARD: входьте лише тоді, коли відсотковий спред RAW |(HL-BIN)/BIN| на момент сигналу перевищує поріг, що покриває витрати на угоду в обидва боки (BINANCE ~0.10% + HYPERLIQUID ~0.09% ≈ 0.20%; вимагайте щонайменше ~2x від цієї суми, наприклад > 0.40%). z-оцінка 2.0 для спреду, абсолютна величина якого становить лише кілька б.п., не дає змоги укласти вигідну угоду — фільтруйте за абсолютною величиною спреду, а не лише за z-оцінкою. (2) Переконайтеся, що спред REAL, а не артефакт розбіжності часу барів: записуйте розподіл фактичного спреду на вході. Якщо угоди відкриваються за |спреду| лише 0.05-0.15% (від кількох до ~15 б.п.), передбаченої премії 0.20-0.80% на цій парі немає, а сигнал є часовим шумом між біржами. У такому разі цей механізм не працюватиме на парі ETH HL—Binance за будь-яких z-порогів; переформулюйте стратегію для пари бірж із дійсно ширшим базисом, який повільніше збігається, або відмовтеся від неї. Також зменште частоту угод: обмеження за часом у 4 барів примусово закриває позиції, змушуючи сплачувати комісії без очікування збіжності. Повторіть бектестинг; якщо версія з фільтром витрат і далі показує profit_factor < 1.0, задум не працює, тож не переходьте до оптимізації на 2 годин.
Історія ітерацій
Перевірку не пройдено (рівень 2 — синтетичні сценарії):
Використані параметри: ['exit_z', 'entry_z', 'lookback', 'min_notional', 'exposure_frac', 'time_stop_bars']
Переконайтеся, що __init__ задає всі атрибути з self.parameters.get().
- steady_uptrend: TypeError: FactoryStrategy._bar_ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- steady_downtrend: TypeError: FactoryStrategy._bar_ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- flat_ranging: TypeError: FactoryStrategy._bar_ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- volatility_spike: TypeError: FactoryStrategy._bar_ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- zero_volume: TypeError: FactoryStrategy._bar_ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- price_gap: TypeError: FactoryStrategy._bar_ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
Перевірку не пройдено (рівень 2 — синтетичні сценарії): Використані параметри: ['exit_z', 'entry_z', 'lookback', 'min_notional', 'exposure_frac', 'time_stop_bars'] Переконайтеся, що __init__ задає всі атрибути з self.parameters.get(). - steady_uptrend: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000) - steady_downtrend: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() приймає 1 позиційний аргумент, але передано 2……Показати більшеПоказати менше
Перевірку не пройдено (рівень 2 — синтетичні сценарії):
Використані параметри: ['exit_z', 'entry_z', 'lookback', 'min_notional', 'exposure_frac', 'time_stop_bars']
Переконайтеся, що __init__ задає всі атрибути з self.parameters.get().
- steady_uptrend: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- steady_downtrend: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- flat_ranging: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- volatility_spike: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- zero_volume: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
- price_gap: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() приймає 1 позиційний аргумент, але передано 2 (часова позначка бара: 1735689600000)
Підсумок результатів
Повернення до середнього міжбіржового базису на ліквідному великому активі обмежене витратами: угода на двох біржах потребує чотирьох виконань і коштує більше, ніж спред в одну цифру б.п., який має повернутися до середнього. Підвищення z-порога не створить відсутнього в самому механізмі математичного очікування.
За висновком аналітика з бектестингу перед оптимізацією, від стратегії слід відмовитися: негативне математичне очікування структурне, а не спричинене помилкою в коді. Угода на двох біржах в обидва боки потребує чотирьох тейкерських виконань і коштує ~0.2–0.4%, що перевищує міжбіржовий спред ETH у кілька б.п.; тому стратегію відхилили до оптимізації у 3 етапів.
Нейтральний до ринку арбітраж базису з довгими й короткими позиціями: стратегія обчислювала z-оцінку цінового спреду безстрокових контрактів ETH між Hyperliquid і Binance USD-M і, коли |z| > 2.0, відкривала лонг на дешевшій біржі та шорт на дорожчій, очікуючи, що розбіжність 0.2–0.8% зникне за 1–3 чотиригодинних барів.
Стратегія працювала без збоїв і була нейтральною до ринку (бета 0.002, кореляція з індексом 0.03) упродовж 446 угод, але стабільно зазнавала збитків: загальна дохідність -24.9%, коефіцієнт Шарпа -9.85, коефіцієнт Сортіно -13.8, фактор прибутку 0.908, очікуваний результат -$103/угоду, частка виграшних угод 48.4% за avg_win ≈ avg_loss; комісії становили 10.1% від валового результату ($45.9 тис. комісій + $23.4 тис. впливу на ціну).
Stratmill — це інструмент для дослідження та паперової торгівлі, а не фінансова консультація чи брокер. Результати бектестів і паперової торгівлі є гіпотетичними. Торгівля пов'язана з ризиком втрати коштів.