GAN-генерація ринкових сценаріїв: чому тести не ловлять ризик
Класичний провал у проєктах із синтетичними ринковими даними виглядає однаково. Змагальну пару навчають на історії спокійного ринку: там мало розривів, волатильність змінюється м'яко, а хвости розподілу майже не представлені.
На виході отримуються гладкі ряди — вони виглядають правдоподібно на графіку й без зауважень проходять базові статистичні перевірки.
Далі стрес-тестування стратегій перетворюється на формальність. Модель показує стійкий профіль на тисячах згенерованих траєкторій, бо всі вони — варіації одного й того самого спокійного режиму.
Дискримінатор перестає відрізняти синтетику від реальних котирувань, метрики схожості зростають, і це сприймають за ознаку якості. Фактично генератор вивчив середній режим і розучився відтворювати рідкісні події — саме ті, заради яких його будували.
Ціна помилки проявляється не у звіті, а в реальній торгівлі. Перший же розрив ліквідності або каскад стопів дає нереалістичні сценарії зворотного знака: стратегія, що пройшла всі перевірки, розсипається на живих позиціях, а не на папері.
Обвал якості генератора майже завжди пояснюється трьома причинами: вузьким вікном навчальних даних, відсутністю перевірки на хвостах розподілу й метриками, які вимірюють гладкість ряду замість реалістичності.
Плюс відсутність контролю за перенавчанням під конкретну стратегію — генератор непомітно підлаштовується під неї, і тест втрачає сенс. Розбираємо, як це закривається.
Вимірний ефект: покриття рідкісних режимів і стійкість стратегій
Ефект генеративних сценаріїв вимірюється не красою синтетичних рядів, а трьома групами чисел: покриття рідкісних режимів, стійкість стратегії під час зміни режиму й відтворюваність перевірок.
До впровадження тестовий контур збирався вручну — аналітик вирізав з історії кілька епізодів, зазвичай останній обвал і пару спокійних років, інші режими до перевірок не потрапляли.
Генератор навчається на біржових архівах і котирувальних стрічках (Refinitiv і внутрішні джерела) та синтезує саме те, чого у вибірці мало: розриви ліквідності, зміну кореляцій, затяжні тренди з рідкісними відкатами.
Частка ручних сценаріїв у наборі перевірок падає з приблизно 70% до 10–15%, а покриття рідкісних подій зростає з поодиноких епізодів до кількох десятків на горизонт.
Стійкість стратегії перевіряється на зсуві режиму: той самий набір правил проганяється на історичних і синтетичних вікнах, результат порівнюється за просадкою, часткою прибуткових періодів і поведінкою за відсутності ліквідності.
Видно не абстрактне «стратегія працює», а на якому саме режимі вона ламається і який запас потрібен, щоб це пережити.
Відтворюваність тримається на фіксації параметрів ініціалізації генератора, версії набору даних, конфігурації навчання й порогів відбору сценаріїв.
Будь-який прогін повторюється через місяць і дає той самий набір перевірок — динаміка метрик перестає залежати від того, хто саме збирав тести й як розкреслив історію.
Способи навчання моделі: порівняння режимів і обмежень
Режим навчання визначає, які сценарії генератор взагалі здатен видати, тому порівнювати підходи варто за покриттям рідкісних подій, а не за правдоподібністю окремої траєкторії.
На практиці режими не замінюють один одного: навчання на історичних даних задає базовий розподіл, агентна модель ринку додає реакцію на дії учасників, гібридний підхід утримує економічні та регуляторні межі ряду.
| Підхід | Коли підходить | Обмеження |
|---|---|---|
| Навчання на історичних даних | Є довга чиста історія за інструментом, режим ринку стабільний | Відтворює лише пройдені режими, рідкісні події недооцінені, хвости згладжуються |
| Поверх агентної моделі ринку | Потрібен відгук на дії учасників і зміну правил торгівлі | Помилка калібрування агентів переноситься у сценарії, час розрахунку зростає |
| Гібрид правил і навчання | Частина динаміки описана регламентом, частина — статистикою | Межу між правилом і моделлю доводиться проводити вручну й переглядати |
| Донавчання на даних замовника | Є власні угоди, котирування або портфель, важлива специфіка інструмента | Мало даних — ризик перенавчання, потрібен контроль витоку майбутнього в ознаки |
Комбінуємо послідовно: історія як база, поверх — агентна модель, фінальний шар — донавчання на даних замовника із замороженою частиною ваг.
Сумісність перевіряємо не за однією метрикою, а за набором: збереження важких хвостів і кластеризації волатильності, відсутність витоку майбутнього, стійкість під час зміни режиму.
Якщо режим не проходить хоча б одну перевірку, у роботу він не йде — генератор залишається відтворюваним і пояснюваним.
Як проходить впровадження: етапи інженерної роботи
Генератор, навчений на сирих даних, видає ряди, правдоподібні на графіку й такі, що ламаються на перевірці: втрачаються зв'язки між активами, занижується частота різких рухів. Тому порядок робіт іде від даних і критеріїв приймання до моделі, а не навпаки.
- Аудит даних і постановка задачі. Перевіряємо історію на пропуски, розриви та зміну ринкового режиму. Одразу описуємо, що генератор зобов'язаний відтворювати: волатильність, автокореляції, важкі хвости доходностей.
- Проєктування генератора. Підбираємо архітектуру під кількість активів і обсяг історії, задаємо розмірність прихованого простору й спосіб урахування режиму ринку. Узгоджуємо склад входів — лише історія чи ще зовнішні фактори.
- Навчання й стабілізація. Утримуємо баланс генератора й дискримінатора, додаємо регуляризацію проти запам'ятовування історичних ділянок: інакше модель переказує минуле замість нових сценаріїв.
- Валідація правдоподібності. Статистичні перевірки — форма розподілу, автокореляція, кластеризація волатильності; економічні — збереження зв'язків між активами. Окремо дивимося відкладений період, якого модель не бачила.
- Передача моделі. Віддаємо ваги, скрипт генерації з фіксованим джерелом випадковості, опис входів і виходів, інструкцію із запуску: результат відтворюється у вас без нашої участі.
- Приймання результату й регламент. Звіряємо метрики з порогами, зафіксованими до старту, розбираємо розбіжності. Далі прописуємо періодичність перенавчання й метрики, за відхиленням яких запускається оновлення.
Комплект передачі: конфігурації, схеми й регламенти валідації
Комплект передачі збираємо так, щоб ваша команда могла відтворити навчання, перевірити якість і перенавчити модель без нашої участі. Це не презентація з графіками, а робочий набір у вашому репозиторії, за яким інженер повторить прогін і отримає зіставний результат.
- Конфігурації навчання — параметри генератора й дискримінатора, склад ознак (доходності, обсяги, макро-індикатори), вікна історії, початкові значення генератора випадкових чисел, критерій зупинки. Прогін за цими файлами відтворюється, а не «приблизно схоже».
- Схема контуру даних — звідки надходять котирування й угоди, як обробляються пропуски, викиди та розриви торгів, де лежать фіксовані зрізи для повторюваних перевірок.
- Регламент валідації — що вважаємо правдоподібним сценарієм: форма розподілу доходностей, хвостові події, автокореляція, поведінка на періодах, яких модель не бачила. Плюс пороги, за яких сценарій відхиляється.
- Документація моделі — архітектура, межі застосовності, відомі слабкі місця (недооцінка різких розворотів) і перелік режимів ринку, на яких модель перевірена.
- Розмежування доступу — ролі на дані, ваги й журнали експериментів: хто змінює конфігурацію, хто запускає навчання, хто лише читає результати.
- Регламент перенавчання — тригери (зсув розподілу, зростання розходження з реальними даними), періодичність, порядок прогону й відкат до попередніх ваг.
- Інструкція із запуску — розгортання середовища, генерація сценаріїв і перевірка за критеріями приймання.
Комплект залишається у вас і не залежить від нашої інфраструктури: оновлювати конфігурації, змінювати пороги валідації та запускати перенавчання можна своїми силами, а ми підключаємося там, де потрібне доопрацювання.
Кейс: як зросло покриття рідкісних режимів у тестах
Замовник — команда ризик-контролю за ринковими позиціями. Набір тестів для моделі ризику збирався вручну: аналітики вирізали вікна з історії й добудовували рідкісні режими правками.
Поки ринок був спокійним, це працювало, але обвали, розриви ліквідності та затяжні боковики потрапляли до набору поодинокими прикладами — близько 8% сценаріїв. Перевірки виглядали зеленими, а на живому ринку модель ішла в негативні прогнози.
Ми навчили генератор ринкових сценаріїв на історії котирувань і заявок, розмітивши дані за режимами, і додали відбракування: сценарій потрапляв до набору лише після перевірок на реалістичність — збереження кластерів волатильності, форма розподілу доходностей, відсутність вироджених траєкторій.
Стабільність навчання тримали балансуванням рідкісних режимів у вибірці та зупинкою за розходженням розподілів, інакше генератор згортався в один режим.
| Метрика | До | Після |
|---|---|---|
| Покриття рідкісних режимів у наборі | 8% | 74% |
| Частка відбракованих синтетичних сценаріїв | 61% | 12% |
| Час збирання набору тестів | 9 робочих днів | 1 день |
| Прогони навчання, що завершилися виродженням | 4 з 5 | 1 з 12 |
Окремий ефект — на процес. Знайдений дефект фіксується сценарієм і залишається в наборі Портфель-Стресс назавжди, повторна перевірка більше не потребує ручної реконструкції ринку.
Відбракування перестало бути вузьким місцем: інженер розбирає лише спірні випадки, а не весь потік генерації.
Чим нейромережевий підхід відрізняється від статистичних моделей?
Статистична модель задає форму розподілу заздалегідь і оцінює кілька параметрів — так влаштована, наприклад, методологія RiskMetrics.
Навчуваний генератор (GAN — один із варіантів) форму не задає, а відновлює її з даних, тому тримає залежності, які у формулу не записати: спільні рухи активів, асиметрію, важкі хвости.
Межу застосовності визначають три речі: обсяг історії, розмірність задачі та вимога до пояснюваності. На короткому ряді з малою кількістю сигналів статистика стійкіша, а її параметри можна прочитати й захистити перед ризик-комітетом.
Коли сценаріїв десятки і вони мають бути узгоджені між собою, ручне налаштування зв'язків перетворюється на окремий проєкт.
Навчуваний генератор потрібен там, де важливі не середні, а спільні рідкісні події: одночасне зростання волатильності й падіння ліквідності, розрив кореляцій у стресі, зміна режиму ринку.
Критерій перевірки один — чи відтворює модель розподіли з кризових епізодів історії та чи залишається стійкою між запусками.
Типові помилки вибору — навчати генератор на вибірці, якої вистачає на два-три параметри; судити про якість за середнім, не перевіряючи хвости; втрачати відтворюваність сценаріїв після зміни моделі.
Зворотна помилка — залишати статистику там, де потрібні багатовимірні спільні сценарії: траєкторії виходять гладкими, а стресових сюжетів у них немає.
Технічні сумніви: стійкість навчання й перевірка правдоподібності
Колапс режимів — основна відмова під час навчання генератора: він знаходить кілька вдалих траєкторій і починає тиражувати їх, а дискримінатор перестає їх розрізняти.
Помилка навчання при цьому виглядає здоровою, тому ми стежимо не за нею, а за різноманіттям вибірки: розподіл доходностей, частка унікальних шляхів, розкид сценаріїв у межах одного ринкового режиму.
Щойно множина згортається, навчання перезапускається з іншим початковим налаштуванням і штрафом за одноманітність.
Перевірка правдоподібності йде на відкладеному відрізку історії, якого модель не бачила. Згенеровані сценарії порівнюються з реальними за статистиками, значущими для ризику: волатильність, автокореляція, важкі хвости, поведінка на затяжних просадках.
Збігу середніх недостатньо — дивимося, чи відтворює модель рідкісні події, на яких зазвичай і ламаються стрес-тести.
Критерії правдоподібності та межі застосовності фіксуємо письмово й узгоджуємо з вашою ризик-командою до старту навчання. Внутрішній контроль тоді проходить за зрозумілим чек-листом, а не за враженням від показової демонстрації.
Як зрозуміти, що модель перенавчилася на вузькому відрізку історії?
Навчаємо на одному періоді, а перевіряємо на іншому — в ідеалі на кризі, якої в навчальній вибірці не було. Якщо якість на контрольному періоді тримається, модель вивчила закономірності ринку, а не конкретний епізод. Обмеження складності мережі та регуляризація знижують ризик підгонки під шум.
Що робити, якщо історичних даних мало?
Доповнюємо рідкісну історію синтетикою, навчаємо одразу на кількох ринкових режимах і переносимо ваги з довшої вибірки за суміжним інструментом. На виході генератор працює й там, де реальних спостережень майже немає, — наприклад, на глибоких кризових сценаріях.
Обговоримо задачу: з чого почнемо й що потрібно від вас
Щоб оцінка задачі спиралася на факти, а не на припущення, потрібен короткий розбір: які ринкові сценарії має видавати GAN-модель, на якій історії вона навчається та як ви будете перевіряти результат. Нижче — що підготувати з боку замовника; нічого понад це на першому кроці не потрібно.
- Постановка й режими. Які сценарії генеруємо — трендові, бокові, стресові; горизонт, крок за часом і що вважається правдоподібним результатом.
- Вихідні дані. Історія котирувань або угод: глибина, частота, джерела, відомі пропуски та викиди. Чим раніше побачимо реальні вивантаження, тим точніше оцінимо терміни.
- Доступи й погодження. Тестовий контур, облікові записи, правила роботи з чутливими даними, чи потрібне знеособлення й хто підписує доступ.
- Обмеження. Внутрішні та регуляторні вимоги: що з даними робити не можна й де результат повинен залишатися всередині вашого контуру.
- Відповідальний за приймання. Хто приймає роботу й за якими критеріями — порівняння з історією, статистичні показники, експертна оцінка аналітиків.
- Технічний контакт. Інженер або аналітик, який відповість на уточнювальні питання щодо даних, форматів вивантаження та вашої інфраструктури.
Після цього повернемося з планом робіт: етапи, терміни, склад команди та точки, де ви бачите проміжний результат. Старт проєкту проходить швидко, коли дані й доступи готові; якщо ні — першим етапом стане їх підготовка, і це ми теж фіксуємо заздалегідь. Опишіть задачу — зберемо оцінку та план під ваш випадок.







