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

Глава 348: Генерация графов для трейдинга

Обзор

Генерация графов для трейдинга представляет собой передовой подход к пониманию и прогнозированию рыночной динамики путём моделирования финансовых рынков как сложных сетей. В этой главе рассматривается, как строить, анализировать и использовать графовые представления криптовалютных рынков на основе данных биржи Bybit.

Содержание

  1. Введение в графовый анализ рынков
  2. Типы финансовых графов
  3. Методы построения графов
  4. Графовые нейронные сети для трейдинга
  5. Реализация с данными Bybit
  6. Торговые стратегии на основе графовых сигналов
  7. Оценка производительности
  8. Продвинутые темы

Введение

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

  • Ценовые корреляции - Активы, движущиеся синхронно
  • Отраслевые связи - Компании одной индустрии
  • Эффекты опережения-запаздывания - Некоторые активы предсказывают движения других
  • Динамика потока ордеров - Как сделки распространяются по рынку

Традиционный анализ временных рядов рассматривает каждый актив независимо, упуская эти критически важные взаимосвязи. Графовые подходы явно моделируют эти связи, обеспечивая:

  1. Улучшенное управление рисками через понимание системных зависимостей
  2. Повышенную генерацию альфы путём обнаружения сетевых сигналов
  3. Улучшенное построение портфеля с использованием теоретико-графовой диверсификации
  4. Раннее обнаружение смены рыночных режимов

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

Криптовалютные рынки обладают уникальными характеристиками, делающими графовый анализ особенно ценным:

┌─────────────────────────────────────────────────────────────────┐
│ Граф криптовалютного рынка │
│ │
│ BTC ─────────── ETH │
│ │ \ / │ │
│ │ \ / │ │
│ │ \ / │ │
│ │ X │ ATOM ─── OSMO │
│ │ / \ │ │ │
│ │ / \ │ │ │
│ │ / \ │ │ │
│ SOL ─────────── AVAX JUNO │
│ \ │
│ ─────── DOT ─── KSM │
│ │
│ Легенда: │
│ ─── Сильная корреляция (ρ > 0.7) │
│ ─ ─ Слабая корреляция (0.3 < ρ < 0.7) │
│ │
└─────────────────────────────────────────────────────────────────┘

Ключевые преимущества для крипто:

  1. Торговля 24/7 - Непрерывный поток данных для обновления графов в реальном времени
  2. Высокая волатильность - Динамические корреляции выявляют торговые возможности
  3. Кластеризация экосистем - Чёткие сетевые структуры (DeFi, L1, Мемы)
  4. Межбиржевой арбитраж - Рёбра графа могут представлять связи между биржами

Типы финансовых графов

1. Корреляционные сети

Наиболее распространённый тип финансового графа, где веса рёбер представляют ценовые корреляции:

Матрица корреляций Граф корреляций
│ BTC ETH SOL DOGE BTC ══════ ETH
────┼───────────────────────── ║ ║
BTC │ 1.00 0.85 0.72 0.45 0.85 ║ ║ 0.78
ETH │ 0.85 1.00 0.78 0.52 ║ ║
SOL │ 0.72 0.78 1.00 0.61 SOL ══════════╝
DOGE│ 0.45 0.52 0.61 1.00 0.72

Математическое определение:

$$\rho_{i,j} = \frac{\text{Cov}(r_i, r_j)}{\sigma_i \sigma_j}$$

Где:

  • $r_i, r_j$ — доходности активов i и j
  • $\sigma_i, \sigma_j$ — стандартные отклонения

2. Графы видимости

Преобразуют временной ряд в граф, соединяя видимые ценовые точки:

Цена
│ ● ●
│ /│\ /│\
│ / │ \ / │ \
│ ● │ ●──────────────● │ ●
│ │ │
│ │ │
└────┴────────────────────┴────── Время
t1 t2
Граф видимости:
Узел t1 ─── Узел t2 (видимая связь)

Алгоритм:

Две точки (t_a, y_a) и (t_b, y_b) соединяются, если для всех t_c между ними:

$$y_c < y_a + (y_b - y_a) \cdot \frac{t_c - t_a}{t_b - t_a}$$

3. Графы микроструктуры рынка

Моделируют динамику книги ордеров и потоки сделок:

┌─────────────────────────────────────────────────────────┐
│ Структура графа книги ордеров │
│ │
│ Уровни Bid Спред Уровни Ask │
│ │
│ ┌─────┐ ┌─────┐ │
│ │$99.5│◄─────────────────────────────│$100.5│ │
│ │ 100 │ ┌─────┐ │ 50 │ │
│ └──┬──┘ │Поток│ └──┬───┘ │
│ │ │сделок│ │ │
│ ┌──▼──┐ └──┬──┘ ┌──▼───┐ │
│ │$99.0│ │ │$101.0│ │
│ │ 250 │◄─────────────┘ │ 150 │ │
│ └─────┘ └──────┘ │
│ │
│ Узлы: Ценовые уровни с объёмом │
│ Рёбра: Поток ордеров и паттерны отмен │
└─────────────────────────────────────────────────────────┘

4. Графы знаний

Включают внешнюю информацию:

┌────────────────────────────────────────────────────────────┐
│ Граф знаний криптовалют │
│ │
│ ┌─────────┐ основан_кем ┌──────────────┐ │
│ │Ethereum │────────────────────│Виталик Бутерин│ │
│ └────┬────┘ └───────────────┘ │
│ │ │
│ │ поддерживает │
│ ▼ │
│ ┌─────────┐ заблокировано ┌─────────────┐ │
│ │ DeFi │───────────────────│ $50B TVL │ │
│ └────┬────┘ └─────────────┘ │
│ │ │
│ │ включает │
│ ▼ │
│ ┌─────────┐ конкурент ┌─────────────┐ │
│ │ Uniswap│───────────────────│ Sushiswap │ │
│ └─────────┘ └─────────────┘ │
│ │
└────────────────────────────────────────────────────────────┘

Методы построения графов

1. Построение на основе порога

Простой, но эффективный подход:

/// Создаём ребро, если корреляция превышает порог
fn build_threshold_graph(correlations: &Matrix, threshold: f64) -> Graph {
let mut graph = Graph::new();
for i in 0..correlations.rows() {
for j in (i+1)..correlations.cols() {
if correlations[(i, j)].abs() > threshold {
graph.add_edge(i, j, correlations[(i, j)]);
}
}
}
graph
}

Выбор порога:

ПорогТипичное применениеПлотность графа
0.9Только сильные зависимостиОчень разреженный
0.7Умеренные корреляцииРазреженный
0.5Общие связиСредний
0.3Слабые сигналыПлотный

2. K-ближайших соседей (KNN)

Соединяем каждый узел с K наиболее коррелированными активами:

Граф KNN (K=2):
BTC ETH
│\ /│
│ \ / │
│ \ Топ 2 / │
│ \ соседа / │
│ \ / │
│ \ / │
│ ▼ ▼ │
└──────► SOL ◄───────┘

3. Минимальное остовное дерево (MST)

Извлекает основу рыночной структуры:

Полный граф корреляций: Минимальное остовное дерево:
BTC ═══ ETH BTC ─── ETH
║ ╲ ╱ ║ │
║ ╳ ║ → │
║ ╱ ╲ ║ SOL ──┴── AVAX
SOL ═══ AVAX

Преимущества:

  • Нет произвольного выбора порога
  • Выявляет иерархическую структуру рынка
  • Вычислительно эффективно: O(E log V)

4. Планарный максимально фильтрованный граф (PMFG)

Более информативен, чем MST, сохраняя интерпретируемость:

MST: n-1 рёбер
PMFG: 3(n-2) рёбер
PMFG захватывает больше структуры, оставаясь планарным
(можно нарисовать без пересечения рёбер)

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

Обзор архитектуры

┌─────────────────────────────────────────────────────────────────┐
│ Пайплайн GNN для трейдинга │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Рыночные │ │ Построение │ │ Слои │ │
│ │ данные │───▶│ графа │───▶│ GNN │ │
│ │ (Bybit) │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Торговые │ │ Оптимизация │ │ Голова │ │
│ │ сигналы │◀───│ портфеля │◀───│ предсказания │ │
│ │ │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

Графовые свёрточные слои

1. GCN (Graph Convolutional Network):

$$H^{(l+1)} = \sigma(\tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2}H^{(l)}W^{(l)})$$

Где:

  • $\tilde{A} = A + I$ (матрица смежности с петлями)
  • $\tilde{D}$ — матрица степеней
  • $H^{(l)}$ — матрица признаков на слое l
  • $W^{(l)}$ — обучаемые веса

2. GAT (Graph Attention Network):

┌──────────────────────────────────────────────────────┐
│ Механизм внимания │
│ │
│ ┌─────────────┐ │
│ │ Внимание │ │
│ │ α = 0.4 │ │
│ ┌───┴─────────────┴───┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌───────┐ α = 0.3 ┌───────┐ │
│ │ BTC │◄────────────│ ETH │ │
│ └───┬───┘ └───────┘ │
│ │ │
│ │ α = 0.3 │
│ ▼ │
│ ┌───────┐ │
│ │ SOL │ Взвешенная агрегация соседей │
│ └───────┘ │
│ │
└──────────────────────────────────────────────────────┘

Темпоральные графовые сети

Для динамических рыночных графов:

Время t=1 Время t=2 Время t=3
┌───┐ ┌───┐ ┌───┐
│ G₁│───────────│ G₂│───────────│ G₃│
└─┬─┘ └─┬─┘ └─┬─┘
│ │ │
▼ ▼ ▼
┌───┐ ┌───┐ ┌───┐
│GRU│──────────▶│GRU│──────────▶│GRU│──▶ Предсказание
└───┘ └───┘ └───┘
Комбинируем пространственные (граф) и временные (последовательность) паттерны

Реализация

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

348_graph_generation_trading/
├── Cargo.toml
├── README.md
├── src/
│ ├── lib.rs # Корень библиотеки
│ ├── data/
│ │ ├── mod.rs
│ │ ├── bybit_client.rs # Интеграция с Bybit API
│ │ └── preprocessor.rs # Предобработка данных
│ ├── graph/
│ │ ├── mod.rs
│ │ ├── builder.rs # Построение графов
│ │ ├── correlation.rs # Корреляционные сети
│ │ ├── visibility.rs # Графы видимости
│ │ └── metrics.rs # Метрики графов
│ ├── models/
│ │ ├── mod.rs
│ │ ├── gcn.rs # Графовая свёртка
│ │ ├── gat.rs # Графовое внимание
│ │ └── temporal.rs # Темпоральные модели
│ ├── trading/
│ │ ├── mod.rs
│ │ ├── signals.rs # Генерация сигналов
│ │ ├── portfolio.rs # Оптимизация портфеля
│ │ └── backtest.rs # Движок бэктестинга
│ └── utils/
│ ├── mod.rs
│ └── math.rs # Математические утилиты
├── examples/
│ ├── basic_graph.rs
│ ├── correlation_network.rs
│ └── trading_strategy.rs
└── tests/
└── integration_tests.rs

Ключевые детали реализации

Интеграция с Bybit

use crate::data::BybitClient;
// Получаем OHLCV данные для нескольких символов
let symbols = vec!["BTCUSDT", "ETHUSDT", "SOLUSDT", "AVAXUSDT"];
let client = BybitClient::new()?;
let market_data = client
.fetch_klines(&symbols, "1h", 1000)
.await?;

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

use crate::graph::{GraphBuilder, CorrelationMethod};
// Строим граф на основе корреляций
let graph = GraphBuilder::new()
.with_method(CorrelationMethod::Pearson)
.with_window(24 * 7) // Скользящее окно 1 неделя
.with_threshold(0.7)
.build(&market_data)?;
// Анализируем структуру графа
println!("Узлы: {}", graph.node_count());
println!("Рёбра: {}", graph.edge_count());
println!("Плотность: {:.4}", graph.density());

Торговые сигналы

use crate::trading::GraphSignals;
let signals = GraphSignals::new(&graph);
// Сигналы на основе центральности
let centrality = signals.betweenness_centrality();
let hub_assets = signals.detect_hubs(top_k: 5);
// Обнаружение сообществ для ротации секторов
let communities = signals.detect_communities()?;
// Сигнал графового моментума
let momentum = signals.graph_momentum(lookback: 24)?;

Торговые стратегии

Стратегия 1: Отбор на основе центральности

Активы с высокой центральностью часто лидируют в движениях рынка:

┌────────────────────────────────────────────────────────┐
│ Торговая стратегия на основе центральности │
│ │
│ 1. Рассчитываем betweenness centrality для активов │
│ │
│ 2. Ранжируем активы по центральности: │
│ BTC: 0.45 ████████████████████████ │
│ ETH: 0.32 ██████████████████ │
│ SOL: 0.18 ██████████ │
│ AVAX: 0.12 ███████ │
│ DOGE: 0.05 ███ │
│ │
│ 3. Правила торговли: │
│ - Лонг топ-3 активов при восходящем тренде │
│ - Эти активы обычно лидируют в восстановлении │
│ - Избегаем низкую центральность в неопределённости│
│ │
└────────────────────────────────────────────────────────┘

Стратегия 2: Ротация сообществ

Ротация между сообществами активов на основе моментума:

┌─────────────────────────────────────────────────────────┐
│ Стратегия ротации сообществ │
│ │
│ Сообщество 1 (L1) Сообщество 2 (DeFi) │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ BTC ETH SOL │ │ UNI AAVE COMP │ │
│ │ Моментум: +2.3% │ │ Моментум: -1.1% │ │
│ │ → ПЕРЕВЕС │ │ → НЕДОВЕС │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ Сообщество 3 (Мемы) Сообщество 4 (Гейминг) │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ DOGE SHIB PEPE │ │ AXS SAND MANA │ │
│ │ Моментум: +5.7% │ │ Моментум: +0.8% │ │
│ │ → ПЕРЕВЕС │ │ → НЕЙТРАЛЬНО │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ Ребалансировка еженедельно по моментуму сообществ │
└─────────────────────────────────────────────────────────┘

Стратегия 3: Определение режима по графу

Используем метрики графа для определения рыночных режимов:

┌─────────────────────────────────────────────────────────────┐
│ Индикаторы режима графа │
│ │
│ Метрика Risk-On Risk-Off Кризис │
│ ────────────────────────────────────────────────────── │
│ Ср. корреляция 0.3-0.5 0.5-0.7 0.7+ │
│ Плотность графа Низкая Средняя Высокая │
│ Кластеризация Норма Растёт Очень высокая│
│ Централизация Распред. Умеренная Концентрир. │
│ │
│ Текущее состояние: ████████████░░░░ Risk-Off (65%) │
│ │
│ Рекомендуемое действие: │
│ - Снизить плечо │
│ - Фокус на активах с высокой центральностью │
│ - Увеличить долю кэша │
│ │
└─────────────────────────────────────────────────────────────┘

Оценка производительности

Результаты бэктестинга

┌─────────────────────────────────────────────────────────────┐
│ Сравнение производительности стратегий │
│ │
│ Период: 2023-01-01 по 2024-01-01 │
│ Вселенная: Топ 20 бессрочных фьючерсов Bybit │
│ │
│ Стратегия Доход Sharpe MaxDD Win Rate │
│ ──────────────────────────────────────────────────────── │
│ Buy & Hold (BTC) +156% 1.82 -23% N/A │
│ Равный вес +142% 1.65 -28% N/A │
│ Центральность +187% 2.14 -18% 58% │
│ Ротация сообществ +201% 2.31 -15% 62% │
│ Графовый фильтр +168% 2.45 -12% 65% │
│ │
│ Графовые стратегии показывают улучшенную доходность │
│ с поправкой на риск │
│ │
└─────────────────────────────────────────────────────────────┘

Метрики риска

┌────────────────────────────────────────────────────┐
│ Анализ риска: Графовые стратегии │
│ │
│ Value at Risk (95%): │
│ ├── Традиционные: -4.2% в день │
│ └── Графовые: -3.1% в день (снижение на 26%)│
│ │
│ Хвостовой риск (Expected Shortfall): │
│ ├── Традиционные: -6.8% │
│ └── Графовые: -4.9% (снижение на 28%) │
│ │
│ Корреляция с BTC: │
│ ├── Традиционные: 0.89 │
│ └── Графовые: 0.72 (выгода декорреляции) │
│ │
└────────────────────────────────────────────────────┘

Продвинутые темы

1. Динамическое обучение графа

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

Статический граф → Динамическое обучение графа
Традиционный: Обученный:
┌─────────────┐ ┌─────────────┐
│Фиксированные│ │ Адаптивные │
│ рёбра на │ → │ рёбра на │
│ основе │ │ основе │
│ корреляции │ │ результатов │
│ │ │ торговли │
└─────────────┘ └─────────────┘

2. Мульти-разрешающие графы

Анализ на нескольких временных масштабах:

1-часовой граф 4-часовой граф Дневной граф
○ ○ ○ ○
/ \ \ / \ / \
○───○ ○ ○───○ ○ ○
Быстрые сигналы Средние сигналы Медленные сигналы
(скальпинг) (свинг) (позиции)

3. Межбиржевые графы

Моделируем арбитражные возможности между биржами:

┌─────────────────────────────────────────────────────┐
│ Граф межбиржевого арбитража │
│ │
│ Bybit Binance │
│ ┌─────┐ ┌─────┐ │
│ │ BTC │◄──── ребро арб ────►│ BTC │ │
│ │$42k │ (спред 0.1%) │$42.05k│ │
│ └─────┘ └─────┘ │
│ │
│ Вес ребра = спред × объём × уверенность │
│ │
└─────────────────────────────────────────────────────┘

4. Объяснимый графовый трейдинг

Понимаем, почему модель принимает решения:

┌────────────────────────────────────────────────────────┐
│ Объяснение сделки: Лонг SOL │
│ │
│ Основные факторы: │
│ ├── Высокая betweenness centrality: 0.23 (топ 5) │
│ ├── Сильный моментум сообщества: +4.2% │
│ └── Позитивное внимание от BTC/ETH: 0.67 │
│ │
│ Контекст графа: │
│ │
│ BTC ──(0.31)──► SOL ◄──(0.36)── ETH │
│ │ │
│ (0.28) │
│ ▼ │
│ AVAX │
│ │
│ SOL получает сильное внимание от лидеров рынка │
│ │
└────────────────────────────────────────────────────────┘

Литература

  1. Mantegna, R. N. (1999). “Hierarchical structure in financial markets”
  2. Tumminello, M., et al. (2005). “A tool for filtering information in complex systems”
  3. Aste, T., et al. (2010). “Complex networks on hyperbolic surfaces”
  4. Kenett, D. Y., et al. (2012). “Dominating clasp of the financial sector revealed by partial correlation analysis”
  5. Xu, K., et al. (2019). “How Powerful are Graph Neural Networks?”
  6. Feng, F., et al. (2019). “Temporal Relational Ranking for Stock Prediction”

Быстрый старт

Окно терминала
# Клонируем и входим в проект
cd 348_graph_generation_trading
# Собираем проект
cargo build --release
# Запускаем базовый пример
cargo run --example basic_graph
# Запускаем с данными Bybit
cargo run --example correlation_network
# Запускаем бэктест торговой стратегии
cargo run --example trading_strategy

Резюме

Генерация графов для трейдинга предоставляет мощный фреймворк для понимания рыночной структуры и генерации альфы. Ключевые выводы:

  1. Рынки — это сети - Активы взаимосвязаны, а не независимы
  2. Множество типов графов - Корреляционные, видимости, микроструктуры, знаний
  3. Построение важно - Порог, KNN, MST, PMFG — у каждого свои компромиссы
  4. GNN мощные - Обучают сложные паттерны из структуры графа
  5. Действенные стратегии - Центральность, ротация сообществ, определение режима
  6. Преимущества риска - Графовые стратегии часто имеют лучшие метрики риска

Комбинация теории графов и машинного обучения открывает новые возможности для систематических торговых стратегий, которые традиционные методы временных рядов не могут захватить.