Розробка алгоритму mean reversion для криптотрейдингу під ключ

Ручна торгівля на поверненні до середнього втрачає результат через прослизання та зміну режиму ринку. Ми розробляємо mean reversion алгоритм під ключ: від аналізу історії угод до запуску й супроводу. Налаштований контур прибирає ручне звіряння сигналів і прискорює підготовку рішень приблизно вдвічі.
Часті запитання

Чому mean reversion алгоритм ламається на живому ринку

Mean reversion алгоритм будується на припущенні: ціна коливається навколо рівноважного рівня і рано чи пізно до нього повертається. Поки ринок у боковику, модель працює рівно і підтверджується історією.

Ламається все тоді, коли змінюються статистичні властивості ряду: середнє, волатильність і автокореляція вже не ті, за якими розраховувалися параметри.

Це нестаціонарність режиму — тренд перетворює сигнал на повернення у вхід проти руху, і серія таких входів з'їдає накопичений результат.

Друга зона просадки — виконання. Прослизання і роз'їжджаються спреди з'їдають саме ті кілька пунктів, з яких складається заробіток стратегії.

На глибокому ринку ефект непомітний, але вхід у момент розширення волатильності дає розбіжність, і фактична ціна відрізняється від розрахункової. Якщо обсяг набирається частинами, додається помилка середньої за позицією.

Затримка котирувань — третє джерело. Сигнал розраховується за зрізом, який на момент приходу заявки вже застарів: ціна встигає зміститися, і вхід відбувається гірше розрахункового. Чим вища частота угод, тим більша частка прибутку залишається в цьому розриві.

І четверте — хибні сигнали на боковику. При низькій волатильності шум пробиває поріг входу, стратегія набирає багато дрібних позицій, і після комісій їхнє очікування йде в мінус.

Окремо розбіжність історії та реальних угод: тестовий прогін виконує заявки, які на живому ринку не знайшли зустрічної сторони, і показує дохідність, якої не було. Далі розбираємо, як ці ділянки закриваються.

Що дає налаштований контур: ефект у вимірюваних величинах

Контур налаштовується під вимірюваний результат: кожну з п'яти величин нижче ми рахуємо на історії і підтверджуємо на даних, яких модель не бачила.

Частка прибуткових угод

Вхід відкривається, тільки якщо відхилення ціни від середньої перевищує поріг в одиницях волатильності, а не в ціні. Фільтр за ліквідністю відсікає угоди, де витрати з'їдають перевагу.

Глибина просадки

Розмір позиції розраховується від волатильності та ліміту ризику на угоду, тому серія збитків не перетворюється на просадку без виходу. Стоп ставиться там, де сценарій повернення до середньої зламаний.

Витрати на угоду

Комісія, спред і прослизання віднімаються від очікуваного ходу до рішення про вхід. Якщо перевага менша за вартість кола, угода не відкривається — контур не торгує заради активності і не зношує результат об комісію.

Час реакції на зміну режиму

Зміна тренду та боковику відстежується за ковзними оцінками волатильності та автокореляції. Експозиція знижується за кілька свічок, а не після серії збитків — цей лаг з'їдає прибуток у параметрів, підібраних на минулій ділянці історії.

Стійкість до збоїв каналу даних

Обрив потоку або розбіжність котирувань між джерелом і виконанням не призводять до аварійного закриття позицій.

Контур веде основний канал Binance і резервний, звіряє дані і до відновлення працює в обмеженому режимі: нові входи не відкриваються, ризик за відкритими позиціями під контролем.

Режими роботи: потокові сигнали, портфель, ручний контроль

Режим виконання — наслідок будови стратегії, а не налаштування «на смак». Повернення до середнього чутливе до горизонту: чим коротше вікно, тим частіше перераховується сигнал і тим дорожче обходиться пропуск у даних. Нижче — три контури, між якими реально обирають при впровадженні.

Режим Коли підходить Обмеження
Потокові сигнали, один інструмент Ліквідна пара, вузький спред, короткий горизонт Перерахунок на кожному оновленні ціни; чутливий до пропусків у потоці та прослизання на тонкому стакані
Портфельний режим, кошик Кілька корелюючих інструментів, загальний контроль ризику Перерахунок за закриттям інтервалу: швидкі входи губляться, зате немає гонки за одночасним виконанням
Ручне підтвердження угод Виведення стратегії в бій, нові інструменти, нестабільний фон Затримка між сигналом і угодою: частина входів іде за ціною гірше розрахункової

Ліміти за інструментами задаються окремо від логіки входу: частка на інструмент, кількість одночасних позицій, розмір заявки відносно обсягу стакана.

Частота перерахунку сигналів при цьому залишається керованою — від оновлення ціни за однією парою до закриття інтервалу за кошиком, — і змінюється без переписування самої моделі.

Перехід між режимами відбувається без переписування стратегії: спочатку напівавтоматичний контур на обмеженому наборі інструментів, потім портфельний режим, і тільки після стійкої статистики — потоковий за окремими парами.

Як ми будуємо алгоритм: від розбору даних до запуску

Mean reversion тримається на припущенні, що ціна відхиляється від середньої і повертається до неї.

Отже, вся конструкція спирається на якість даних і чесну оцінку відхилення: помилка в котируваннях або підгонка параметрів під історію перетворюють стратегію на генератор хибних входів. Тому йдемо етапами, і кожен наступний починається тільки після перевірки попереднього.

  1. Аудит даних та інфраструктури. Перевіряємо глибину історії, пропуски та дублі, зсуви міток часу, зшивку контрактів при зміні інструменту, доступність біржових інтерфейсів і реальну затримку виконання.
  2. Схема сигналів і фільтрів. Визначаємо, що вважаємо відхиленням від середньої, яке вікно усереднення беремо, які фільтри за волатильністю та ліквідністю відсікають входи в моменти, коли повернення не працює.
  3. Прототип. Збираємо мінімальну версію логіки і рахуємо частоту сигналів, витрати та розподіл результату — до підбору параметрів.
  4. Перевірка на історії та поза вибіркою. Налаштовуємо на одній частині даних, перевіряємо на іншій, яка не брала участі в налаштуванні: дивимося, чи зберігаються параметри при зсуві періоду.
  5. Ризик-контроль і стоп-правила. Задаємо розмір позиції, ліміти на інструмент і на портфель, стоп за часом утримання та за величиною відхилення, обмеження денної просадки.
  6. Запуск в обмеженому обсязі. Виводимо стратегію на мінімальні обсяги і порівнюємо фактичне виконання з модельним: розбіжність за прослизанням і комісіями показує, де модель розходиться з ринком.
  7. Передача. Віддаємо код, конфігурації, регламент перегляду параметрів, моніторинг ключових показників та інструкцію щодо зупинки стратегії.

Артефакти проєкту: конфігурації, правила ризику, документація

Після здачі проєкту у вашої команди залишається не тільки робочий контур, а й повний комплект документації, за яким стратегію можна розвивати та супроводжувати без нас.

Кожен артефакт відповідає на конкретне питання: як відтворити параметри, чому спрацював сигнал, що станеться при розриві з'єднання з біржею.

  • Робоча конфігурація стратегії — значення винесені з коду в окремий файл: вікно усереднення, пороги входу та виходу, розмір позиції, крок виставлення ордерів. Зміна режиму не потребує перезбирання, а кожна правка версіонується і відкочується.
  • Опис сигналів — формалізоване правило словами та формулами: які ряди і на якому горизонті рахуються, як відсікаються викиди, яке відхилення від ковзної середньої вважається входом і за якою умовою позиція закривається при поверненні до середньої.
  • Регламент ризик-контролю — ліміти на позицію та на інструмент, допустима просадка за сесію, порядок зупинки торгів при серії збитків, правила ручного зняття лімітів і хто має на це право.
  • Схема потоків даних — від прийому котирувань до виставлення ордера і запису угоди в журнал: де який компонент, яка затримка вважається допустимою, як система поводиться при обриві потоку та повторному підключенні.
  • Інструкція з супроводу — запуск, планова зупинка, перезапуск після збою, де дивитися журнали та метрики, як оновити параметри і повернутися до попереднього набору.
  • Протокол перевірок — які сценарії проганялися на історичних даних і на демо-контурі, з якими припущеннями щодо комісій і прослизання, за яких умов стратегія зобов'язана стати на паузу.
  • Карта відмов — таблиця «симптом → причина → дія»: розсинхрон позиції з біржею, відмова торгового інтерфейсу, нестача коштів на маржу.

Комплект передається разом із доступами та розбором на созвоні — ваші інженери можуть відтворити розрахунок сигналу і змінити параметри, не звертаючись до нас.

Кейс: метрики до та після на живому портфелі інструментів

Портфель із двох десятків інструментів на Binance вів трейдер вручну: сигнал рахувався за відхиленням ціни від середнього, але вхід залежав від швидкості реакції.

Метрики до та після ми знімали на одному й тому ж відрізку історії — так порівняння не змащується зміною ринкового режиму.

До: ручні сигнали та накопичена розбіжність

Розбіжність розрахункової та фактичної ціни угоди сягала десятих відсотка: поки вхід підтверджувався вручну, котирування йшло, а частина сигналів губилася зовсім.

Просадки траплялися рідко, але кожна з'їдала близько п'ятої частини депозиту — позиція усереднювалася без жорсткого ліміту. Вимушені зупинки займали чверть торгових днів, і приводом був не ринок, а розбір інцидентів і втома; після кожної відновлення розтягувалося на дні.

Після: єдиний контур і передбачувані витрати

Логіку звели в один контур: розрахунок сигналу, перевірка ліквідності, ліміт на позицію, автостоп за просадки. Виконання йде частинами, тому розбіжність розрахункової та фактичної ціни скоротилася в рази і перестала перекривати очікувану дохідність.

Глибина просадки обмежена порогом — замість п'ятої частини депозиту кілька відсотків; частка вимушених зупинок впала до одиниць відсотків, а час відновлення після збою — з днів до годин.

Кожне рішення пишеться в журнал: параметри сигналу, обсяг, фактична ціна, причина виходу. За ним видно, де модель помиляється, і відкат до попереднього набору правил займає хвилини, а не нову торгову сесію.

Чим повернення до середнього відрізняється від слідування тренду

Повернення до середнього заробляє на відхиленні ціни від рівноважного рівня і подальшому сходженні: у дохідностей з'являється негативна автокореляція, а спред поводиться стаціонарно.

Слідування тренду — зворотна ставка: вхід за пробоєм і утримання позиції, поки спрямований рух зберігається.

Режим ринку вирішує, який підхід взагалі має право торгувати. У боковику трендові входи збирають хибні пробої та дрібні стопи, а на розгоні без відкатів повертальний контур втрачає, бо рівноважний рівень від'їжджає разом з ціною — цей ефект формалізовано в Avellaneda–Lee.

Підхід Робочий режим Де втрачає
Повернення до середнього Боковик, стаціонарний спред Тренд: середня зміщується, стопи йдуть підряд
Слідування тренду Пробій після стиснення волатильності Пила та хибні пробої
Комбінований контур Зміна режиму за волатильністю Помилка класифікатора на межі

Сенс комбінування — взаємне гасіння помилок. Просадки контурів припадають на різні фази ринку, кореляція дохідностей нижча за одиницю, тому підсумкова крива рівніша, а глибина просадки менша, ніж у кожного підходу окремо.

Перемикання будуємо за волатильністю та стаціонарністю: тест на стаціонарність спреду, показник Херста, реалізована волатильність та її перцентиль, час напіврозпаду відхилення.

Щоб класифікатор не перемикався на кожному коливанні, вводимо гістерезис і підтвердження за кількома закритими барами, а розмір позиції масштабуємо обернено волатильності — ризик рахує один модуль на обидва контури.

Технічні сумніви: прослизання, ліквідність, збої каналу

Прослизання та ліквідність перевіряються на історичних зрізах, але найдорожчий клас збоїв — неповні дані. Коли потік котирувань приходить із пропусками або затримкою, алгоритм продовжує рахувати за застарілим станом і видає сигнал на ціні, якої вже немає.

Тому в mean reversion алгоритм закладаємо три контури захисту: перевірку повноти вхідного ряду перед кожним розрахунком, обмеження частоти угод на інструмент і журналювання рішень — кожна дія фіксується разом із вхідними значеннями та причиною спрацювання або відмови.

Що робить стратегія при обриві каналу даних?

Потік позначається як неактуальний, і алгоритм переходить у режим спостереження: відкриті позиції утримуються за заздалегідь заданими правилами виходу, нові угоди не відкриваються.

Після відновлення каналу пропущений інтервал звіряється з незалежним джерелом, і тільки потім торгівля відновлюється.

Як перевіряєте стійкість до зміни режиму ринку?

Стратегія проганяється на відрізках із різною волатильністю та різною ліквідністю, включаючи ділянки різких рухів. Дивимося не на результат одного вдалого періоду, а на розкид результатів і глибину просадок: якщо параметри підігнані під один режим, це видно відразу.

Навіщо обмежувати частоту угод?

Обмеження захищає від серії хибних сигналів на рваному ринку та від зростання витрат на комісіях і прослизанні. Ліміт задається на інструмент і на період, а його спрацювання потрапляє в журнал — за ним видно, де стратегія вперлася в стелю, а де відпрацювала штатно.

Що потрапляє в журнал рішень?

Вхідні значення на момент розрахунку, ознака повноти даних, версія правил, сам сигнал і причина його відхилення, якщо угода не відкрита. Цього достатньо, щоб відновити логіку роботи за будь-який період і відрізнити помилку алгоритму від зміни ринку.

Обговоримо задачу: інструменти, горизонт, правила ризику

Щоб повернутися з оцінкою та планом робіт, а не із загальними словами, нам потрібні вводні щодо вашої задачі. Нижче — що надіслати: за цими пунктами ми рахуємо обсяг, підбираємо вікно розрахунку і закладаємо поведінку стратегії на реальних витратах.

  • Інструменти та майданчики. Де торгуємо — спот чи строковий ринок, які пари, через які програмні інтерфейси йде доступ і чи є ліміти за частотою звернень.
  • Дані. Яка історія потрібна і що вже є: вивантаження або потоковий канал, часовий пояс міток часу, глибина та повнота записів. Якщо історії не вистачає, підкажемо джерело.
  • Горизонт утримання. Типовий час життя позиції — хвилини, години або дні. Від цього залежить вікно розрахунку середнього і допустима затримка виконання.
  • Обмеження за ризиком. Граничний розмір позиції, максимальна просадка, за якої стратегія зупиняється, кількість одночасних позицій і поведінка при розриві зв'язку.
  • Витрати виконання. Комісії майданчика, очікуване прослизання, мінімальний крок ціни та обсягу — закладаємо в перевірку, щоб сигнали не «з'їдалися» витратами.
  • Точки підключення до контуру. Як алгоритм отримує дані та надсилає заявки: окремий рахунок, ключі з обмеженими правами, чи є тестовий контур майданчика.
  • Контроль і звітність. Що хочете бачити в журналі: угоди, відхилені заявки, причина зупинки стратегії, вивантаження підсумків за період.

Опишіть задачу у вільній формі — навіть чернеткою. Ми уточнимо необхідне, повернемося з оцінкою, планом робіт і переліком того, що потрібно з вашого боку для запуску.

Напрямки блокчейн-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139