Створення RL-агента для трейдингу на A2C/A3C

Ринок змінюється швидше, ніж встигають переписувати торгові правила: стратегія на фіксованих умовах втрачає дохідність, коли режим ринку змінюється. Ми розробляємо RL-агент для трейдингу під ключ — від підготовки історії угод до передачі навченої моделі та регламентів супроводу. Ви отримуєте рішення, що адаптується до режиму ринку, а не набір вшитих умов.
Часті запитання

Чому RL-агент для трейдингу ламається на живому ринку

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

Політика, навчена під конкретний режим, на новому поводиться як випадкова — звідси провал RL-агента в трейдингу під час запуску в реальному контурі.

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

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

Якщо середній прибуток на угоду порівнянний із тертям, стратегія йде в мінус без жодної помилки в моделі.

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

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

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

Що дає навчання з підкріпленням: ефект у метриках

Ефект навчання з підкріпленням вимірюємо не дохідністю у вакуумі, а стійкістю поведінки агента.

Асинхронні методи актор-критик, що сягають робіт DeepMind, дають змогу проганяти десятки копій середовища з різними ринковими умовами паралельно — агент навчається класу режимів, а не однієї вдалої траєкторії. Зміна тренду на флет або зростання волатильності перестає вимагати переписування правил з нуля.

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

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

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

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

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

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

Порівняння підходів: A2C, A3C і навчання на історії

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

Синхронний актор-критик оновлює політику за узгодженим кроком усіх середовищ, асинхронний збирає досвід незалежними копіями агента, а офлайн-датасет дає стартову політику взагалі без звернення до середовища.

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

Режим Коли підходить Де впирається
A2C, синхронне навчання Потрібен рівний градієнт і повторюваний запуск; є кілька паралельних середовищ Кожен крок чекає найповільнішу копію; масштабується гірше за асинхронне
A3C, асинхронне навчання Багато вузлів, потрібен швидкий набір досвіду з різних станів ринку Застарілі градієнти від копій, що відстали, знижують стійкість, налагодження складніше
Навчання на історії Немає доступу до середовища; потрібен прогрів політики й перевірка гіпотез на довгому ряді котирувань Впирається в обсяг вибірки: рідкісні режими ринку представлені слабко, зворотного зв’язку немає
Симулятор на історичних даних Потрібна перевірка з урахуванням комісій і прослизання перед реальними угодами Реалізм моделі виконання визначає, чи перенесеться результат у бойовий контур

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

Етапи впровадження: від аудиту даних до передавання моделі

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

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

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

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

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

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

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

  • Файли конфігурації — гіперпараметри навчання, склад інструментів, вікно ознак, ліміти ризику та пороги автостопу; версіонуються разом із кодом.
  • Опис схеми навчання — кількість паралельних середовищ, частота синхронізації ваг, критерії зупинки та правила відбору контрольних точок моделі.
  • Журнали прогонів — метрики за епохами, збережені ваги, звіт про дохідність і просідання на відкладеному періоді.
  • Розмежування доступу — окремі ролі на навчання, виконання сигналів і зміну ризик-лімітів; ключі до торгового шлюзу зберігаються в секрет-сховищі, а не в репозиторії.
  • Інструкції з експлуатації — порядок запуску, режим «лише сигнали», відкат на попередню контрольну точку однією командою.
  • Регламент перенавчання — тригери (дрейф розподілу ознак, деградація метрик), періодичність і порядок введення нової версії в роботу.
  • Документація щодо даних — словник ознак, джерела, правила обробки пропусків і корпоративних дій.

Сенс переліку не у звітності: за цими файлами нова команда відтворює навчання й продовжує роботу без нас.

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

До: політика на одному активі

У цьому кейсі — портфель із дванадцяти інструментів: акції, ф’ючерси на індекс, валютні пари. Агент навчався на одному активі, і під час перенесення політика йшла в перекіс: до 70% ваги забирав найліквідніший інструмент. На відкладеному відрізку історії Шарп тримався близько 0.6, максимальне просідання сягало 28%.

Після: що змінили і як рахували

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

Навчали сімейством актор-критик (A2C/A3C): кілька паралельних середовищ проганяли різні ділянки історії та режими волатильності, котирування й книги заявок брали з Interactive Brokers.

Метрики рахували лише на відкладеному відрізку й порівнювали з рівноваженим портфелем. Шарп 0.6 → 1.3, максимальне просідання 28% → 11%, частка часу в ринку впала з 85% до 60% — агент частіше чекав. Внесок інструментів вирівнявся: жоден не дає більше п’ятої частини результату.

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

Чим RL-агент для трейдингу відрізняється від стратегії на правилах

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

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

Формально задача описується як марковський процес. Стан — вікно ринкових ознак, поточна позиція, нереалізований результат і вільні кошти. Дії — вхід, утримання, вихід і розмір позиції. Винагорода — дохідність кроку з поправкою на просідання та витрати.

Агент на A2C/A3C навчається через актора-критика: актор пропонує розподіл дій, критик оцінює перспективність стану, градієнт править політику. Готового «якщо — то» в рішенні немає: правило витіснене параметрами, налаштованими на даних.

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

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

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

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

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

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

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

Як відрізнити робочу модель від перенавченої?

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

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

Як ураховується прослизання та реальне виконання?

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

Що робити, якщо історія угод коротка?

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

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

Хто і як контролює ризик?

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

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

Як відбувається підключення до торгової системи?

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

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

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

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

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

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

Опишіть задачу — повернемося з оцінкою та планом.

Напрямки AI-розробки

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

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