Глава 151: GAN с физическими ограничениями для трейдинга
Обзор
Генеративные состязательные сети (GAN) произвели революцию в генерации синтетических данных, однако стандартные GAN, применённые к финансовым временным рядам, часто порождают нереалистичные образцы, нарушающие фундаментальные свойства рынка. GAN с физическими ограничениями решают эту проблему, встраивая финансовые “законы” — аналог законов сохранения в физике — непосредственно в целевую функцию обучения. Результатом является генератор, создающий синтетические ценовые траектории, удовлетворяющие условиям безарбитражности, кластеризации волатильности, тяжёлых хвостов распределения и эффекта рычага.
Эта глава охватывает теорию, архитектуру и практическую реализацию GAN с физическими ограничениями как для фондовых, так и для криптовалютных рынков, с особым акцентом на генерацию реалистичных траекторий BTC/ETH с использованием данных Bybit.
Ключевые концепции
Основы GAN: Генератор против Дискриминатора
GAN состоит из двух нейронных сетей, обучающихся в состязательной игре:
Генератор G: z ~ N(0, I) --> G(z) = синтетические данныеДискриминатор D: x --> D(x) = P(x реальные)
min_G max_D V(D, G) = E[log D(x_real)] + E[log(1 - D(G(z)))]- Генератор (G): Принимает случайный шум z и преобразует его в синтетические финансовые временные ряды
- Дискриминатор (D): Пытается отличить реальные рыночные данные от синтетических
- Равновесие: При сходимости G порождает данные, неотличимые от реальных
Почему стандартные GAN не работают для финансовых данных
Стандартные GAN могут генерировать визуально правдоподобные временные ряды, но часто нарушают важные статистические свойства:
- Нарушение безарбитражности: Сгенерированные пути могут содержать систематически эксплуатируемые паттерны
- Отсутствие кластеризации волатильности: Поведение типа GARCH не сохраняется
- Тонкие хвосты: Генератор стремится к гауссовским распределениям
- Отсутствие эффекта рычага: Отрицательная корреляция между доходностями и волатильностью отсутствует
- Неверная автокорреляционная структура: Доходности могут иметь серийную корреляцию
Физические ограничения как регуляризация
Ключевая идея — рассматривать стилизованные факты финансов как “физические законы”, ограничивающие генератор:
Физические ограничения в финансах:├── Условие безарбитражности│ ├── Свойство мартингала для дисконтированных цен│ ├── E[S_{t+1} | F_t] = S_t * (1 + r_f)│ └── Нет систематического дрейфа сверх безрисковой ставки├── Кластеризация волатильности│ ├── Автокорреляция |r_t| медленно убывает│ ├── Условная дисперсия типа GARCH(1,1)│ └── Параметр персистентности α + β ≈ 0.95-0.99├── Тяжёлые хвосты (лептокуртозис)│ ├── Избыточный эксцесс > 0 (обычно 3-50)│ ├── Степенное поведение хвостов│ └── P(|r| > x) ~ x^(-α), α ∈ [2, 5]├── Эффект рычага│ ├── Corr(r_t, σ²_{t+1}) < 0│ ├── Отрицательные доходности увеличивают будущую волатильность│ └── Асимметричное GARCH / EGARCH поведение└── Согласование моментов ├── Среднее, дисперсия, асимметрия, эксцесс ├── Автокорреляционная функция доходностей └── Автокорреляционная функция квадратов доходностейМатематическая формулировка
Общая функция потерь
Функция потерь GAN с физическими ограничениями объединяет состязательные и физические компоненты:
L_total = L_adversarial + λ_martingale * L_martingale + λ_volatility * L_volatility + λ_kurtosis * L_kurtosis + λ_leverage * L_leverage + λ_autocorr * L_autocorrWGAN-GP (Wasserstein GAN с градиентным штрафом)
Для стабильного обучения используем WGAN-GP вместо обычного GAN:
L_critic = E[D(G(z))] - E[D(x_real)] + λ_gp * E[(||∇D(x_hat)||_2 - 1)²]
L_generator = -E[D(G(z))] + λ * L_physicsгде x_hat = ε * x_real + (1 - ε) * G(z) — интерполированный образец для градиентного штрафа.
Ограничение мартингала
Для дисконтированных цен как мартингала:
L_martingale = || E[r_{t+1} | F_t] ||² ≈ (1/T) Σ_t (mean(r_t))²Ограничение кластеризации волатильности
Кластеризация волатильности означает, что |r_t| и |r_{t+k}| положительно коррелированы для малых k:
L_volatility = Σ_{k=1}^{K} (ρ_gen(|r|, k) - ρ_real(|r|, k))²Ограничение тяжёлых хвостов
Реальные финансовые доходности имеют избыточный эксцесс значительно больше нуля:
L_kurtosis = (κ_gen - κ_real)²Ограничение эффекта рычага
Эффект рычага: отрицательные доходности предсказывают более высокую будущую волатильность:
L_leverage = (Corr(r_t, |r_{t+1}|)_gen - Corr(r_t, |r_{t+1}|)_real)²Архитектура
Архитектура генератора
Генератор (временные свёрточные слои):┌─────────────────────────────────────────────┐│ Вход: z ~ N(0, I) ∈ R^{latent_dim} ││ Опционально: c (условие: режим, уровень вол)│├─────────────────────────────────────────────┤│ Linear(latent_dim + cond_dim, 256 * T//16) ││ Reshape в (256, T//16) │├─────────────────────────────────────────────┤│ ConvTranspose1d(256, 128, 4, stride=2) ││ BatchNorm1d + LeakyReLU │├─────────────────────────────────────────────┤│ ConvTranspose1d(128, 64, 4, stride=2) ││ BatchNorm1d + LeakyReLU │├─────────────────────────────────────────────┤│ ConvTranspose1d(64, 32, 4, stride=2) ││ BatchNorm1d + LeakyReLU │├─────────────────────────────────────────────┤│ ConvTranspose1d(32, 1, 4, stride=2) ││ Tanh (ограниченные доходности) │├─────────────────────────────────────────────┤│ Выход: доходности ∈ R^{T} ││ Цены = кумулятивное произведение(1 + returns)│└─────────────────────────────────────────────┘Архитектура критика (дискриминатора)
Критик (1D CNN):┌─────────────────────────────────────────────┐│ Вход: доходности ∈ R^{T} │├─────────────────────────────────────────────┤│ Conv1d(1, 32, 4, stride=2) ││ LayerNorm + LeakyReLU │├─────────────────────────────────────────────┤│ Conv1d(32, 64, 4, stride=2) ││ LayerNorm + LeakyReLU │├─────────────────────────────────────────────┤│ Conv1d(64, 128, 4, stride=2) ││ LayerNorm + LeakyReLU │├─────────────────────────────────────────────┤│ Conv1d(128, 256, 4, stride=2) ││ LayerNorm + LeakyReLU │├─────────────────────────────────────────────┤│ Flatten + Linear(256 * T//16, 1) ││ Без сигмоиды (расстояние Вассерштейна) │└─────────────────────────────────────────────┘Условная генерация
Генератор может быть обусловлен рыночным режимом или уровнем волатильности:
# Кодирование условийconditions = { 'regime': ['bull', 'bear', 'sideways', 'crisis'], 'volatility': ['low', 'medium', 'high', 'extreme'],}
# Кодируется как one-hot или обучаемый эмбеддингc = embed(regime_label, vol_label)z_conditioned = torch.cat([z, c], dim=-1)synthetic_returns = G(z_conditioned)Это позволяет:
- Генерация сценариев: “Сгенерировать 1000 траекторий при медвежьем рынке с высокой волатильностью”
- Стресс-тестирование: “Как выглядит экстремальная волатильность с эффектом рычага?”
- Дополнение данных по режимам: “Нужно больше кризисных сценариев для обучения модели рисков”
Сравнение с альтернативами
| Свойство | Стандартный GAN | TimeGAN | GAN с физ. ограничениями |
|---|---|---|---|
| Состязательное обучение | Да | Да | Да |
| Временная динамика | Нет | Да (авторегрессия) | Да (1D Conv) |
| Стилизованные факты | Не обеспечены | Частично | Явно обеспечены |
| Тяжёлые хвосты | Часто отсутствуют | Иногда | Гарантированы через loss |
| Безарбитражность | Нарушается | Не обеспечена | Обеспечена |
| Кластеризация волатильности | Случайная | Частично | Явно согласована |
| Эффект рычага | Отсутствует | Иногда | Обеспечен |
| Стабильность обучения | Хрупкая | Средняя | Стабильная (WGAN-GP) |
Применения
1. Дополнение синтетических данных
Когда исторических данных мало (например, только несколько лет крипто), синтетические данные с физическими ограничениями могут:
- Расширить обучающую выборку для ML-моделей
- Сохранить статистические свойства, которые случайная аугментация разрушает
- Генерировать редкие события (крахи, шорт-сквизы) обусловленные кризисным режимом
2. Генерация сценариев и стресс-тестирование
# Сгенерировать 10,000 кризисных сценариев для BTCcrisis_paths = generator.generate( n_paths=10000, condition={'regime': 'crisis', 'volatility': 'extreme'})var_99 = np.percentile(crisis_paths[:, -1], 1) # 1% VaR при кризисе3. Обмен данными с сохранением конфиденциальности
Финансовые институты могут делиться синтетическими данными, сохраняющими статистические свойства, не раскрывая реальную торговую активность.
4. Тестирование устойчивости стратегий
Тестирование торговых стратегий на тысячах реалистичных синтетических сценариев вместо ограниченных исторических бэктестов.
Торговая стратегия
Основная стратегия: Режимный трейдинг с GAN-дополнением
- Обучить GAN с физическими ограничениями на исторических данных BTC/ETH с Bybit
- Сгенерировать синтетические сценарии обусловленные текущим обнаруженным режимом
- Монте-Карло прогнозирование доходности стратегии на синтетических траекториях
- Размер позиции на основе ожидаемого распределения результатов
Генерация сигналов
def generate_trading_signal(generator, current_features, n_simulations=1000): """ Генерация прогнозных сигналов через Монте-Карло симуляцию синтетических траекторий с физическими ограничениями. """ # Определить текущий режим regime = detect_regime(current_features) vol_level = estimate_volatility_level(current_features)
# Генерация условных синтетических прогнозных траекторий synthetic_paths = generator.generate( n_paths=n_simulations, condition={'regime': regime, 'volatility': vol_level}, horizon=20 )
# Вычислить ожидаемую доходность и риск final_returns = synthetic_paths[:, -1] expected_return = final_returns.mean() expected_risk = final_returns.std() sharpe = expected_return / (expected_risk + 1e-8)
if sharpe > 0.5: return 'LONG', min(sharpe / 2, 1.0) elif sharpe < -0.5: return 'SHORT', min(abs(sharpe) / 2, 1.0) else: return 'NEUTRAL', 0.0Параметры обучения
| Параметр | Значение | Описание |
|---|---|---|
| Латентная размерность | 128 | Размер вектора шума |
| Длина последовательности | 256 | Количество временных шагов |
| Итерации критика | 5 | Обновлений D на одно обновление G |
| Скорость обучения (G) | 1e-4 | Learning rate генератора |
| Скорость обучения (D) | 1e-4 | Learning rate дискриминатора |
| Градиентный штраф (λ_gp) | 10.0 | Вес штрафа WGAN-GP |
| Вес мартингала (λ_m) | 1.0 | Ограничение мартингала |
| Вес волатильности (λ_v) | 0.5 | Ограничение кластеризации |
| Вес эксцесса (λ_k) | 0.3 | Ограничение тяжёлых хвостов |
| Вес рычага (λ_l) | 0.2 | Ограничение эффекта рычага |
| Вес автокорреляции (λ_a) | 0.3 | Ограничение структуры ACF |
| Размер батча | 64 | Размер обучающего батча |
Реализация
Python
model.py: Генератор, Критик и модуль PhysicsLossdata_loader.py: Загрузка данных с Bybit/Yahoo с предобработкойtrain.py: Цикл обучения WGAN-GP с физическими ограничениямиvisualize.py: Графики сравнения реальных и синтетических данныхbacktest.py: Бэктест торговой стратегии на сгенерированных сценариях
Rust
src/lib.rs: Структуры данных, вычисление физических ограничений, статистические утилитыsrc/bin/fetch_data.rs: Клиент Bybit API для получения OHLCV данныхsrc/bin/train.rs: Упрощённый цикл обученияsrc/bin/generate.rs: Генерация и анализ синтетических траекторийexamples/: Рабочие примеры с демо-данными
Применение к криптовалютам: Bybit BTC/ETH
Почему криптовалютам нужны GAN с физическими ограничениями
Криптовалютные рынки демонстрируют ещё более выраженные стилизованные факты:
- Высокий эксцесс: Дневные доходности BTC имеют избыточный эксцесс 10-30
- Сильная кластеризация волатильности: Крипто-волатильность сохраняется неделями/месяцами
- Торговля 24/7: Нет ночных разрывов, непрерывные ценовые пути
- Смена режимов: Быстрые переходы между бычьими ралли и крахами
- Эффект рычага: Усилен в маржинальной крипто-торговле
Ссылки
- Goodfellow, I., et al. (2014). “Generative Adversarial Nets.” NeurIPS.
- Arjovsky, M., et al. (2017). “Wasserstein Generative Adversarial Networks.” ICML.
- Gulrajani, I., et al. (2017). “Improved Training of Wasserstein GANs.” NeurIPS.
- Yoon, J., et al. (2019). “Time-series Generative Adversarial Networks.” NeurIPS.
- Cont, R. (2001). “Empirical properties of asset returns: stylized facts and statistical issues.”
- Wiese, M., et al. (2020). “Quant GANs: Deep generation of financial time series.”
- Raissi, M., et al. (2019). “Physics-informed neural networks.”
- Karniadakis, G.E., et al. (2021). “Physics-informed machine learning.”
Итоги
GAN с физическими ограничениями представляют принципиальный подход к генерации синтетических финансовых данных. Встраивая финансовые стилизованные факты как дифференцируемые ограничения в целевую функцию обучения GAN, мы гарантируем, что сгенерированные данные уважают статистические свойства реальных рынков. Ключевые преимущества:
- Реалистичные синтетические данные, сохраняющие тяжёлые хвосты, кластеризацию волатильности и безарбитражность
- Условная генерация для целевого анализа сценариев и стресс-тестирования
- Стабильное обучение через WGAN-GP с интерпретируемой декомпозицией физических потерь
- Практические применения в дополнении данных, тестировании стратегий и обмене данными с сохранением конфиденциальности