Чому RL-агент для трейдингу ламається на живому ринку
Агент на A2C/A3C навчається максимізувати середню винагороду за траєкторіями з навчальної вибірки. Ринок при цьому нестаціонарний: змінюються режим волатильності, ліквідність і склад учасників, а історія містить лише одну реалізацію процесу.
Політика, навчена під конкретний режим, на новому поводиться як випадкова — звідси провал RL-агента в трейдингу під час запуску в реальному контурі.
Найдорожче коштує розбіжність тесту й реальної торгівлі за витратами виконання.
Середовище рахує угоду за ціною закриття свічки, а реальний контур додає спред, комісію та прослизання, плюс затримку до виконання — відтворити це можна лише за логікою конкретного брокера, чи то біржовий доступ, чи термінал на кшталт MetaTrader.
Якщо середній прибуток на угоду порівнянний із тертям, стратегія йде в мінус без жодної помилки в моделі.
Ще одне джерело — перенавчання на історичних даних: відбір ознак за всім рядом, нормування, пораховане через майбутнє, підбір параметрів на тому самому відрізку, що й контроль. Гарна крива частіше означає витік інформації, ніж знайдену закономірність.
Лікується чесною схемою валідації: ковзне вікно без перекриття, окремий період на контроль, перевірка на зміні режиму.
На реальному рахунку це дає нестабільну дохідність: серія плюсових угод змінюється просіданням, яке агент не розпізнає. Розбираємо, як це закривається.
Що дає навчання з підкріпленням: ефект у метриках
Ефект навчання з підкріпленням вимірюємо не дохідністю у вакуумі, а стійкістю поведінки агента.
Асинхронні методи актор-критик, що сягають робіт DeepMind, дають змогу проганяти десятки копій середовища з різними ринковими умовами паралельно — агент навчається класу режимів, а не однієї вдалої траєкторії. Зміна тренду на флет або зростання волатильності перестає вимагати переписування правил з нуля.
Стійкість стратегії перевіряємо на відкладених періодах: частка сценаріїв, де поведінка збіглася з очікуваною, динаміка коефіцієнта Шарпа, кількість порушень ліміту за розміром позиції.
Рандомізація стартових умов і комісій не дає політиці запам’ятати конкретну історію — розбіжність між навчанням і перевіркою падає до одиниць відсотків.
Контроль просідання вбудований у винагороду: штраф за ризик, обмеження частки капіталу в позиції, обов’язкові стоп-умови. Максимальне просідання стає задаваним параметром і перевіряється стрес-прогонами на кризових відрізках, а не залишається наслідком удачі на історії.
Зменшення ручних правок — прямий наслідок: зміна режиму ринку опрацьовується донавчанням політики, а не правкою коду, цикл займає хвилини, метрики порівнюються до і після.
Адаптація до режиму тримається на ансамблі середовищ і детермінованому застосуванні політики — однакові вхідні дані дають однакове рішення, тому результат відтворюваний у тестовому контурі.
У звіті фіксуємо кількість ручних втручань за місяць, максимальне просідання, частку часу поза ринком і час донавчання.
Порівняння підходів: A2C, A3C і навчання на історії
Вибір між A2C, A3C і навчанням на історії — це вибір між стійкістю градієнта, швидкістю набору досвіду та ціною перевірки гіпотези.
Синхронний актор-критик оновлює політику за узгодженим кроком усіх середовищ, асинхронний збирає досвід незалежними копіями агента, а офлайн-датасет дає стартову політику взагалі без звернення до середовища.
На практиці ці режими не конкурують, а стоять в одному конвеєрі: котирування прогрівають політику, симулятор уточнює поведінку, а вибір між синхронним і асинхронним навчанням визначається тим, скільки паралельних середовищ ви реально можете тримати й наскільки критична відтворюваність запуску.
| Режим | Коли підходить | Де впирається |
|---|---|---|
| A2C, синхронне навчання | Потрібен рівний градієнт і повторюваний запуск; є кілька паралельних середовищ | Кожен крок чекає найповільнішу копію; масштабується гірше за асинхронне |
| A3C, асинхронне навчання | Багато вузлів, потрібен швидкий набір досвіду з різних станів ринку | Застарілі градієнти від копій, що відстали, знижують стійкість, налагодження складніше |
| Навчання на історії | Немає доступу до середовища; потрібен прогрів політики й перевірка гіпотез на довгому ряді котирувань | Впирається в обсяг вибірки: рідкісні режими ринку представлені слабко, зворотного зв’язку немає |
| Симулятор на історичних даних | Потрібна перевірка з урахуванням комісій і прослизання перед реальними угодами | Реалізм моделі виконання визначає, чи перенесеться результат у бойовий контур |
Тому обсяг історичних даних — не самоціль, а обмежувач: що рідше потрібний режим ринку трапляється у вибірці, то дорожче підтвердити, що агент навчився саме того, що ми маємо на увазі.
Етапи впровадження: від аудиту даних до передавання моделі
Порядок робіт фіксуємо до старту: агент навчання з підкріпленням чутливий до якості історичних даних і до того, як описане середовище виконання.
Помилка в розмітці угод або у функції винагороди проявляється не на навчанні, а на реальних угодах — тому кожен етап закриваємо перевірюваним артефактом, а не усним «готово».
- Аудит даних. Зводимо історію котирувань і угод за таймфреймами, шукаємо пропуски, дублікати, зсуви часу та ознаки витоку майбутніх значень. На виході — очищений набір, опис розривів і вердикт про придатність періоду для навчання.
- Схема навчання. Узгоджуємо простір дій (вхід, вихід, розмір позиції), функцію винагороди з урахуванням комісій і прослизання, довжину епізоду та набір ознак. Тут же визначаємо, що вважаємо успіхом: дохідність з поправкою на ризик, а не абсолютний прибуток.
- Збирання середовища. Збираємо відтворюване середовище: закріплені залежності, емулятор брокера із затримками виконання, журналювання прогонів. Будь-який запуск повторюється з однієї конфігурації в репозиторії.
- Навчання й налаштування. Проганяємо варіанти A2C/A3C, порівнюємо за стійкістю кривої та кількістю епізодів до збіжності, відбираємо конфігурацію без перенавчання на окремі режими ринку.
- Перевірка на відкладеному періоді. Тестуємо ковзним вікном: навчання на одному відрізку, перевірка на наступному, якого модель не бачила. Дивимося просідання, поведінку в тренді та у флеті, а не одну підсумкову цифру.
- Передавання моделі й супровід. Віддаємо код, ваги, конфігурації, звіт про перевірки та інструкцію з перенавчання. Описуємо моніторинг деградації й порядок відкату на попередню версію.
Етапи йдуть послідовно, але з поверненнями: якщо аудит даних виявив витік, схема навчання перезбирається до наступного запуску.
Артефакти впровадження: конфігурації, моделі та регламенти
Після впровадження у замовника залишається не «навчена модель», а відтворюваний контур: за ним агента можна перенавчити, відкотити й передати іншій команді без авторів.
Комплект фіксуємо в акті приймання, і список закритий — якщо пункт не відтворюється на вашому стенді, роботу не прийнято.
- Файли конфігурації — гіперпараметри навчання, склад інструментів, вікно ознак, ліміти ризику та пороги автостопу; версіонуються разом із кодом.
- Опис схеми навчання — кількість паралельних середовищ, частота синхронізації ваг, критерії зупинки та правила відбору контрольних точок моделі.
- Журнали прогонів — метрики за епохами, збережені ваги, звіт про дохідність і просідання на відкладеному періоді.
- Розмежування доступу — окремі ролі на навчання, виконання сигналів і зміну ризик-лімітів; ключі до торгового шлюзу зберігаються в секрет-сховищі, а не в репозиторії.
- Інструкції з експлуатації — порядок запуску, режим «лише сигнали», відкат на попередню контрольну точку однією командою.
- Регламент перенавчання — тригери (дрейф розподілу ознак, деградація метрик), періодичність і порядок введення нової версії в роботу.
- Документація щодо даних — словник ознак, джерела, правила обробки пропусків і корпоративних дій.
Сенс переліку не у звітності: за цими файлами нова команда відтворює навчання й продовжує роботу без нас.
Кейс: портфель інструментів, метрики до та після впровадження
До: політика на одному активі
У цьому кейсі — портфель із дванадцяти інструментів: акції, ф’ючерси на індекс, валютні пари. Агент навчався на одному активі, і під час перенесення політика йшла в перекіс: до 70% ваги забирав найліквідніший інструмент. На відкладеному відрізку історії Шарп тримався близько 0.6, максимальне просідання сягало 28%.
Після: що змінили і як рахували
Зібрали спільну політику на весь портфель: у стан додали ознаки самого інструмента — клас, ліквідність, кореляцію з індексом, — а винагороду зробили скоригованою на ризик зі штрафом за концентрацію.
Навчали сімейством актор-критик (A2C/A3C): кілька паралельних середовищ проганяли різні ділянки історії та режими волатильності, котирування й книги заявок брали з Interactive Brokers.
Метрики рахували лише на відкладеному відрізку й порівнювали з рівноваженим портфелем. Шарп 0.6 → 1.3, максимальне просідання 28% → 11%, частка часу в ринку впала з 85% до 60% — агент частіше чекав. Внесок інструментів вирівнявся: жоден не дає більше п’ятої частини результату.
Окремо прогнали стрес-сценарії: розрив ліквідності, геп на відкритті, затяжний боковик, трендовий розворот. На кожному агент втрачав менше за базову стратегію, а відновлення займало менше часу.
Чим RL-агент для трейдингу відрізняється від стратегії на правилах
Стратегія на правилах — це явно записана умова: якщо ціна пробила рівень, волатильність нижча за поріг, а позиція порожня, купуємо. Логіку можна прочитати в коді й пояснити ризик-комітету.
Навчання з підкріпленням прибирає умову й ставить на її місце політику: агент бачить стан ринку й рахунку, вибирає дію та отримує винагороду. Так в алгоритмічній торгівлі з’являється модель, яка сама визначає, які ознаки значущі, а які — шум.
Формально задача описується як марковський процес. Стан — вікно ринкових ознак, поточна позиція, нереалізований результат і вільні кошти. Дії — вхід, утримання, вихід і розмір позиції. Винагорода — дохідність кроку з поправкою на просідання та витрати.
Агент на A2C/A3C навчається через актора-критика: актор пропонує розподіл дій, критик оцінює перспективність стану, градієнт править політику. Готового «якщо — то» в рішенні немає: правило витіснене параметрами, налаштованими на даних.
Межа найпомітніша на нових даних. Набір умов, підібраний на історії, ламається разом зі зміною режиму: ті самі пороги в тренді та в боковику дають різну якість, а переписати їх можна лише руками. Агент переносить поведінку, якщо ознаки описують режим, а не конкретний відрізок.
Але гнучкість обертається своїми відмовами: політика вироджується в постійне утримання, коли винагорода не враховує витрати, або підганяється під історичні аномалії.
Тому навчання йде в парі з дисципліною перевірки. Винагорода включає комісію та прослизання, якість вимірюється на послідовних часових відрізках, а не на перемішаній вибірці, окремо рахується деградація політики під час зміни режиму.
Робоча схема — гібрид, а не заміна: агент ухвалює рішення, жорсткі правила залишаються лімітами за позицією, просіданням і частотою угод.
Технічні сумніви: перенавчання, прослизання, ризик
Перед стартом інженерні команди замовника ставлять той самий набір питань: як переконатися, що модель не підігнана під минуле, як ураховано реальне виконання заявок і хто відповідає за ризик під час збою.
Нижче — відповіді, які ми перевіряємо на прототипі до промислового запуску, а не декларуємо на словах.
Як відрізнити робочу модель від перенавченої?
Ділимо історію за часом, а не випадково: навчання йде на одному відрізку, перевірка — на наступному, якого агент не бачив. Дивимося не на підсумкову дохідність, а на розрив між цими відрізками та на поведінку під час зміни режиму ринку.
Якщо результат тримається за завищених витрат виконання і на інструментах, що не брали участі в навчанні, — модель стійка. Якщо розсипається, повертаємося до набору ознак і регуляризації, а не «докручуємо» її підгонкою.
Як ураховується прослизання та реальне виконання?
Симулятор виконує заявку не за ціною закриття, а з урахуванням спреду, комісії та затримки між рішенням і потраплянням ордера в книгу заявок. Додаємо випадкову затримку й обмеження за доступним обсягом, щоб агент не розраховував на повне заповнення. Політика, яка вигідна лише на папері, відсіюється ще на етапі перевірки.
Що робити, якщо історія угод коротка?
Коротка історія — обмеження статистики, а не привід чекати. Розширюємо вибірку за рахунок інших інструментів і таймфреймів, перевіряємо в ковзному вікні та на синтетичних сценаріях.
Чесно фіксуємо, що за малої вибірки в частини висновків ширший розкид, і на старті робимо ставку на контроль ризику та мінімальний обсяг позиції.
Хто і як контролює ризик?
Ризик живе поза агентом. Окремий шар правил обмежує розмір позиції, денне просідання, кількість угод і утримання через новини та вихідні.
Агент пропонує дію, але ордер проходить через модуль контролю: у разі спрацювання ліміту торгівля зупиняється, а не продовжується в надії відігратися.
Як відбувається підключення до торгової системи?
Через програмний інтерфейс брокера з окремим ключем і урізаними правами — без виведення коштів. Спочатку йде тривалий прогін у режимі спостереження: агент формує сигнали, ми звіряємо їх із фактичними цінами та реальними затримками.
Лише після розходження в межах допуску вмикаємо мінімальний обсяг. Зворотне перемикання в ручний режим — однією дією.
Обговоримо задачу й повернемося з оцінкою та планом впровадження
Щоб повернутися з оцінкою проєкту та планом впровадження, а не із загальними словами, нам потрібна ваша картина ринку й інфраструктури. Нижче — мінімальний набір, якого зазвичай достатньо; решту уточнимо на дзвінку й за потреби запитаємо точково.
- Дані: інструмент, таймфрейм, глибина історії, тік-дані або бари, джерело вивантаження та чи є пропуски в рядах.
- Обмеження торгівлі: допустимий ризик на угоду, граничне просідання, ліміти за позицією, періоди, коли торгівля не ведеться.
- Контур виконання: власні сервери або хмара, наявність тестового режиму, як улаштований шлюз до брокера і хто керує доступами.
- Що вже працює вручну: правила входу й виходу, які дають результат зараз, — на них схема навчання спирається надійніше, ніж на сліпий перебір.
- Критерії приймання: за якою метрикою ви вважаєте модель успішною — дохідність з поправкою на ризик, частка прибуткових угод, поведінка на падаючому ринку.
- Відповідальні з вашого боку: хто відповідає за дані, хто приймає модель, хто узгоджує ризик-рамки.
Повернемося зі схемою навчання (середовище, набір ознак, функція винагороди, перевірка на відрізку, що не брав участі в навчанні), планом впровадження за етапами з точками контролю та регламентом супроводу моделі — моніторинг дрейфу, перенавчання, ручна зупинка торгівлі.
Опишіть задачу — повернемося з оцінкою та планом.







