PPO-трейдинг: чому агент втрачає стійкість на живому ринку
Навчений агент майже завжди виглядає переконливо на історії: крива дохідності рівна, просадки тримаються в заданих межах, показники на відкладеному відрізку збігаються з навчальними. Проблема в тому, що ринок не стаціонарний.
Волатильність, ліквідність і зв’язки між інструментами змінюються, а політика, знайдена навчанням із підкріпленням, залишається налаштованою на минулий розподіл цін.
PPO оновлює політику малими кроками, обмежуючи відхилення від попередньої версії — це стабілізує збіжність, але не захищає від перенавчання агента.
Функція винагороди підбирається під конкретний історичний відрізок, і модель починає відтворювати його особливості: рідкісні сплески, сезонні ефекти, шум у вузькі години. На зміні ринкового режиму просадка стратегії виходить за межі, які показував будь-який прогін по історії.
Причини зазвичай інженерні, а не «ринок став іншим». Ознаки рахуються зі зсувом щодо моменту прийняття рішення; витрати виконання та просковзування враховуються загрублено; перевірочний відрізок надто схожий на навчальний за волатильністю.
Бібліотеки на кшталт Stable-Baselines3 дають робочий цикл навчання, але вибір середовища, розбиття історії та режимні перевірки залишаються на боці команди.
Тому вирішальний аргумент — живе тестування: агент працює на реальних котируваннях у реальному часі з обмеженим обсягом угод, а ми зіставляємо очікувану поведінку політики з фактичною. Розбіжність видно тільки тут.
Далі розбираємо, як це закривається: які перевірки на стійкість вводимо і як переносимо агента з історії в реальні угоди.
Стійкість агента, ризик-контроль і відтворюваність результату
Агент, навчений на одному режимі ринку, втрачає стійкість при зміні волатильності: політика запам’ятовує статистику періоду, а не логіку поведінки. Тому навчання ведемо ковзним вікном і на кожному кроці перевіряємо модель на даних, яких вона не бачила.
Стійкість вимірюємо не середньою дохідністю, а просадкою на цих зрізах — якщо вона зростає швидше, ніж на навчальному вікні, навчання зупиняємо і розбираємо причину.
Ризик-контроль вбудований у дві точки. У функцію винагороди — штраф за дисперсію та за вихід за ліміт позиції, щоб агент не заробляв рідкісними великими ставками.
У виконання — жорсткі обмеження поверх політики: частка капіталу на одну угоду, денний стоп за просадкою та вимкнення стратегії при пробої порогу, незалежно від поточного прогнозу.
Відтворюваність тримаємо на рівні інфраструктури: фіксуємо зерно випадковості, склад і порядок ринкових даних, параметри середовища та гіперпараметри — усе в репозиторії поруч із кодом.
Повторний прогін на тому самому наборі даних дає метрики в заданому допуску, а розбіжність читається як помилка конфігурації, а не як «ринок змінився». З опорною реалізацією PPO звіряємося з Stable-Baselines3, щоб відділяти ефект наших доопрацювань від ефекту самої бібліотеки.
На виході — набір метрик якості з історією: максимальна просадка та час відновлення після неї, частка вимкнень за ризик-лімітами, розкид результату між прогонами. За ними видно, де агент стійкий, а де потрібен додатковий фільтр — це і є керований ризик, а не обіцянка дохідності.
Варіанти побудови агента: навчання з нуля, донавчання, гібрид
Вибір режиму визначає, скільки даних потрібно на вході, як швидко з’явиться перша робоча політика і наскільки болючою буде зміна набору інструментів.
Навчання з нуля на PPO дає повний контроль над поведінкою агента, але потребує довгої історії котирувань і терпимості до нестабільної дохідності на ранніх ітераціях.
Донавчання моделі стартує з уже зібраної політики: це помітно коротше за часом до результату, однак агент успадковує зміщення попереднього навчання і легко «забуває» режими, які рідко траплялися в нових даних. Гібридна схема знімає частину цих ризиків, розподіляючи ролі між правилами та навчальною частиною.
| Варіант | Коли підходить | Обмеження |
|---|---|---|
| Навчання з нуля | Свій набір інструментів і горизонт утримання позиції, яких немає в готових наборах даних | Довгий старт, чутливість до налаштування штрафу за ризик, підгонка під минуле при короткій історії |
| Донавчання моделі | Уже є робоча політика, потрібно додати інструмент або новий режим ринку | Перенесення старих зміщень, ризик погіршення на попередніх режимах, потрібен контрольний прогін на відкладеному відрізку |
| Гібридна схема | Правила задають рамку за ризиком, агент розподіляє капітал усередині неї | Більше коду та перевірок, потрібен розбір внеску кожного шару в підсумковий результат |
Вибір режиму починається з аудиту даних і цільової метрики: де межі допустимої просадки, як часто змінюється склад інструментів, чи є чим перевіряти політику поза навчальним відрізком.
За цими відповідями видно, чи вистачить донавчання або потрібна гібридна схема — і вже під неї планується обсяг робіт.
Як будується робота: аудит даних, схема, налаштування, перевірка
Процес іде етапами, і на кожному є точка контролю: ви бачите, що саме перевірено і які висновки з цього випливають. Навчання стартує тільки після того, як дані та постановка задачі зафіксовані — інакше метрики не піддаються інтерпретації.
- Аудит даних. Перевіряємо безперервність котирувань, вирівнюємо інтервали та часові пояси, шукаємо пропуски, викиди й розриви на корпоративних подіях. Окремо виключаємо зміщення вижилого: у вибірці залишаються тільки інструменти, які торгувалися на той момент.
- Постановка задачі. Фіксуємо мету — дохідність з поправкою на ризик або контроль просадки, — а також горизонт, склад спостережуваних ознак, ліміти за обсягом і плечем.
- Середовище виконання та винагорода. Збираємо симулятор із комісіями, просковзуванням і затримкою ордера. Винагорода штрафує зайвий обіг і різкі перекладки, щоб агент не підганявся під ідеальне виконання.
- Налаштування навчання PPO. Підбираємо горизонт переваги, поріг відсікання, розмір батчу та темп навчання. Кілька прогонів із різними початковими зернами показують розкид, а не найкращий результат.
- Перевірка стійкості. Прогоняємо агента на відкладеному періоді та в режимах, яких не було в навчанні: тренд, боковик, сплеск волатильності. Вимірюємо деградацію при збільшеному просковзуванні та затримці.
- Передача рішення. Віддаємо код середовища й навчання, конфігурації прогонів, збережені ваги, правила донавчання на свіжих даних і звіт із метриками та межами застосовності.
Контрольні точки — після аудиту даних, перед запуском навчання і перед передачею: на кожній фіксуємо, який результат вважаємо прийнятним.
Склад передачі: код агента, конфігурації, документація, регламенти
Передача — не архів із кодом, а робочий контур, який ваші інженери запускають і супроводжують без нас. Кожен артефакт закриває свій клас задач і перевіряється на прийманні: агент із PPO проходить навчання і виходить на тестовий відрізок ринку на вашій інфраструктурі.
- Код агента — навчання й застосування політики: середовище з ринковими даними, модель політики та цінності, ризик-фільтри, обв’язка заявок. Піднімається за інструкцією на чистому середовищі.
- Конфігурації навчання — горизонт, коефіцієнт обмеження кроку політики, розмір вибірки, кількість паралельних середовищ, ознаки, фіксація випадковості. Повторний запуск відтворює ту саму політику.
- Журнали прогонів і метрики — криві винагороди, дохідності та просадки, частота угод, розподіл дій агента. За ними видно, деградувала модель чи змінився режим ринку.
- Схеми та рішення — потік даних від котирувань до заявки, логіка ризик-фільтрів, точки розгалуження та межі між модулями.
- Документація — опис середовища, спостережень і функції винагороди, обмеження за ризиком, порядок донавчання на нових даних.
- Регламенти супроводу — критерії зупинки торгівлі, порядок перенавчання, відкат до збереженого стану попередньої моделі.
- Права доступу — ролі та ключі до сховища даних, реєстру моделей і брокерського контуру оформлюються на вас, наші доступи відкликаються.
Приймання — ваші інженери самі розгортають контур і повторюють прогін навчання. Далі супровід іде за регламентами, без звернення до нас.
PPO-трейдинг під навантаженням: метрики до та після впровадження
Що було до впровадження
Базова версія агента на PPO навчалася на одному режимі ринку — трендовій ділянці з низькою волатильністю. При зміні режиму політика продовжувала нарощувати позиції в той самий бік: просадка сягала 34% розрахункового капіталу, а відновлення займало вдвічі довше за сам спад.
Контроль ризику стояв зовні моделі — жорсткі ліміти зрізали позиції вже після відкриття, тому агент навчався на одному розподілі винагород, а торгував в іншому.
Що змінили
Ризик-шар перенесли всередину середовища навчання: обмеження на експозицію та крок зміни позиції стали частиною функції винагороди, а не зовнішнім фільтром.
Додали визначення режиму за волатильністю та дохідністю — на зміні режиму політика переходить у захищений профіль замість продовження тренду. Навчали та валідували на історичних даних із публічного архіву Binance, окремо прогоняючи сценарії різких розворотів.
Що стало після
Максимальна просадка знизилася з 34% до 11% на тому самому горизонті тестування, відновлення після спаду прискорилося приблизно втричі. Відношення дохідності до ризику зросло з 0,8 до 1,5 — стійкість агента перестала залежати від поточного режиму ринку.
Кількість змін позиції впала на 40%, витрати на виконання більше не з’їдають результат, а контроль ризику став частиною політики: за ризик-ліміти агент не виходить у жодній сесії.
Чим агент відрізняється від стратегії, заданої правилами вручну?
Правила, задані вручну, — це набір умов: перетин ковзних середніх, поріг волатильності, рівень стопу. Їхня сила в передбачуваності, кожне рішення пояснюється однією фразою.
Слабкість проявляється при зміні режиму ринку: параметри, підібрані на тренді, ламаються у флеті, а перезбирання перетворюється на ручний перебір варіантів, який легко підігнати під минуле.
Агент для PPO-трейдингу влаштований інакше. Він не зберігає умови, а навчає політику — розподіл імовірностей за діями, максимізуючи очікувану дохідність зі штрафами за ризик.
Неперервний простір дій дозволяє задавати розмір позиції, а не лише вхід і вихід, і враховувати десятки ознак у комбінаціях, які людина не випише правилами.
Виграє навчання там, де залежності багатовимірні та рухливі: розмір позиції, одночасне врахування кореляцій, мікроструктури стакана, кількох горизонтів утримання.
Донавчання на свіжому вікні даних дозволяє швидше реагувати на зміну режиму, але тільки якщо аналогічний зсув уже був в історії — інакше агент так само впевнено екстраполює шум.
Програє агент в інтерпретованості. Ваги мережі не читаються як правило, тому пояснити ризик-комітету, чому позиція відкрита, складніше — потрібен окремий аналіз внеску ознак.
Вищі й вимоги до даних і функції винагороди: жорсткий штраф за просадку робить агента пасивним, м’який провокує плече, яке не переживе реальних витрат.
На практиці це не вибір одного з двох. Правила залишаються рамками ризику — ліміти на позицію, стопи, заборона торгівлі в окремі вікна, — а агент працює всередині них, там, де правил стало занадто багато для ручного опису.
Перевіряються обидві схеми однаково: на відкладеному періоді, з урахуванням комісій і просковзування, з окремою оцінкою на тренді та у флеті.
Технічні сумніви: стійкість, дані, контроль ризику
П’ять технічних сумнівів найчастіше знімаємо до старту робіт: чи витримає агент зміну режиму ринку, чи вистачить даних, де проходять межі ризику, що із супроводом і як перевірити результат. Нижче — коротко про кожен.
Стійкість: що якщо ринок змінить характер?
Перевіряємо не на одному відрізку історії, а на серії вікон, включно з різкими рухами та низькою ліквідністю. Агент вважаємо придатним, якщо поведінка зберігається при зміні режиму, а не тільки на сприятливій ділянці.
Якість даних: чи вистачить історії?
Дивимося повноту, частоту та розриви в котируваннях, коректність корпоративних подій. Дані для навчання й для перевірки розводимо за часом — інакше отримуємо гарний, але марний результат.
Обмеження ризику: хто тримає рамки?
Ліміти за позицією, просадкою та кількістю угод закладаємо в середовище навчання — агент навчається всередині рамок. Додатково ставимо зовнішній контроль, що спрацьовує незалежно від рішень моделі.
Супровід: що після запуску?
Модель втрачає точність у міру зміни ринку, і це норма, а не аварія. Тому заздалегідь фіксуємо, які метрики відстежуємо, за яких відхилень перенавчаємо і як відкочуємося на попередню версію агента.
Способи перевірки: як переконатися до запуску?
Три рівні: тест на відкладеному періоді, прогін під стрес-сценаріями та робота на малому обсязі в реальному контурі. Збіг результатів на всіх трьох — умова переходу до повного масштабу.
Обговоримо задачу: що потрібно для оцінки та плану робіт
Для оцінки задачі з PPO-трейдингу не потрібен повний архів торгової системи — достатньо опису середовища та мети. Чим точніші вхідні дані, тим менше припущень у плані робіт: одразу видно, де симулятор збіжиться з реальним виконанням, а де потрібна окрема перевірка.
Що надіслати, щоб ми повернулися з оцінкою:
- інструмент і горизонт: що торгуємо, на якому таймфреймі, як часто агент приймає рішення;
- історичні дані: глибина ряду, склад полів (ціни, обсяги, стакан), як позначені пропуски;
- цільова метрика: дохідність з урахуванням просадки, коефіцієнт Шарпа або частка прибуткових угод;
- модель витрат: комісії, просковзування, затримка виконання — без них агент навчиться на неіснуючій дохідності;
- обмеження ризику: гранична просадка, ліміт позиції, правила зупинки торгів;
- інфраструктура: звідки беруться дані, куди агент віддає сигнали, чи є тестовий контур;
- що вже пробували і чому результат не влаштував.
За цими даними збираємо план робіт: підготовка середовища та перерахунок історії, налаштування функції винагороди, навчання й валідація політики, перевірка на відкладеному періоді, стрес-тести на волатильних ділянках.
Етапи та строки фіксуємо разом із критеріями приймання — за якого результату агент вважаємо готовим до обмеженого запуску.
Опишіть задачу у вільній формі — повернемося з оцінкою задачі та планом робіт за етапами.







