Глава 68: Интерпретация новостей с помощью LLM для трейдинга
Обзор
Большие языковые модели (LLM) революционизировали способы интерпретации и извлечения торговых сигналов из финансовых новостей. В этой главе рассматривается использование LLM для анализа новостных статей, пресс-релизов, социальных сетей и других текстовых данных для генерации торговых сигналов. В отличие от традиционного анализа тональности, интерпретация на основе LLM позволяет понимать нюансы контекста, выявлять причинно-следственные связи и извлекать конкретные события, которые могут повлиять на цены активов.
Содержание
- Введение
- Теоретические основы
- Источники новостных данных
- Архитектура LLM для интерпретации новостей
- Конвейер извлечения признаков
- Стратегии генерации сигналов
- Применение в криптовалютном трейдинге
- Стратегия реализации
- Управление рисками
- Метрики производительности
- Литература
Введение
Финансовые рынки движимы информацией. Новостные события, объявления и настроения в социальных сетях могут вызывать быстрые движения цен. Традиционные подходы к анализу новостей основаны на:
- Поиск по ключевым словам: Простой, но упускает контекст
- Словари тональности: Специфичны для домена, но негибкие
- ML-классификаторы: Требуют размеченных данных, ограниченное обобщение
Почему LLM для интерпретации новостей?
┌─────────────────────────────────────────────────────────────────────────┐│ Эволюция интерпретации новостей │├─────────────────────────────────────────────────────────────────────────┤│ ││ Традиционный подход: Подход с LLM: ││ ┌──────────────────┐ ┌──────────────────┐ ││ │ "Bitcoin падает" │ │ "Bitcoin падает" │ ││ │ ↓ │ │ ↓ │ ││ │ слово: "падает" │ │ Анализ контекста │ ││ │ ↓ │ │ ↓ │ ││ │ Сигнал: НЕГАТИВ │ │ Почему падает? │ ││ └──────────────────┘ │ - Продажа кита? │ ││ │ - Регуляторы? │ ││ │ - Техническое? │ ││ │ ↓ │ ││ │ Нюансированный │ ││ │ сигнал с │ ││ │ уверенностью │ ││ └──────────────────┘ ││ ││ ┌─────────────────────────────────────────────────────────────────┐ ││ │ Пример: "Обновление Ethereum отложено из-за проблем безопасности"│ ││ │ │ ││ │ Традиционно: НЕГАТИВ (содержит "отложено", "проблем") │ ││ │ LLM: СМЕШАННЫЙ - краткосрочный негатив (задержка), │ ││ │ долгосрочный позитив (приоритет безопасности = зрелость) │ ││ └─────────────────────────────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────────────────────┘Преимущества интерпретации новостей на основе LLM
| Аспект | Традиционный NLP | На основе LLM |
|---|---|---|
| Понимание контекста | Ограниченное | Глубокое контекстное рассуждение |
| Связи сущностей | Базовый NER | Сложное извлечение отношений |
| Временное рассуждение | Ручные правила | Неявное понимание |
| Многошаговый вывод | Невозможен | Цепочка рассуждений |
| Zero-shot способности | Отсутствуют | Сильное обобщение |
| Адаптация к домену | Требует переобучения | Инженерия промптов |
Теоретические основы
Обработка информации на рынках
Гипотеза эффективного рынка (EMH) предполагает, что цены отражают всю доступную информацию. На практике:
$$P_{t+1} = P_t + \alpha \cdot I_{news} + \epsilon$$
Где:
- $P_t$ — текущая цена
- $I_{news}$ — информационное содержание новости
- $\alpha$ — коэффициент реакции рынка
- $\epsilon$ — шум
LLM как экстрактор информации
LLM можно рассматривать как функции, преобразующие текст в структурированную информацию:
$$f_{LLM}: \text{Текст} \rightarrow {(\text{Сущность}, \text{Событие}, \text{Тональность}, \text{Величина}, \text{Временной горизонт})}$$
Механизм внимания для новостей
Механизм внимания трансформера естественно обрабатывает:
┌─────────────────────────────────────────────────────────────────────────┐│ Внимание при обработке новостей │├─────────────────────────────────────────────────────────────────────────┤│ ││ Вход: "SEC одобрила Bitcoin ETF, знаменуя исторический сдвиг" ││ ││ Веса внимания токенов: ││ ┌─────┬──────────┬───────┬─────┬────────┬───────────┬───────────┐ ││ │ SEC │ одобрила │Bitcoin│ ETF │знаменуя│историческ.│ сдвиг │ ││ ├─────┼──────────┼───────┼─────┼────────┼───────────┼───────────┤ ││ │0.15 │ 0.25 │ 0.20 │0.18 │ 0.05 │ 0.08 │ 0.09 │ ││ └─────┴──────────┴───────┴─────┴────────┴───────────┴───────────┘ ││ ││ Извлечённая информация: ││ • Сущности: Bitcoin, SEC, ETF ││ • Событие: Одобрение (регуляторное действие) ││ • Тональность: Позитивная (одобрение, исторический) ││ • Величина: Высокая (регуляторная веха) ││ • Временной горизонт: Немедленное воздействие ожидается ││ │└─────────────────────────────────────────────────────────────────────────┘Таксономия классификации событий
Иерархия финансовых событий:
├── Регуляторные события│ ├── Одобрения (ETF, лицензии)│ ├── Правоприменение (штрафы, запреты)│ ├── Законодательство (новые законы, поправки)│ └── Расследования (проверки, аудиты)│├── Корпоративные события│ ├── Партнёрства (интеграции, коллаборации)│ ├── Приобретения (M&A активность)│ ├── Запуски продуктов (mainnet, функции)│ └── Изменения руководства (CEO, команда)│├── Технические события│ ├── Обновления (хардфорки, апдейты)│ ├── Инциденты безопасности (взломы, эксплойты)│ ├── Проблемы сети (перегрузка, даунтайм)│ └── Вехи разработки (testnet, аудиты)│├── Рыночные события│ ├── Движения китов (крупные переводы)│ ├── Листинги/делистинги на биржах│ ├── Ликвидации (закрытие крупных позиций)│ └── Манипуляции рынком (памп/дамп)│└── Макроэкономические события ├── Решения по процентным ставкам ├── Данные по инфляции ├── Отчёты о занятости └── Геополитические событияИсточники новостных данных
Основные источники для крипто-трейдинга
┌────────────────────────────────────────────────────────────────────────┐│ Источники новостных данных │├────────────────────────────────────────────────────────────────────────┤│ ││ 1. Официальные каналы ││ ├── Аккаунты проектов в Twitter/X ││ ├── Официальные блоги и объявления ││ ├── Каналы в Discord/Telegram ││ └── Релизы и коммиты на GitHub ││ ││ 2. Новостные агрегаторы ││ ├── CoinDesk, CoinTelegraph, The Block ││ ├── Decrypt, CryptoSlate ││ ├── Bloomberg Crypto, Reuters ││ └── Агрегация RSS-лент ││ ││ 3. Социальные сети ││ ├── Twitter/X (крипто-инфлюенсеры, KOL) ││ ├── Reddit (r/cryptocurrency, r/bitcoin) ││ ├── Telegram-группы ││ └── Discord-сообщества ││ ││ 4. Ончейн-данные с контекстом ││ ├── Whale Alert с корреляцией новостей ││ ├── Активность DEX + объявления ││ ├── Развёртывания смарт-контрактов ││ └── Предложения по управлению ││ ││ 5. Регуляторные документы ││ ├── SEC EDGAR (заявки на ETF) ││ ├── Объявления CFTC ││ ├── Международные регуляторы ││ └── Судебные решения ││ │└────────────────────────────────────────────────────────────────────────┘Архитектура LLM для интерпретации новостей
Выбор модели для трейдинга
| Тип модели | Применение | Задержка | Точность |
|---|---|---|---|
| GPT-4/Claude | Сложные рассуждения, многошаговые | Высокая | Наивысшая |
| GPT-3.5/Llama | Баланс скорости и качества | Средняя | Высокая |
| FinBERT/FinGPT | Специфичные для домена, быстрые | Низкая | Хорошая для тональности |
| Дообученные | Специализированные задачи | Низкая | Зависит от задачи |
Инженерия промптов для интерпретации новостей
┌─────────────────────────────────────────────────────────────────────────┐│ Структура шаблона промпта │├─────────────────────────────────────────────────────────────────────────┤│ ││ СИСТЕМНЫЙ ПРОМПТ: ││ "Вы финансовый аналитик, специализирующийся на криптовалютных рынках. ││ Ваша задача — анализировать новости и извлекать релевантную для ││ торговли информацию. Будьте точны, объективны и оценивайте ││ неопределённость." ││ ││ ШАБЛОН ПОЛЬЗОВАТЕЛЬСКОГО ПРОМПТА: ││ """ ││ Проанализируйте следующую новость для торговых сигналов: ││ ││ НОВОСТЬ: {news_text} ││ ВРЕМЯ: {timestamp} ││ ИСТОЧНИК: {source} ││ ││ Извлеките: ││ 1. Затронутые активы (перечислите все криптовалюты) ││ 2. Тип события (регуляторное/корпоративное/техническое/рыночное/макро)││ 3. Тональность (шкала от -1 до +1) ││ 4. Ожидаемая величина воздействия (низкая/средняя/высокая) ││ 5. Временной горизонт (немедленный/краткосрочный/долгосрочный) ││ 6. Уровень уверенности (0-100%) ││ 7. Ключевые вовлечённые сущности ││ 8. Потенциальные реакции рынка ││ ││ Верните в формате структурированного JSON. ││ """ ││ │└─────────────────────────────────────────────────────────────────────────┘Цепочка рассуждений для сложных новостей
┌─────────────────────────────────────────────────────────────────────────┐│ Пример цепочки рассуждений │├─────────────────────────────────────────────────────────────────────────┤│ ││ Новость: "Binance объявляет об уходе из страны X ││ из-за новых криптовалютных правил" ││ ││ Шаг 1: Идентификация сущностей ││ → Binance (биржа), Страна X (юрисдикция) ││ ││ Шаг 2: Классификация события ││ → Регуляторное событие (уход по требованию комплаенса) ││ ││ Шаг 3: Анализ немедленного воздействия ││ → BNB: Потенциально негативно (сокращение доступа к рынку) ││ → Рынок: Краткосрочная неопределённость ││ ││ Шаг 4: Эффекты второго порядка ││ → Конкуренты (Coinbase, Kraken) могут получить долю рынка ││ → Создаёт прецедент для других юрисдикций ││ → Может вызвать давление продаж от пользователей страны X ││ ││ Шаг 5: Оценка долгосрочных последствий ││ → Регуляторная ясность (позитивно для институционального принятия) ││ → Сигнал зрелости рынка ││ ││ Итоговый сигнал: ││ BNB: -0.3 (краткосрочный негатив, средняя уверенность) ││ BTC: -0.1 (небольшое заражение, низкая уверенность) ││ Токены бирж (общее): -0.2 (регуляторные опасения) ││ │└─────────────────────────────────────────────────────────────────────────┘Конвейер извлечения признаков
Схема структурированного вывода
// Представление извлечённых признаков на Rust#[derive(Debug, Clone, Serialize, Deserialize)]pub struct NewsAnalysis { /// Уникальный идентификатор новости pub news_id: String,
/// Оригинальный текст новости pub text: String,
/// Временная метка новости pub timestamp: DateTime<Utc>,
/// Источник новости pub source: NewsSource,
/// Извлечённые сущности pub entities: Vec<Entity>,
/// Классификация события pub event_type: EventType,
/// Оценка тональности (-1.0 до 1.0) pub sentiment: f64,
/// Ожидаемая величина воздействия pub magnitude: ImpactMagnitude,
/// Временной горизонт воздействия pub timeframe: ImpactTimeframe,
/// Уверенность в анализе (0.0 до 1.0) pub confidence: f64,
/// Затронутые активы с индивидуальными сигналами pub asset_signals: HashMap<String, AssetSignal>,
/// ID связанных новостей для контекста pub related_news_ids: Vec<String>,}
#[derive(Debug, Clone, Serialize, Deserialize)]pub struct AssetSignal { /// Символ актива (например, "BTC", "ETH") pub symbol: String,
/// Сигнал направления (-1.0 до 1.0) pub direction: f64,
/// Уверенность для этого конкретного актива pub confidence: f64,
/// Ожидаемое влияние на цену в процентах pub expected_impact_pct: Option<f64>,
/// Продолжительность ожидаемого эффекта pub effect_duration: Duration,}Стратегия агрегации признаков
┌─────────────────────────────────────────────────────────────────────────┐│ Агрегация новостных сигналов │├─────────────────────────────────────────────────────────────────────────┤│ ││ Несколько новостей об одном активе в пределах временного окна: ││ ││ Новость 1: BTC тональность = +0.5, уверенность = 0.8 ││ Новость 2: BTC тональность = +0.3, уверенность = 0.9 ││ Новость 3: BTC тональность = -0.2, уверенность = 0.6 ││ ││ Методы агрегации: ││ ││ 1. Взвешенное по уверенности среднее: ││ сигнал = Σ(тональность_i × уверенность_i) / Σ(уверенность_i) ││ сигнал = (0.5×0.8 + 0.3×0.9 + (-0.2)×0.6) / (0.8+0.9+0.6) ││ сигнал = (0.4 + 0.27 - 0.12) / 2.3 = 0.24 ││ ││ 2. Взвешенное по давности: ││ вес_i = exp(-λ × возраст_i) ││ Более свежие новости имеют больший вес ││ ││ 3. Взвешенное по качеству источника: ││ Официальные > Крупные СМИ > Соцсети ││ ││ 4. Приоритет по типу события: ││ Регуляторные > Безопасность > Корпоративные > Рыночные ││ ││ Комбинированная формула: ││ сигнал = Σ(s_i × c_i × r_i × q_i × p_i) / Σ(c_i × r_i × q_i × p_i) ││ ││ Где: s=тональность, c=уверенность, r=давность, q=качество, p=приоритет││ │└─────────────────────────────────────────────────────────────────────────┘Стратегии генерации сигналов
Стратегия 1: Событийный трейдинг
┌─────────────────────────────────────────────────────────────────────────┐│ Поток событийных сигналов │├─────────────────────────────────────────────────────────────────────────┤│ ││ Новостное событие → Анализ LLM → Классификация → Торговое действие ││ ││ Реакции по типам событий: ││ ││ REGULATORY_APPROVAL (одобрение регуляторов): ││ → Немедленная длинная позиция ││ → Размер позиции: 2× стандартный ││ → Стоп-лосс: -3% ││ → Тейк-профит: +10% или 24ч ││ ││ SECURITY_INCIDENT (инцидент безопасности): ││ → Немедленная короткая позиция (если доступна) ││ → Или выход из существующих лонгов ││ → Мониторинг отскока восстановления ││ ││ PARTNERSHIP_ANNOUNCEMENT (объявление о партнёрстве): ││ → Постепенный вход в течение 1-4 часов ││ → Следить за паттерном "sell the news" ││ → Использовать трейлинг-стоп ││ ││ WHALE_MOVEMENT (движение кита): ││ → Ждать подтверждения (ценовое действие) ││ → Выровняться с направлением движения ││ → Более узкие стопы из-за неопределённости ││ │└─────────────────────────────────────────────────────────────────────────┘Стратегия 2: Моментум тональности
Стратегия моментума тональности:
1. Рассчитать скользящую оценку тональности: S_t = α × S_{t-1} + (1-α) × s_new
2. Генерировать сигнал при пересечении порогов: - S_t > +0.3 → Сигнал на покупку - S_t < -0.3 → Сигнал на продажу - |S_t| < 0.1 → Нейтрально/Закрыть позиции
3. Размер позиции на основе силы тональности: размер = базовый_размер × |S_t| × фактор_уверенностиСтратегия 3: Кластеризация новостей и определение тем
┌─────────────────────────────────────────────────────────────────────────┐│ Торговля на основе тем │├─────────────────────────────────────────────────────────────────────────┤│ ││ Кластеризация новостей по семантическому сходству: ││ ││ Кластер A: "Принятие Layer 2" Кластер B: "Регуляторика" ││ ├── Веха mainnet ARB ├── Обновление иска SEC ││ ├── Объявление грантов OP ├── Внедрение MiCA в ЕС ││ ├── Рост TVL zkSync ├── Реформа криптоналогов Японии ││ └── Рекорд транзакций Base └── Регуляторная база ОАЭ ││ ││ Сила темы = количество новостей × средняя тональность × давность ││ ││ Торговое действие: ││ - Сильная позитивная тема "Layer 2" → Лонг ARB, OP, MATIC ││ - Смешанная тема "Регуляторика" → Хедж позиций, снижение плеча ││ ││ Ротация тем: ││ - Отслеживать моментум тем во времени ││ - Входить в усиливающиеся темы ││ - Выходить из ослабевающих тем ││ │└─────────────────────────────────────────────────────────────────────────┘Применение в криптовалютном трейдинге
Интеграция с Bybit для новостного трейдинга
┌─────────────────────────────────────────────────────────────────────────┐│ Конвейер новостного трейдинга Bybit │├─────────────────────────────────────────────────────────────────────────┤│ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ СЛОЙ ЗАГРУЗКИ НОВОСТЕЙ │ ││ │ Twitter API ──→ ┐ │ ││ │ RSS-ленты ──→ │──→ Препроцессор ──→ Очередь ──→ LLM-анализатор│ ││ │ Telegram ──→ │ │ ││ │ Ончейн ──→ ┘ │ ││ └───────────────────────────────────────────────────────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ ГЕНЕРАЦИЯ СИГНАЛОВ │ ││ │ │ ││ │ LLM-анализ ──→ Извлечение признаков ──→ Агрегация сигналов │ ││ │ │ │ ││ │ ↓ │ ││ │ Фильтр уверенности │ ││ │ (только сигналы > 0.7) │ ││ │ │ ││ └───────────────────────────────────────────────────────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ СЛОЙ ИСПОЛНЕНИЯ │ ││ │ │ ││ │ Сигнал ──→ Проверка риска ──→ Размер позиции ──→ API Bybit │ ││ │ │ │ ││ │ ↓ │ ││ │ ┌─────────────┐ │ ││ │ │ Типы ордеров│ │ ││ │ ├─────────────┤ │ ││ │ │ • Лимитный │ │ ││ │ │ • Рыночный │ │ ││ │ │ • TP/SL │ │ ││ │ └─────────────┘ │ ││ │ │ ││ └───────────────────────────────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────────────────────┘Требования к обработке в реальном времени
| Компонент | Целевая задержка | Приоритет |
|---|---|---|
| Загрузка новостей | < 1с | Критический |
| Инференс LLM | < 5с | Высокий |
| Генерация сигнала | < 100мс | Критический |
| Исполнение ордера | < 50мс | Критический |
| Проверки риска | < 10мс | Критический |
Пример: Обработка новостного события
Хронология новостного события:
T+0с: Новость опубликована в Twitter: "Срочно: ETH ETF одобрен SEC"T+0.5с: Наша система загружает новостьT+1.0с: Препроцессинг завершёнT+3.0с: LLM-анализ возвращает: { "asset": "ETH", "event_type": "REGULATORY_APPROVAL", "sentiment": 0.95, "magnitude": "HIGH", "confidence": 0.92 }T+3.1с: Сгенерирован сигнал: STRONG_BUY для ETHT+3.2с: Проверка риска пройденаT+3.3с: Рассчитан размер позиции: 2% портфеляT+3.4с: Ордер отправлен на Bybit: Market buy ETHUSDTT+3.5с: Ордер исполнен по $3,245T+3.6с: Стоп-лосс установлен на $3,147 (-3%)T+3.7с: Тейк-профит установлен на $3,570 (+10%)
Общее время от новости до позиции: 3.7 секундыСтратегия реализации
Архитектура модулей
68_llm_news_interpretation/├── Cargo.toml├── README.md├── README.ru.md├── readme.simple.md├── readme.simple.ru.md├── src/│ ├── lib.rs # Корень библиотеки│ ├── news/│ │ ├── mod.rs # Модуль новостей│ │ ├── sources.rs # Коннекторы источников│ │ ├── preprocessor.rs # Препроцессинг текста│ │ └── types.rs # Типы новостных данных│ ├── llm/│ │ ├── mod.rs # Модуль LLM│ │ ├── client.rs # API-клиент (OpenAI и др.)│ │ ├── prompts.rs # Шаблоны промптов│ │ ├── parser.rs # Парсинг ответов│ │ └── cache.rs # Кэширование ответов│ ├── analysis/│ │ ├── mod.rs # Модуль анализа│ │ ├── extractor.rs # Извлечение признаков│ │ ├── aggregator.rs # Агрегация сигналов│ │ └── classifier.rs # Классификация событий│ ├── strategy/│ │ ├── mod.rs # Модуль стратегии│ │ ├── signals.rs # Генерация сигналов│ │ └── execution.rs # Исполнение ордеров│ ├── data/│ │ ├── mod.rs # Модуль данных│ │ ├── bybit.rs # API-клиент Bybit│ │ └── types.rs # Типы рыночных данных│ └── utils/│ ├── mod.rs # Утилиты│ ├── metrics.rs # Метрики производительности│ └── config.rs # Конфигурация├── examples/│ ├── basic_news_analysis.rs # Базовый анализ новостей│ ├── backtest.rs # Бэктестинг на исторических данных│ └── live_trading.rs # Демо живой торговли└── tests/ └── integration.rs # Интеграционные тестыКлючевые принципы проектирования
- Async-First: Все I/O операции асинхронны для низкой задержки
- Модульная поддержка LLM: Легко переключаться между провайдерами
- Слой кэширования: Сокращение избыточных вызовов LLM для похожих новостей
- Грациозная деградация: Fallback на более простые модели при сбое основной
- Аудит-трейл: Логирование всех новостей, анализов и торговых решений
Основные структуры данных на Rust
/// Перечисление источников новостей#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]pub enum NewsSource { Twitter, Reddit, Telegram, CoinDesk, CoinTelegraph, TheBlock, Bloomberg, Reuters, OfficialBlog, GitHub, OnChain,}
/// Классификация типа события#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]pub enum EventType { RegulatoryApproval, RegulatoryEnforcement, RegulatoryLegislation, CorporatePartnership, CorporateAcquisition, ProductLaunch, LeadershipChange, TechnicalUpgrade, SecurityIncident, NetworkIssue, WhaleMovement, ExchangeListing, ExchangeDelisting, Liquidation, MacroEconomic, Unknown,}
/// Величина воздействия#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]pub enum ImpactMagnitude { Low, Medium, High, Critical,}
/// Временной горизонт воздействия#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]pub enum ImpactTimeframe { Immediate, // Минуты ShortTerm, // Часы MediumTerm, // Дни LongTerm, // Недели+}
/// Торговый сигнал, полученный из новостей#[derive(Debug, Clone, Serialize, Deserialize)]pub struct TradingSignal { pub symbol: String, pub direction: SignalDirection, pub strength: f64, // 0.0 до 1.0 pub confidence: f64, // 0.0 до 1.0 pub source_news_ids: Vec<String>, pub event_type: EventType, pub suggested_entry: Option<f64>, pub suggested_stop_loss: Option<f64>, pub suggested_take_profit: Option<f64>, pub max_position_pct: f64, pub valid_until: DateTime<Utc>,}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]pub enum SignalDirection { StrongBuy, Buy, Neutral, Sell, StrongSell,}Управление рисками
Специфические факторы риска для новостей
┌────────────────────────────────────────────────────────────────────────┐│ Управление рисками новостного трейдинга │├────────────────────────────────────────────────────────────────────────┤│ ││ 1. Информационный риск ││ ├── Фейковые новости / дезинформация ││ ├── Запоздалые новости (уже учтены в цене) ││ ├── Неправильная интерпретация LLM ││ └── Противоречивые источники ││ ││ Митигация: ││ → Мультиисточниковая верификация ││ → Пороги уверенности ││ → Скоринг репутации источников ││ → Контроль человека для сделок с высоким воздействием ││ ││ 2. Риск исполнения ││ ├── Проскальзывание при волатильных новостных событиях ││ ├── Сбой ордеров при высокой активности ││ ├── Отставание по задержке vs. HFT ││ └── Даунтайм биржи при крупных событиях ││ ││ Митигация: ││ → Лимитные ордера с разумным проскальзыванием ││ → Резервирование на нескольких биржах ││ → Постепенное наращивание позиции ││ → Предустановленные лимитные ордера для ожидаемых событий ││ ││ 3. Модельный риск ││ ├── Галлюцинации LLM ││ ├── Атаки промпт-инъекцией ││ ├── Обновления модели меняют поведение ││ └── Сдвиг домена в паттернах новостей ││ ││ Митигация: ││ → Валидация вывода и проверка на здравый смысл ││ → Санитизация входных данных ││ → Версионирование и тестирование моделей ││ → Регулярный бэктестинг на свежих данных ││ │└────────────────────────────────────────────────────────────────────────┘Правила размера позиций
Фреймворк размера позиций:
Базовая позиция = Портфель × Базовый_% × Уверенность × Фактор_величины
Где:- Базовый_% = 1% (консервативная база)- Уверенность = оценка уверенности LLM (0.0 до 1.0)- Фактор_величины: - Низкая: 0.5 - Средняя: 1.0 - Высокая: 1.5 - Критическая: 2.0
Пример:- Портфель: $100,000- Уверенность: 0.85- Величина: Высокая (1.5)
Позиция = $100,000 × 0.01 × 0.85 × 1.5 = $1,275
Максимальные ограничения:- Макс. одиночная позиция: 5% портфеля- Макс. новостных позиций: 20% портфеля- Макс. коррелированных позиций: 10% портфеляАвтоматические выключатели
- Резкий всплеск новостей: Пауза торговли при >10 релевантных новостей за 5 минут
- Разворот тональности: Оповещение при изменении тональности >1.0 за 1 час
- Падение уверенности: Сокращение позиций при падении средней уверенности ниже 0.5
- Лимит убытков: Остановка всей новостной торговли при дневном убытке >5%
Метрики производительности
Оценка модели
| Метрика | Описание | Цель |
|---|---|---|
| Точность тональности | Корреляция с движением цены | > 0.3 |
| F1 классификации событий | Правильная идентификация типа | > 0.80 |
| Точность сигналов | Прибыльные / Всего сигналов | > 55% |
| P95 задержка | 95-й перцентиль сквозной задержки | < 5с |
| Ложноположительные | Некорректные сильные сигналы | < 10% |
Торговая эффективность
| Метрика | Описание | Цель |
|---|---|---|
| Коэффициент Шарпа | Доходность с поправкой на риск | > 1.5 |
| Винрейт | Прибыльные сделки | > 52% |
| Сред. выигрыш/проигрыш | Отношение сред. выигрыша к проигрышу | > 1.5 |
| Макс. просадка | Наибольшее падение от пика | < 15% |
| Новостная альфа | Доходность от новостных сигналов | > 0.5% в месяц |
Бюджет задержки
┌─────────────────────────────────────────────────┐│ Требования к задержке │├─────────────────────────────────────────────────┤│ Обнаружение новости: < 500мс ││ Препроцессинг: < 100мс ││ Инференс LLM: < 3000мс ││ Генерация сигнала: < 100мс ││ Проверка риска: < 50мс ││ Размещение ордера: < 100мс │├─────────────────────────────────────────────────┤│ Общий критический путь: < 4000мс │└─────────────────────────────────────────────────┘Литература
-
From Deep Learning to LLMs: A Survey of AI in Quantitative Investment
- URL: https://arxiv.org/abs/2503.21422
- Год: 2025
-
FinGPT: Open-Source Financial Large Language Models
- Yang, H., et al. (2023)
- URL: https://arxiv.org/abs/2306.06031
-
BloombergGPT: A Large Language Model for Finance
- Wu, S., et al. (2023)
- URL: https://arxiv.org/abs/2303.17564
-
Attention Is All You Need
- Vaswani, A., et al. (2017). NeurIPS
- Основа архитектуры трансформеров
-
Language Models are Few-Shot Learners (GPT-3)
- Brown, T., et al. (2020). NeurIPS
-
BERT: Pre-training of Deep Bidirectional Transformers
- Devlin, J., et al. (2019). NAACL
-
FinBERT: Financial Sentiment Analysis with Pre-trained Language Models
- Araci, D. (2019)
- URL: https://arxiv.org/abs/1908.10063
-
News-Driven Stock Price Forecasting
- Hu, Z., et al. (2018). IJCAI
-
Deep Learning for Event-Driven Stock Prediction
- Ding, X., et al. (2015). IJCAI
Следующие шаги
- Простое объяснение — Версия для начинающих
- English Version — Английская версия
- Запуск примеров — Рабочий код на Rust
Глава 68 из серии “Машинное обучение для трейдинга”