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

Глава 345: Гетерогенные графовые нейронные сети для трейдинга

Обзор

Гетерогенные графовые нейронные сети (Heterogeneous GNN, HGNN) расширяют традиционные GNN для работы с графами, содержащими множество типов узлов и рёбер. На финансовых рынках это критически важно, поскольку рыночная экосистема состоит из разнородных сущностей (активы, биржи, трейдеры, источники новостей), связанных различными типами отношений (корреляции, поток ордеров, владение, влияние).

Содержание

  1. Введение
  2. Теоретические основы
  3. Построение гетерогенного графа
  4. Компоненты архитектуры
  5. Обучение на основе метапутей
  6. Применение в криптовалютном трейдинге
  7. Стратегия реализации
  8. Управление рисками
  9. Метрики производительности
  10. Литература

Введение

Финансовые рынки по своей природе являются гетерогенными системами. В отличие от гомогенных графов, где все узлы представляют один тип сущности, реальные рынки состоят из:

  • Множества типов узлов: активы, биржи, кошельки, трейдеры, источники новостей
  • Множества типов рёбер: ценовая корреляция, поток ордеров, арбитраж фандинга, переводы китов
  • Богатых семантических отношений: каждый тип связи несёт различный смысл

Почему гетерогенные GNN для трейдинга?

┌─────────────────────────────────────────────────────────────────────────┐
│ Рынок как гетерогенный граф │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Типы узлов: Типы рёбер: │
│ ┌─────────┐ ═══════════ │
│ │ Актив │ ──корреляция──→ Актив-Актив: ценовая корреляция │
│ └─────────┘ Актив-Биржа: торговая площадка │
│ │ Кошелёк-Актив: владение │
│ торгуется Трейдер-Актив: позиции │
│ ↓ Новость-Актив: упоминания │
│ ┌──────────┐ │
│ │ Биржа │ │
│ └──────────┘ │
│ ↑ │
│ связаны │
│ │ │
│ ┌─────────┐ влияет ┌───────────┐ │
│ │ Кит │ ───────────────→│ Ритейл │ │
│ │ Кошелёк │ │ Трейдеры │ │
│ └─────────┘ └───────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘

Преимущества перед гомогенными GNN

АспектГомогенный GNNГетерогенный GNN
Типы узловОдин типМножество типов
Семантика рёберЕдинообразнаяТипоспецифичная
Пространства признаковОбщееТипоспецифичные
Моделирование связейОграниченноеБогатые семантические пути
Представление рынкаУпрощённоеРеалистичное

Теоретические основы

Определение гетерогенного графа

Гетерогенный граф определяется как $G = (V, E, \tau, \phi)$, где:

  • V: Множество узлов
  • E: Множество рёбер
  • τ: V → T_V: Функция отображения типа узла
  • φ: E → T_E: Функция отображения типа ребра

С ограничением: $|T_V| + |T_E| > 2$ (более одного типа узла или ребра)

Схема графа

Схема определяет допустимые типы узлов и рёбер:

Схема S = (T_V, T_E, R)
Где R определяет допустимые отношения:
R: T_V × T_E × T_V
Примеры для трейдинга:
(Актив, корреляция, Актив)
(Актив, торгуется_на, Биржа)
(Кошелёк, владеет, Актив)
(Трейдер, исполняет, Ордер)
(Новость, упоминает, Актив)

Гетерогенная передача сообщений

Основная операция расширяет передачу сообщений для обработки типоспецифичных преобразований:

$$h_v^{(l+1)} = \text{AGG}\left(\left{\text{MSG}_{\phi(e)}(h_u^{(l)}, h_v^{(l)}, e) : (u, e, v) \in \mathcal{N}(v)\right}\right)$$

Где:

  • $\text{MSG}_{\phi(e)}$ — типоспецифичная функция сообщения
  • Разные типы рёбер используют разные веса преобразования
  • Агрегация учитывает распределение типов

Типоспецифичные преобразования

Каждый тип узла/ребра имеет собственную проекцию:

Для типа узла t ∈ T_V:
W_t: ℝ^(d_t) → ℝ^d (проекция в общее пространство)
Для типа ребра r ∈ T_E:
M_r: ℝ^d × ℝ^d → ℝ^d (реляционное преобразование)

Построение гетерогенного графа

Определения типов узлов

┌────────────────────────────────────────────────────────────────┐
│ Типы узлов в трейдинге │
├────────────────────────────────────────────────────────────────┤
│ │
│ 1. Узел АКТИВ │
│ Признаки: [цена, объём, волатильность, капитализация, │
│ фандинг, открытый интерес, доходность 1ч/4ч/24ч]│
│ │
│ 2. Узел БИРЖА │
│ Признаки: [общий объём, кол-во пар, оценка ликвидности, │
│ средний спред, надёжность] │
│ │
│ 3. Узел КОШЕЛЁК (отслеживание китов) │
│ Признаки: [баланс, кол-во транзакций, средний размер, │
│ возраст, оценка PnL, активность] │
│ │
│ 4. Узел СОСТОЯНИЕ_РЫНКА │
│ Признаки: [доминация BTC, общая капитализация, страх/жадность,│
│ средний фандинг, соотношение лонг/шорт] │
│ │
│ 5. Узел ТАЙМФРЕЙМ │
│ Признаки: [тренд_1м, тренд_5м, тренд_1ч, тренд_4ч, │
│ режим волатильности, профиль объёма] │
│ │
└────────────────────────────────────────────────────────────────┘

Определения типов рёбер

┌────────────────────────────────────────────────────────────────┐
│ Типы рёбер в трейдинге │
├────────────────────────────────────────────────────────────────┤
│ │
│ Рёбра Актив ←→ Актив: │
│ • correlation: Скользящая ценовая корреляция │
│ • cointegration: Статистический показатель коинтеграции │
│ • lead_lag: Причинность по Грейнджеру │
│ • sector: Один сектор/категория │
│ │
│ Рёбра Актив ←→ Биржа: │
│ • trades_on: Актив листингуется на бирже │
│ • liquidity: Объём/глубина на конкретной бирже │
│ • spread: Спред bid-ask на бирже │
│ │
│ Рёбра Кошелёк ←→ Актив: │
│ • holds: Кошелёк владеет активом │
│ • accumulating: Увеличение позиции │
│ • distributing: Уменьшение позиции │
│ │
│ Рёбра Актив ←→ СостояниеРынка: │
│ • sensitivity: Как актив реагирует на рыночные условия │
│ • beta: Рыночный коэффициент бета │
│ │
└────────────────────────────────────────────────────────────────┘

Компоненты архитектуры

1. Гетерогенный графовый трансформер (HGT)

Архитектура HGT использует типоспецифичное внимание:

┌─────────────────────────────────────────────────────────────────┐
│ Слой гетерогенного графового трансформера │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Вход: Признаки узлов H^(l), Структура графа G │
│ │
│ Для каждого целевого узла t с типом τ(t): │
│ │
│ 1. Типоспецифичная проекция: │
│ K_s = W_K^(τ(s)) · h_s (ключ источника) │
│ V_s = W_V^(τ(s)) · h_s (значение источника) │
│ Q_t = W_Q^(τ(t)) · h_t (запрос цели) │
│ │
│ 2. Реляционное внимание: │
│ Для типа ребра e = (τ(s), φ(e), τ(t)): │
│ α_st = softmax(Q_t · W_ATT^e · K_s / √d) │
│ │
│ 3. Агрегация сообщений: │
│ m_t = Σ α_st · W_MSG^e · V_s │
│ │
│ 4. Обновление: │
│ h_t^(l+1) = LayerNorm(h_t^(l) + FFN(m_t)) │
│ │
└─────────────────────────────────────────────────────────────────┘

2. Реляционная агрегация

// Концептуальная структура на Rust
struct RelationAggregator {
// Отдельные веса для каждого типа отношения
relation_weights: HashMap<EdgeType, Matrix>,
// Механизм внимания
attention: MultiHeadAttention,
}
impl RelationAggregator {
fn aggregate(&self, node: &Node, neighbors: &[Neighbor]) -> Vector {
let mut messages_by_type: HashMap<EdgeType, Vec<Vector>> = HashMap::new();
// Группируем сообщения по типу отношения
for neighbor in neighbors {
let transformed = self.relation_weights[&neighbor.edge_type]
.dot(&neighbor.features);
messages_by_type
.entry(neighbor.edge_type)
.or_default()
.push(transformed);
}
// Агрегируем внутри каждого типа, затем между типами
let type_embeddings: Vec<Vector> = messages_by_type
.iter()
.map(|(etype, msgs)| self.aggregate_type(etype, msgs))
.collect();
self.attention.aggregate(&type_embeddings)
}
}

3. Кодировщик метапутей

Метапути захватывают семантические отношения через типизированные пути:

Примеры метапутей для трейдинга:
1. Актив-корреляция-Актив-корреляция-Актив (A-c-A-c-A)
"Активы, коррелирующие через посредника"
2. Актив-торгуется_на-Биржа-торгуется_на-Актив (A-B-A)
"Активы на одной бирже"
3. Кошелёк-владеет-Актив-корреляция-Актив (К-А-А)
"Структура корреляции портфеля кита"
4. Актив-чувствительность-СостояниеРынка-чувствительность-Актив (А-С-А)
"Активы с похожей реакцией на рынок"

Обучение на основе метапутей

Ключевые метапути для крипто-трейдинга

┌────────────────────────────────────────────────────────────────────┐
│ Метапути для трейдинга │
├────────────────────────────────────────────────────────────────────┤
│ │
│ Метапуть 1: Кросс-активный моментум (A-corr-A) │
│ ───────────────────────────────────────────── │
│ BTC ──корреляция──→ ETH │
│ Захватывает: Прямое совместное движение цен │
│ Применение: Парный трейдинг, перелив моментума │
│ │
│ Метапуть 2: Биржевой арбитраж (A-B-A) │
│ ───────────────────────────────────────────── │
│ BTC ──торгуется──→ Bybit ←──торгуется── BTC │
│ ↓ │
│ Binance │
│ Захватывает: Ценовые расхождения между биржами │
│ Применение: Обнаружение арбитражных возможностей │
│ │
│ Метапуть 3: Следование за китами (К-владеет-А-корр-А) │
│ ───────────────────────────────────────────── │
│ Кит ──владеет──→ SOL ──корреляция──→ AVAX │
│ Захватывает: Паттерны потока умных денег │
│ Применение: Следование за накоплением китов │
│ │
│ Метапуть 4: Рыночный режим (А-чувств-Р-чувств-А) │
│ ───────────────────────────────────────────── │
│ ETH ──чувствительность──→ БычийРынок ←──чувств── SOL │
│ Захватывает: Активы с похожим поведением в режиме │
│ Применение: Построение портфеля по режимам │
│ │
│ Метапуть 5: Секторная ротация (А-сектор-А-сектор-А) │
│ ───────────────────────────────────────────── │
│ AAVE ──DeFi──→ UNI ──DeFi──→ COMP │
│ Захватывает: Секторные движения │
│ Применение: Стратегии секторного моментума │
│ │
└────────────────────────────────────────────────────────────────────┘

Применение в криптовалютном трейдинге

Гетерогенный граф рынка Bybit

┌─────────────────────────────────────────────────────────────────────┐
│ Гетерогенный торговый граф Bybit │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ СЛОЙ АКТИВОВ │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │ BTC │════│ ETH │════│ SOL │════│ AVAX│════│ ARB │ │ │
│ │ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ │ │
│ │ │ │ │ │ │ │ │
│ │ │ рёбра корреляции │ рёбра lead-lag │ │ │
│ └─────│──────────│──────────│──────────│──────────│───────────┘ │
│ │ │ │ │ │ │
│ ┌─────│──────────│──────────│──────────│──────────│───────────┐ │
│ │ │ СЛОЙ СТРУКТУРЫ РЫНКА │ │ │ │
│ │ ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ │ │
│ │ │ Спот │ │ Перп │ │ Спот │ │ Перп │ │ Перп │ │ │
│ │ │ BTC │ │ BTC │ │ ETH │ │ ETH │ │ SOL │ │ │
│ │ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ │ │
│ │ │ фандинг │ базис │ │ │ │ │
│ │ └────┬─────┘ └────┬─────┘ │ │ │
│ └──────────│────────────────────│────────────────│────────────┘ │
│ │ │ │ │
│ ┌──────────│────────────────────│────────────────│────────────┐ │
│ │ │ СЛОЙ КИТОВ │ │ │ │
│ │ ┌───────┴──────┐ ┌─────────┴────────┐ ┌───┴─────┐ │ │
│ │ │ Кошелёк кита │ │ Кошелёк кита │ │ Ритейл │ │ │
│ │ │ #1 │ │ #2 │ │ Пул │ │ │
│ │ └──────────────┘ └──────────────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘

Инженерия признаков по типам узлов

Тип узлаПризнакиРазмерностьЧастота обновления
Активцена, объём, доходность, волатильность, OI, фандинг32Реальное время
СпотРынокbid, ask, спред, глубина, дисбаланс16Реальное время
ПерпРынокmark_price, index_price, funding_rate, OI24Реальное время
Кошелёкбаланс, pnl, кол-во_tx, средний_размер12Минуты
РежимРынкатренд, режим_волатильности, режим_корреляции8Часы

Конвейер генерации торговых сигналов

┌────────────────────────────────────────────────────────────────────┐
│ Конвейер сигналов гетерогенного GNN │
├────────────────────────────────────────────────────────────────────┤
│ │
│ 1. Загрузка данных │
│ ├── Bybit REST API: Свечи, Тикеры, Стакан │
│ ├── Bybit WebSocket: Сделки и глубина в реальном времени │
│ └── Ончейн данные: Движения китов (опционально) │
│ │
│ 2. Построение графа │
│ ├── Создание/Обновление узлов по типам │
│ ├── Расчёт рёбер корреляции (скользящее окно) │
│ ├── Обновление рёбер структуры рынка │
│ └── Обновление рёбер позиций китов │
│ │
│ 3. Прямой проход HGNN │
│ ├── Типоспецифичная проекция признаков │
│ ├── Реляционная передача сообщений │
│ ├── Агрегация внимания по метапутям │
│ └── Генерация эмбеддингов узлов │
│ │
│ 4. Головы предсказаний │
│ ├── Направление: Классификация вверх/вниз/нейтрально │
│ ├── Величина: Регрессия ожидаемой доходности │
│ ├── Уверенность: Оценка неопределённости предсказания │
│ └── Предсказание рёбер: Появление новых связей │
│ │
│ 5. Агрегация сигналов │
│ ├── Объединение предсказаний по метапутям │
│ ├── Взвешивание по исторической точности │
│ └── Генерация финального торгового сигнала │
│ │
│ 6. Размер позиции и исполнение │
│ ├── Критерий Келли с типоспецифичным риском │
│ ├── Корректировка кросс-активной корреляции │
│ └── Исполнение через API Bybit │
│ │
└────────────────────────────────────────────────────────────────────┘

Стратегия реализации

Архитектура модулей

heterogeneous_gnn_trading/
├── Cargo.toml
├── src/
│ ├── lib.rs # Корень библиотеки
│ ├── graph/
│ │ ├── mod.rs # Модуль графов
│ │ ├── node.rs # Типизированные узлы
│ │ ├── edge.rs # Типизированные рёбра
│ │ ├── schema.rs # Схема графа
│ │ └── heterogeneous.rs # Операции с гетерогенным графом
│ ├── gnn/
│ │ ├── mod.rs # Модуль GNN
│ │ ├── layers.rs # Слои HGNN
│ │ ├── attention.rs # Типоосознанное внимание
│ │ ├── metapath.rs # Кодировщик метапутей
│ │ └── aggregation.rs # Семантическая агрегация
│ ├── data/
│ │ ├── mod.rs # Модуль данных
│ │ ├── bybit.rs # Клиент API Bybit
│ │ ├── features.rs # Инженерия признаков
│ │ └── types.rs # Типы рыночных данных
│ ├── strategy/
│ │ ├── mod.rs # Модуль стратегии
│ │ ├── signals.rs # Генерация сигналов
│ │ └── execution.rs # Исполнение ордеров
│ └── utils/
│ ├── mod.rs # Утилиты
│ └── metrics.rs # Метрики производительности
├── examples/
│ ├── basic_hgnn.rs # Базовый пример HGNN
│ ├── live_trading.rs # Демо живой торговли
│ └── backtest.rs # Бэктестинг
└── tests/
└── integration.rs # Интеграционные тесты

Ключевые принципы проектирования

  1. Типобезопасность: Использование системы типов Rust для типов узлов/рёбер
  2. Модульность: Каждый компонент независим и тестируем
  3. Производительность: Эффективные разреженные операции для больших графов
  4. Расширяемость: Легко добавлять новые типы узлов/рёбер
  5. Готовность к реальному времени: Проектирование для потоковых обновлений

Управление рисками

Типоосознанные метрики риска

┌────────────────────────────────────────────────────────────────────┐
│ Риск по типам узлов/рёбер │
├────────────────────────────────────────────────────────────────────┤
│ │
│ Факторы риска активов: │
│ • Риск волатильности (историческая волатильность) │
│ • Риск ликвидности (глубина стакана) │
│ • Риск фандинга (для бессрочных контрактов) │
│ • Риск разрыва корреляции │
│ │
│ Факторы риска отношений: │
│ • Нестабильность корреляции (дисперсия скользящей корреляции) │
│ • Вероятность разворота lead-lag │
│ • Риски конкретных бирж (вывод, API) │
│ • Неопределённость поведения китов │
│ │
│ Риск структуры графа: │
│ • Изменения коэффициента кластеризации │
│ • Сдвиги центральности │
│ • Скорость появления новых рёбер │
│ • Стабильность структуры сообществ │
│ │
└────────────────────────────────────────────────────────────────────┘

Лимиты позиций по типам

┌────────────────────────────────────────────────────────────────┐
│ Ограничения позиций │
├────────────────────────────────────────────────────────────────┤
│ │
│ Лимиты на актив: │
│ • Макс. позиция: 5% портфеля │
│ • Макс. плечо: 3x │
│ • Мин. ликвидность: $1M дневного объёма │
│ │
│ Кросс-активные лимиты: │
│ • Макс. коррелированная экспозиция: 15% │
│ • Макс. секторная экспозиция: 20% │
│ • Макс. экспозиция на одну биржу: 40% │
│ │
│ Типоспецифичные корректировки: │
│ • Высококоррелированные пары: снижение на фактор корреляции │
│ • Активы под влиянием китов: дополнительный буфер │
│ • Площадки с низкой ликвидностью: более широкий стоп-лосс │
│ │
└────────────────────────────────────────────────────────────────┘

Автоматические выключатели

  1. Смена корреляционного режима: Пауза при сдвиге средней кросс-активной корреляции >2σ
  2. Сдвиг распределения типов: Оповещение при значительном изменении пропорций типов узлов
  3. Разрыв метапутей: Снижение экспозиции при потере предсказательной силы ключевых метапутей
  4. Всплеск активности китов: Повышенная осторожность при необычных движениях китов

Метрики производительности

Оценка модели

МетрикаОписаниеЦель
Точность классификации узловПравильное предсказание типа узла> 95%
Предсказание типа ребраКлассификация отношений рёбер> 85%
AUC предсказания связейПредсказание новых рёбер> 0.80
Предсказание направленияНаправление движения цены> 55%
Важность метапутейРанжирование предсказательной силы метапутейСтабильно

Торговая эффективность

МетрикаОписаниеЦель
Коэффициент ШарпаДоходность с поправкой на риск> 2.0
Коэффициент СортиноС поправкой на нисходящий риск> 2.5
Макс. просадкаНаибольшее падение от пика< 15%
ВинрейтДоля прибыльных сделок> 52%
Профит-факторВаловая прибыль / Валовый убыток> 1.5

Бюджет задержки

┌─────────────────────────────────────────────────┐
│ Требования к задержке │
├─────────────────────────────────────────────────┤
│ Загрузка данных: < 10мс │
│ Обновление графа: < 30мс │
│ Типовая проекция: < 20мс │
│ Передача сообщений (3 хопа): < 80мс │
│ Агрегация метапутей: < 40мс │
│ Генерация сигнала: < 20мс │
├─────────────────────────────────────────────────┤
│ Общий раунд-трип: < 200мс │
└─────────────────────────────────────────────────┘

Литература

  1. Heterogeneous Graph Transformer

  2. Heterogeneous Graph Attention Network (HAN)

    • Wang, X., et al. (2019). “Heterogeneous Graph Attention Network.” WWW 2019
  3. Metapath2Vec

    • Dong, Y., et al. (2017). “metapath2vec: Scalable Representation Learning for Heterogeneous Networks.” KDD 2017
  4. Relational Graph Convolutional Networks

    • Schlichtkrull, M., et al. (2018). “Modeling Relational Data with Graph Convolutional Networks.” ESWC 2018
  5. Financial Heterogeneous Networks

    • Cheng, D., et al. (2021). “Financial Event Prediction with Heterogeneous Information.” ACM TKDD
  6. Crypto Market Structure

    • Makarov, I., & Schoar, A. (2020). “Trading and Arbitrage in Cryptocurrency Markets.” Journal of Financial Economics

Следующие шаги


Глава 345 из серии “Машинное обучение для трейдинга”