Глава 345: Гетерогенные графовые нейронные сети для трейдинга
Обзор
Гетерогенные графовые нейронные сети (Heterogeneous GNN, HGNN) расширяют традиционные GNN для работы с графами, содержащими множество типов узлов и рёбер. На финансовых рынках это критически важно, поскольку рыночная экосистема состоит из разнородных сущностей (активы, биржи, трейдеры, источники новостей), связанных различными типами отношений (корреляции, поток ордеров, владение, влияние).
Содержание
- Введение
- Теоретические основы
- Построение гетерогенного графа
- Компоненты архитектуры
- Обучение на основе метапутей
- Применение в криптовалютном трейдинге
- Стратегия реализации
- Управление рисками
- Метрики производительности
- Литература
Введение
Финансовые рынки по своей природе являются гетерогенными системами. В отличие от гомогенных графов, где все узлы представляют один тип сущности, реальные рынки состоят из:
- Множества типов узлов: активы, биржи, кошельки, трейдеры, источники новостей
- Множества типов рёбер: ценовая корреляция, поток ордеров, арбитраж фандинга, переводы китов
- Богатых семантических отношений: каждый тип связи несёт различный смысл
Почему гетерогенные 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. Реляционная агрегация
// Концептуальная структура на Ruststruct 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, OI | 24 | Реальное время |
| Кошелёк | баланс, 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 # Интеграционные тестыКлючевые принципы проектирования
- Типобезопасность: Использование системы типов Rust для типов узлов/рёбер
- Модульность: Каждый компонент независим и тестируем
- Производительность: Эффективные разреженные операции для больших графов
- Расширяемость: Легко добавлять новые типы узлов/рёбер
- Готовность к реальному времени: Проектирование для потоковых обновлений
Управление рисками
Типоосознанные метрики риска
┌────────────────────────────────────────────────────────────────────┐│ Риск по типам узлов/рёбер │├────────────────────────────────────────────────────────────────────┤│ ││ Факторы риска активов: ││ • Риск волатильности (историческая волатильность) ││ • Риск ликвидности (глубина стакана) ││ • Риск фандинга (для бессрочных контрактов) ││ • Риск разрыва корреляции ││ ││ Факторы риска отношений: ││ • Нестабильность корреляции (дисперсия скользящей корреляции) ││ • Вероятность разворота lead-lag ││ • Риски конкретных бирж (вывод, API) ││ • Неопределённость поведения китов ││ ││ Риск структуры графа: ││ • Изменения коэффициента кластеризации ││ • Сдвиги центральности ││ • Скорость появления новых рёбер ││ • Стабильность структуры сообществ ││ │└────────────────────────────────────────────────────────────────────┘Лимиты позиций по типам
┌────────────────────────────────────────────────────────────────┐│ Ограничения позиций │├────────────────────────────────────────────────────────────────┤│ ││ Лимиты на актив: ││ • Макс. позиция: 5% портфеля ││ • Макс. плечо: 3x ││ • Мин. ликвидность: $1M дневного объёма ││ ││ Кросс-активные лимиты: ││ • Макс. коррелированная экспозиция: 15% ││ • Макс. секторная экспозиция: 20% ││ • Макс. экспозиция на одну биржу: 40% ││ ││ Типоспецифичные корректировки: ││ • Высококоррелированные пары: снижение на фактор корреляции ││ • Активы под влиянием китов: дополнительный буфер ││ • Площадки с низкой ликвидностью: более широкий стоп-лосс ││ │└────────────────────────────────────────────────────────────────┘Автоматические выключатели
- Смена корреляционного режима: Пауза при сдвиге средней кросс-активной корреляции >2σ
- Сдвиг распределения типов: Оповещение при значительном изменении пропорций типов узлов
- Разрыв метапутей: Снижение экспозиции при потере предсказательной силы ключевых метапутей
- Всплеск активности китов: Повышенная осторожность при необычных движениях китов
Метрики производительности
Оценка модели
| Метрика | Описание | Цель |
|---|---|---|
| Точность классификации узлов | Правильное предсказание типа узла | > 95% |
| Предсказание типа ребра | Классификация отношений рёбер | > 85% |
| AUC предсказания связей | Предсказание новых рёбер | > 0.80 |
| Предсказание направления | Направление движения цены | > 55% |
| Важность метапутей | Ранжирование предсказательной силы метапутей | Стабильно |
Торговая эффективность
| Метрика | Описание | Цель |
|---|---|---|
| Коэффициент Шарпа | Доходность с поправкой на риск | > 2.0 |
| Коэффициент Сортино | С поправкой на нисходящий риск | > 2.5 |
| Макс. просадка | Наибольшее падение от пика | < 15% |
| Винрейт | Доля прибыльных сделок | > 52% |
| Профит-фактор | Валовая прибыль / Валовый убыток | > 1.5 |
Бюджет задержки
┌─────────────────────────────────────────────────┐│ Требования к задержке │├─────────────────────────────────────────────────┤│ Загрузка данных: < 10мс ││ Обновление графа: < 30мс ││ Типовая проекция: < 20мс ││ Передача сообщений (3 хопа): < 80мс ││ Агрегация метапутей: < 40мс ││ Генерация сигнала: < 20мс │├─────────────────────────────────────────────────┤│ Общий раунд-трип: < 200мс │└─────────────────────────────────────────────────┘Литература
-
Heterogeneous Graph Transformer
- Hu, Z., et al. (2020). “Heterogeneous Graph Transformer.” WWW 2020
- URL: https://arxiv.org/abs/2003.01332
-
Heterogeneous Graph Attention Network (HAN)
- Wang, X., et al. (2019). “Heterogeneous Graph Attention Network.” WWW 2019
-
Metapath2Vec
- Dong, Y., et al. (2017). “metapath2vec: Scalable Representation Learning for Heterogeneous Networks.” KDD 2017
-
Relational Graph Convolutional Networks
- Schlichtkrull, M., et al. (2018). “Modeling Relational Data with Graph Convolutional Networks.” ESWC 2018
-
Financial Heterogeneous Networks
- Cheng, D., et al. (2021). “Financial Event Prediction with Heterogeneous Information.” ACM TKDD
-
Crypto Market Structure
- Makarov, I., & Schoar, A. (2020). “Trading and Arbitrage in Cryptocurrency Markets.” Journal of Financial Economics
Следующие шаги
- Простое объяснение — Версия для начинающих
- English Version — Английская версия
- Запуск примеров — Рабочий код на Rust
Глава 345 из серии “Машинное обучение для трейдинга”