Розробка алгоритму momentum trading: де ламається стратегія
Імпульсна торгова стратегія на історії майже завжди виглядає як рівна крива вгору: зростання ділянки береться за сигнал, тест підтверджує прибуток.
У реальному контурі той самий алгоритм втрачає половину результату — сигнал приходить пізніше, ніж потрібно, ціна йде на вході та на виході, а ринок встигає змінити режим. Розберемо, де саме ламається імпульсна логіка під час розробки алгоритму momentum trading.
Затримка сигналу. Поки дані доїдуть до розрахункового контуру і сформується заявка, ринок уже пройшов частину руху.
Ми рахуємо ознаки на потоці котирувань, тримаємо історію в пам'яті й оновлюємо стан інкрементально, а розбіжність між ціною сигналу і фактичною ціною входу вимірюємо окремою метрикою.
Просковзування ціни. Модель, яка вважає виконання за останньою угодою, не бачить, що реальний обсяг проходить по кількох рівнях стакана.
Ми будуємо витрати за глибиною стакана, розбиваємо велику заявку на частини й перевіряємо результат на історії з реальними обсягами, а не лише ціною закриття.
Зміна режиму ринку та переоптимізація. Параметри, підібрані на короткому відрізку, ламаються при зміні волатильності й напрямку тренду.
Логіка перевіряється на послідовних вікнах історії, включно з ділянками, що не брали участі в підборі, а фільтри розпізнають зміну режиму й переводять стратегію в паузу замість серії збиткових входів.
Як це влаштовано в роботі — від формалізації гіпотези до промислового контуру з контролем ризиків — розбираємо далі.
Що дає налаштована стратегія: ефект у метриках виконання
Ефект стратегії видно не в кривій дохідності, а в метриках виконання. Розбіжність розрахункової та фактичної ціни входу, частка сигналів, що дійшли до угоди, час реакції на подію ринку та поведінка при обриві зв'язку показують, де алгоритм втрачає результат.
- Точність входів і виходів. Ціна переставляється за станом стакана, а не за таймером: при зміщенні ліквідності заявка зсувається, при зникненні умови — знімається. Частка угод, виконаних не гірше за розрахункову ціну, зростає.
- Швидкість реакції на сигнал. Потік майданчика (Bybit та інших) обробляється локально, назовні йде готове розпорядження. Затримка від події до заявки скорочується із секунд до десятих часток секунди — вхід не зміщується вслід за ціною.
- Зниження просковзування. Великий обсяг розбивається на дочірні заявки, вхід іде всередині спреду, а не за ринком. При розширенні розриву між найкращими цінами вище порога стратегія пропускає вхід.
- Розбіжність розрахункової та фактичної ціни. Угоди звіряються з моделлю виконання; відхилення вище порога позначає сигнал і призупиняє торгівлю до розбору. Видно і середнє відхилення, і його розкид за волатильністю.
- Стійкість до обриву зв'язку. Розрив із майданчиком не залишає висячих заявок: стан позицій відновлюється з журналу, стратегія або наздоганяє ринок, або коректно виходить.
Перевірки знімаються за кожним сигналом, а не за підсумковою дохідністю: із журналу видно, де втрачалася ціна — на вході, виході чи на зв'язку з майданчиком.
Порівняння підходів: сигнальні моделі та режими виконання
Вибір сигнальної моделі та режиму виконання заявок впливає на результат не менше, ніж логіка входу. Імпульсні підходи ловлять короткі рухи й потребують швидкої реакції на сигнал, трендові тримають позицію довше й терпимі до затримки відгуку. Це не взаємозамінні опції, а різні профілі ризику й навантаження на виконання.
Нижче — альтернативи, між якими реально вибирають при проектуванні алгоритму: таблиця показує, де варіант доречний, а де впирається у власні обмеження.
| Варіант | Коли підходить | Обмеження |
|---|---|---|
| Імпульсна модель | Короткі рухи, висока частота угод | Чутлива до затримки та просковзування, хибні входи на боковику |
| Трендова модель | Стійкі рухи, утримання позиції | Пізніший вхід і вихід, перечікує відкат ціни |
| Ринкова заявка | Потрібне виконання за фактом сигналу | Забирає ліквідність зі стакана, просковзування на тонких парах |
| Лімітна заявка | Спокійний ринок, контроль ціни входу | Може не виконатися, рух іде без нас |
| Один майданчик | Проста звірка позицій і балансів | Обмежена ліквідність, залежність від одного майданчика |
| Кілька майданчиків | Потрібна глибина ринку та малий слід у стакані | Складніший облік позицій, розсинхронізація, різні умови виконання |
На практиці режими комбінуються: імпульсне ядро з ринковим входом тримаємо на ліквідних парах, трендове — на лімітних заявках із рознесенням по майданчиках.
Вибрану комбінацію фіксуємо в специфікації алгоритму, щоб обмеження кожного варіанта були видні до запуску, а не спливали на перших угодах.
Етапи впровадження: від аудиту даних до передачі моделі
Моментум-алгоритм — це не набір правил, а контур, що відтворювано працює на живому ринку. Тому робота йде етапами: кожен закривається артефактом, який можна перевірити, а наступний стартує лише після узгодження попереднього.
- Аудит історичних даних. Перевіряємо глибину й якість котирувань, пропуски, зміни тикерів і делістинги, комісії та просковзування. На виході — набір даних, на якому результат відтворюється і в нас, і у вас.
- Перевірка гіпотез. Формулюємо, за рахунок якої поведінки ринку стратегія отримує перевагу, і перевіряємо ідею на різних періодах та інструментах. Гіпотеза, що живе на одному вдалому відрізку, відкидається.
- Складання сигнального контуру. Описуємо правила входу й виходу, розрахунок розміру позиції та обробку затримок між сигналом і угодою.
- Налаштування ризик-контролю. Задаємо ліміти на позицію та денну просадку, правила поведінки при розривах ліквідності, автоматичну зупинку при відхиленні від очікуваного профілю.
- Перевірка в тестовому контурі. Спершу прогін на історичних даних поза навчальним відрізком, потім тривала торгівля в тестовому контурі на реальному ринку. Дивимося просадку та кількість угод, а не лише дохідність.
- Передача моделі та навчання команди. Віддаємо код, конфігурації, документацію та регламент змін, розбираємо з вашими фахівцями типові інциденти й порядок зупинки стратегії.
Далі — супровід: планові перевірки на історичних даних і перегляд параметрів при зміні режиму ринку.
Регламенти, конфігурації та документація моделі
Готовність моделі вимірюється не гарною кривою на історичних даних, а комплектом артефактів, який залишається в замовника. Нижче — що входить у передачу за momentum-стратегією і навіщо кожен елемент потрібен у повсякденній роботі.
- Файли конфігурації стратегії — вікно усереднення, пороги входу й виходу, розмір позиції, перелік торгових пар та активні години. Значення змінюються без правки коду й перезбирання.
- Схема проходження сигналу — від отримання ринкових даних до виставлення та зняття заявки: де рахуються метрики, де спрацьовує фільтр, у який момент рішення йде в торговий контур.
- Політика обмежень — ліміти на позицію та денний обіг, гранична просадка, паузи при аномальній волатильності й автоматична зупинка при розбіжності факту з розрахунком.
- Журнали виконання — заявки, відхилення, затримки та причини пропуску сигналу з відмітками часу. За ними розбирається розбіжність між тестовим і реальним результатом.
- Документація за моделлю — логіка розрахунку, список припущень, межі застосовності та умови, за яких стратегія вимикається.
- Регламент супроводу — порядок дій при зупинці, хто і в які терміни переглядає параметри, як проходить планове оновлення.
- Інструкція з розгортання та відкату — як підняти контур заново, де зберігаються ключі доступу і як повернутися до попередньої конфігурації за один крок.
Комплект самодостатній: супровід можна залишити за нами або передати іншій команді — без зворотної розробки й відновлення логіки за журналами.
Кейс: як зросла стійкість стратегії до просковзування
Замовник — команда, що торгує цифровими активами на кількох майданчиках, включно з Binance.
Моментум-стратегія на історичних даних давала рівне зростання, а на реальному рахунку результат розходився з тестовим настільки, що порівняння втрачало сенс: виконання з'їдало більше, ніж приносив сам сигнал.
Що показували заміри до змін
Розібрали кожну угоду: ціна сигналу, ціна фактичного виконання, стан книги заявок на момент відправлення. Частка входів, закритих гірше за розрахункову ціну, трималася на 34%.
Розбіжність тестового й реального результату — 2,5 раза, і майже весь розрив припадав на різкі рухи: книга порожніла за частки секунди, а заявка продовжувала йти за початковою логікою.
Що змінили
Додали оцінку глибини книги перед постановкою заявки та розбиття великого входу на частини, які не рухають ціну самі по собі. Ввели межу часу життя заявки та зняття залишку, якщо ринок пішов.
Логіку виходу прив'язали до волатильності: при розширенні розриву між найкращими цінами купівлі й продажу стратегія зменшує розмір позиції замість того, щоб наздоганяти ціну. Тестовий контур перезібрали так, щоб він відтворював реальну затримку та неповне виконання.
Після правок частка угод гірше за розрахункову ціну впала з 34% до 7%, а розбіжність тесту й реальності скоротилася до 1,1 раза. На різких рухах просадка перестала виходити за межі, задані ризиком: стратегія або входить меншим обсягом, або пропускає вхід.
Чим відрізняється momentum-стратегія від повернення до середнього?
Імпульсна стратегія ставить на продовження руху, повернення до середнього — на повернення ціни до свого рівня після відхилення. Це протилежні припущення про ринок, і один і той самий сигнал у них трактується дзеркально. Вибір типу стратегії визначає все інше: правила входу, обмеження втрат і час утримання позиції.
Різниця проявляється в станах ринку. У напрямленому русі зі стійкою волатильністю імпульс дає результат: позиція тримається довго, рідкісні угоди перекривають витрати.
У вузькому боковику той самий алгоритм закономірно програє — проколи меж виявляються хибними, серія дрібних збитків з'їдає депозит. Повернення до середнього в такій фазі працює саме за рахунок цих хибних виходів.
Ознака, за якою ми розрізняємо стани, — автокореляція дохідностей на робочому таймфреймі: позитивна вказує на імпульс, негативна — на повернення (ефект описано в академічній літературі, див. Investopedia).
Друга ознака — стиснення розмаху щодо середнього за вікно: воно передвіщає боковик, розширення — тренд. Це і є основа налаштування під волатильність.
| Варіант | Коли підходить | Обмеження |
|---|---|---|
| Імпульсна | Напрямлений рух, позитивна автокореляція дохідностей | Хибні пробої в боковику, затяжні просадки |
| Повернення до середнього | Боковик, вузький діапазон, негативна автокореляція | Тренд без відкатів, збиток на усередненні |
| Режимний перемикач | Часта зміна станів | Запізнення на межі зміни режиму |
Звідси різні обмеження: імпульсній стратегії потрібен широкий стоп і підтягуваний тейк, стратегії повернення до середнього — вузький стоп і ліміт за часом утримання, інакше позиція зависає проти тренду.
Один набір параметрів на обидва режими дає просадку не від сигналу, а від невідповідності налаштувань стану ринку.
У розробці алгоритму momentum trading ми спочатку фіксуємо, у яких станах ринку стратегія зобов'язана заробляти, а в яких — лише не втрачати, і вже під це рахуємо обмеження.
Технічні сумніви: дані, просковзування, доступи
Сумніви щодо алгоритмічної торгівлі майже завжди лежать не в моделі, а в інфраструктурі навколо неї — і перевіряються до запуску, а не після першої просадки. Нижче — відповіді на те, що найчастіше запитують на етапі оцінки.
Чи вистачить історії з майданчика, щоб налаштувати алгоритм?
Біржові свічки майже завжди містять розриви, задвоєні інтервали та «нульові» бари в години низької активності. Тому історію збираємо з кількох незалежних джерел, звіряємо за контрольними точками й позначаємо ділянки, де розбіжність перевищує допустиму.
Окремо чистимо дані за делістингованими інструментами — інакше перевірка показує дохідність там, де торгувати вже нічим.
Які права потрібні до рахунку і чи можна обмежитися читанням?
Для розробки й перевірки достатньо доступу лише на читання. Торговий ключ створюється на окремому субрахунку з лімітом на обсяг і прив'язкою до адреси сервера; виведення коштів за ним заборонено. Ви будь-якої миті відкликаєте ключ, і алгоритм втрачає доступ, не зачіпаючи основний капітал.
Як алгоритм поводиться на низькій ліквідності
Перед виставленням заявки рахується фактична глибина ринку, а не остання ціна. Якщо обсяг позиції перевищує задану частку від доступної ліквідності, вхід пропускається або дробиться. Це прибирає просковзування, яке з'їдає прибуток на тонких інструментах.
Що буде, якщо майданчик змінить правила або інтерфейс
Параметри інструментів, крок ціни, комісії та обмеження щодо заявок винесені в конфігурацію, а не зашиті в логіку. При зміні правил достатньо оновити параметри; невідповідність відгуку ловиться перевіркою і зупиняє торгівлю замість відправлення некоректних заявок.
Як передається код і що залишається у нас
Передаємо репозиторій з історією змін, інструкцію з розгортання, опис параметрів і схему логіки. Проводимо запуск на вашій інфраструктурі разом із вашим інженером — щоб супровід не залежав від нас.
Обговоримо задачу: що потрібно для точної оцінки
Оцінка розробки алгоритму momentum trading спирається на вхідні дані, а не на припущення — зазвичай достатньо однієї розмови та доступу до історичних даних. Нижче те, що ми фіксуємо на обговоренні задачі: без цих деталей будь-який термін буде названо навмання.
- Опис поточної логіки. Як визначаються входи й виходи: набір умов, таймфрейм, реакція на різкі рухи та новини, що вважається скасуванням сигналу.
- Доступна історія. Глибина й частота даних за потрібними інструментами, чи є записи стакана та стрічки угод — від цього залежить, наскільки достовірно перевіримо логіку на минулих періодах.
- Цільові майданчики. Спотові чи строкові ринки, конкретні пари, ліквідність, доступне плече, розмір комісії та типове просковзування.
- Обмеження щодо ризику. Гранична частка капіталу на угоду, допустима просадка за день, максимум одночасних позицій, правила зупинки при серії збитків.
- Інфраструктура та доступи. Де запускається алгоритм, які права потрібні до торгових рахунків, як розділені тестовий і робочий контури, хто відповідає за ключі.
- Моніторинг і супровід. Що змінюємо без зупинки роботи, за який час потрібно дізнатися про збій, хто стежить за системою в неробочі години.
Після цього повертаємося з планом робіт: послідовність етапів, що отримуєте на виході кожного, де точки узгодження та приймання. План уточнюється за фактом — але склад і терміни спираються на ваші дані, а не на загальні міркування.







