Перейти к содержимому

Глава 89: Непрерывное мета-обучение для трейдинга

Обзор

Непрерывное мета-обучение (Continual Meta-Learning) объединяет два мощных подхода — мета-обучение (обучение обучению) и непрерывное обучение (обучение без забывания) — для создания торговых систем, которые могут быстро адаптироваться к новым рыночным режимам, сохраняя знания о ранее изученных условиях.

Финансовые рынки переживают смену режимов — переходы между бычьими рынками, медвежьими рынками, периодами высокой волатильности и консолидации. Стандартный подход мета-обучения (например, MAML) может быстро адаптироваться к новому режиму, но при переобучении на новых данных страдает от катастрофического забывания: он теряет способность работать в предыдущих режимах. Непрерывное мета-обучение решает эту проблему, комбинируя MAML с техниками Elastic Weight Consolidation (EWC) и буфером воспроизведения опыта.

Ключевые концепции

1. MAML (Model-Agnostic Meta-Learning)

MAML обучает начальную инициализацию параметров модели, которая позволяет быстро адаптироваться к новым задачам за несколько градиентных шагов.

Двухуровневая оптимизация:

Внешний цикл: θ ← θ - β ∇_θ Σ_i L(f_{θ'_i}, D^query_i)
Внутренний цикл: θ'_i = θ - α ∇_θ L(f_θ, D^support_i)

Где:

  • θ = мета-параметры (общая инициализация)
  • α = внутренняя скорость обучения (адаптация к задаче)
  • β = внешняя скорость обучения (мета-обновление)
  • D^support = набор поддержки (для адаптации)
  • D^query = набор запросов (для оценки)

2. Elastic Weight Consolidation (EWC)

EWC предотвращает катастрофическое забывание, добавляя регуляризацию, которая штрафует изменения параметров, важных для ранее изученных задач.

L_total = L_new + (λ/2) Σ_i F_i (θ_i - θ*_i)²

Где:

  • F_i = информация Фишера для параметра i (вес важности)
  • θ*_i = оптимальный параметр из предыдущего обучения
  • λ = сила регуляризации

3. Буфер воспроизведения опыта

Буфер хранит репрезентативные задачи из прошлых рыночных режимов. Во время мета-обучения на новом режиме задачи из буфера подмешиваются для укрепления старых знаний.

4. Комбинированный алгоритм

Для каждого нового рыночного режима:
1. Создать задачи мета-обучения из данных нового режима
2. Для каждой эпохи мета-обучения:
a. Выбрать задачи из буфера воспроизведения
b. Объединить новые + воспроизведённые задачи
c. Вычислить MAML-потерю на объединённом батче
d. Добавить штраф EWC для защиты важных параметров
e. Обновить мета-параметры
3. Обновить матрицу информации Фишера
4. Сохранить представительные задачи в буфер

Применение в трейдинге

Рыночные режимы как задачи

В контексте трейдинга:

  • Задача = конкретное рыночное условие (бычий, медвежий, боковой, волатильный)
  • Набор поддержки = недавние исторические данные для адаптации
  • Набор запросов = предстоящие данные для оценки
  • Режим = совокупность схожих рыночных условий за период времени

Последовательное обучение режимам

Рынки эволюционируют через режимы:

Время →
[Бычий рынок] → [Коррекция] → [Боковик] → [Медвежий рынок] → [Восстановление]
Режим 0 Режим 1 Режим 2 Режим 3 Режим 4

Преимущества перед стандартным MAML

СвойствоСтандартный MAMLНепрерывный MAML
Быстрая адаптацияДаДа
Много режимовНужны все данныеПоследовательное обучение
Эффективность памятиХранит все данныеТолько буфер воспроизведения
ЗабываниеКатастрофическоеКонтролируемое (EWC + буфер)
Онлайн-обучениеОграниченноеЕстественное

Реализация

Python

from continual_meta_learner import ContinualMAMLTrainer, TradingModel
# Создание модели и тренера
model = TradingModel(input_size=11, hidden_size=64)
trainer = ContinualMAMLTrainer(
model,
inner_lr=0.01, # Скорость адаптации к задаче
outer_lr=0.001, # Скорость мета-обучения
inner_steps=5, # Шаги градиента при адаптации
first_order=True, # FOMAML для стабильности
ewc_lambda=100.0, # Сила регуляризации EWC
replay_buffer_size=100,
replay_ratio=0.5 # 50% задач из буфера
)
# Последовательное обучение режимам
for regime_id, tasks in enumerate(regime_task_list):
losses = trainer.learn_regime(tasks, regime_id, num_epochs=20)
# Адаптация к текущему рынку
adapted_model = trainer.adapt(recent_features, recent_returns)
prediction = adapted_model.predict(current_features)

Ключевые классы:

  • TradingModel — 3-слойная нейронная сеть (ReLU + ReLU + Tanh)
  • ContinualMAMLTrainer — MAML + EWC + буфер воспроизведения
  • EWC — регуляризатор Elastic Weight Consolidation
  • ReplayBuffer — хранилище опыта с балансировкой по режимам
  • TradingStrategy — генерация сигналов с управлением рисками

Rust

use continual_meta_learning::{ContinualMAMLTrainer, TradingModel};
let model = TradingModel::new(11, 64, 1);
let mut trainer = ContinualMAMLTrainer::new(
model, 0.01, 0.001, 5, true, 100.0, 50,
);
// Обучение режиму
let losses = trainer.learn_regime(&tasks, regime_id, 20, 5);
// Адаптация и предсказание
let adapted = trainer.adapt(&features, &labels, Some(5));
let prediction = adapted.predict(&current_features);

Структура проекта

89_continual_meta_learning/
├── README.md # Документация (English)
├── README.ru.md # Документация (Русский)
├── README.specify.md # Техническое задание
├── readme.simple.md # Простое объяснение (English)
├── readme.simple.ru.md # Простое объяснение (Русский)
├── Cargo.toml # Конфигурация Rust
├── python/
│ ├── __init__.py
│ ├── continual_meta_learner.py # Основной алгоритм
│ ├── data_loader.py # Загрузка данных и фичи
│ ├── backtest.py # Фреймворк бэктестинга
│ └── requirements.txt # Зависимости Python
├── src/
│ ├── lib.rs # Корень крейта
│ ├── model/
│ │ └── network.rs # Нейронная сеть
│ ├── continual/
│ │ └── algorithm.rs # Непрерывный MAML + EWC
│ ├── data/
│ │ ├── bybit.rs # Клиент API Bybit
│ │ └── features.rs # Технические индикаторы
│ ├── trading/
│ │ ├── strategy.rs # Торговая стратегия
│ │ └── signals.rs # Типы сигналов
│ └── backtest/
│ └── engine.rs # Движок бэктестинга
└── examples/
├── basic_continual.rs # Базовый пример
├── regime_learning.rs # Последовательное обучение
└── trading_strategy.rs # Полный торговый пример

Запуск

Python

Окно терминала
cd 89_continual_meta_learning/python
pip install -r requirements.txt
python continual_meta_learner.py
python backtest.py

Rust

Окно терминала
cd 89_continual_meta_learning
cargo run --example basic_continual
cargo run --example regime_learning
cargo run --example trading_strategy
cargo test

Метрики оценки

Метрики забывания

МетрикаОписание
Среднее забываниеСреднее падение точности на старых режимах
Обратный трансферИзменение производительности на старых режимах

Торговые метрики

  • Sharpe Ratio — доходность с поправкой на риск (цель > 1.0)
  • Sortino Ratio — доходность с поправкой на нисходящий риск
  • Maximum Drawdown — максимальная просадка
  • Win Rate — процент прибыльных сделок
  • Profit Factor — валовая прибыль / валовый убыток

Гиперпараметры

ПараметрДиапазонОписание
inner_lr0.001 - 0.05Скорость адаптации к задаче
outer_lr0.0001 - 0.005Скорость мета-обучения
inner_steps3 - 10Градиентные шаги адаптации
ewc_lambda10 - 1000Сила защиты от забывания
replay_buffer_size20 - 200Размер буфера воспроизведения
replay_ratio0.3 - 0.7Доля задач из буфера
hidden_size32 - 128Размер скрытого слоя

Литература

  1. Finn, C., Abbeel, P., & Levine, S. (2017). “Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks.” ICML.

  2. Kirkpatrick, J., et al. (2017). “Overcoming Catastrophic Forgetting in Neural Networks.” PNAS.

  3. Javed, K. & White, M. (2019). “Meta-Learning Representations for Continual Learning.” NeurIPS.

  4. Riemer, M., et al. (2019). “Learning to Learn without Forgetting by Maximizing Transfer and Minimizing Interference.” ICLR.

  5. Caccia, M., et al. (2020). “Online Fast Adaptation and Knowledge Accumulation.” NeurIPS.

Источники данных

  • Bybit Exchange API — данные рынка криптовалют
  • Симулированные данные — встроенные генераторы с настраиваемыми режимами
  • Yahoo Finance — традиционные данные фондового рынка (через yfinance)

Дальнейшие направления

  • Онлайн-детекция режимов — автоматическое определение смены режимов
  • Мультиактивное обучение — обмен знаниями между активами
  • Внимание в буфере воспроизведения — приоритизация важного опыта
  • Прогрессивные сети — расширение ёмкости модели для новых режимов
  • Мета-непрерывное RL — применение к агентам обучения с подкреплением