Глава 348: Генерация графов для трейдинга
Обзор
Генерация графов для трейдинга представляет собой передовой подход к пониманию и прогнозированию рыночной динамики путём моделирования финансовых рынков как сложных сетей. В этой главе рассматривается, как строить, анализировать и использовать графовые представления криптовалютных рынков на основе данных биржи Bybit.
Содержание
- Введение в графовый анализ рынков
- Типы финансовых графов
- Методы построения графов
- Графовые нейронные сети для трейдинга
- Реализация с данными Bybit
- Торговые стратегии на основе графовых сигналов
- Оценка производительности
- Продвинутые темы
Введение
Финансовые рынки по своей природе являются взаимосвязанными системами, где активы влияют друг на друга через различные механизмы:
- Ценовые корреляции - Активы, движущиеся синхронно
- Отраслевые связи - Компании одной индустрии
- Эффекты опережения-запаздывания - Некоторые активы предсказывают движения других
- Динамика потока ордеров - Как сделки распространяются по рынку
Традиционный анализ временных рядов рассматривает каждый актив независимо, упуская эти критически важные взаимосвязи. Графовые подходы явно моделируют эти связи, обеспечивая:
- Улучшенное управление рисками через понимание системных зависимостей
- Повышенную генерацию альфы путём обнаружения сетевых сигналов
- Улучшенное построение портфеля с использованием теоретико-графовой диверсификации
- Раннее обнаружение смены рыночных режимов
Почему графы для криптовалютного трейдинга?
Криптовалютные рынки обладают уникальными характеристиками, делающими графовый анализ особенно ценным:
┌─────────────────────────────────────────────────────────────────┐│ Граф криптовалютного рынка ││ ││ BTC ─────────── ETH ││ │ \ / │ ││ │ \ / │ ││ │ \ / │ ││ │ X │ ATOM ─── OSMO ││ │ / \ │ │ ││ │ / \ │ │ ││ │ / \ │ │ ││ SOL ─────────── AVAX JUNO ││ \ ││ ─────── DOT ─── KSM ││ ││ Легенда: ││ ─── Сильная корреляция (ρ > 0.7) ││ ─ ─ Слабая корреляция (0.3 < ρ < 0.7) ││ │└─────────────────────────────────────────────────────────────────┘Ключевые преимущества для крипто:
- Торговля 24/7 - Непрерывный поток данных для обновления графов в реальном времени
- Высокая волатильность - Динамические корреляции выявляют торговые возможности
- Кластеризация экосистем - Чёткие сетевые структуры (DeFi, L1, Мемы)
- Межбиржевой арбитраж - Рёбра графа могут представлять связи между биржами
Типы финансовых графов
1. Корреляционные сети
Наиболее распространённый тип финансового графа, где веса рёбер представляют ценовые корреляции:
Матрица корреляций Граф корреляций
│ BTC ETH SOL DOGE BTC ══════ ETH────┼───────────────────────── ║ ║BTC │ 1.00 0.85 0.72 0.45 0.85 ║ ║ 0.78ETH │ 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 получает сильное внимание от лидеров рынка ││ │└────────────────────────────────────────────────────────┘Литература
- Mantegna, R. N. (1999). “Hierarchical structure in financial markets”
- Tumminello, M., et al. (2005). “A tool for filtering information in complex systems”
- Aste, T., et al. (2010). “Complex networks on hyperbolic surfaces”
- Kenett, D. Y., et al. (2012). “Dominating clasp of the financial sector revealed by partial correlation analysis”
- Xu, K., et al. (2019). “How Powerful are Graph Neural Networks?”
- Feng, F., et al. (2019). “Temporal Relational Ranking for Stock Prediction”
Быстрый старт
# Клонируем и входим в проектcd 348_graph_generation_trading
# Собираем проектcargo build --release
# Запускаем базовый примерcargo run --example basic_graph
# Запускаем с данными Bybitcargo run --example correlation_network
# Запускаем бэктест торговой стратегииcargo run --example trading_strategyРезюме
Генерация графов для трейдинга предоставляет мощный фреймворк для понимания рыночной структуры и генерации альфы. Ключевые выводы:
- Рынки — это сети - Активы взаимосвязаны, а не независимы
- Множество типов графов - Корреляционные, видимости, микроструктуры, знаний
- Построение важно - Порог, KNN, MST, PMFG — у каждого свои компромиссы
- GNN мощные - Обучают сложные паттерны из структуры графа
- Действенные стратегии - Центральность, ротация сообществ, определение режима
- Преимущества риска - Графовые стратегии часто имеют лучшие метрики риска
Комбинация теории графов и машинного обучения открывает новые возможности для систематических торговых стратегий, которые традиционные методы временных рядов не могут захватить.