Глава 257: Торговля на основе извлечения событий
Введение
Торговля на основе извлечения событий (Event Extraction Trading) — это стратегия, использующая обработку естественного языка (NLP) для автоматического выявления и классификации рыночно значимых событий из неструктурированных текстовых источников: новостных статей, регуляторных документов, стенограмм отчётов о прибыли, публикаций в социальных сетях и коммуникаций центральных банков. После извлечения эти события служат входными данными для торговых моделей, которые открывают позиции в преддверии или быстро реагируют на информацию, содержащуюся в тексте.
Традиционный анализ настроений присваивает единый балл полярности всему документу. Извлечение событий идёт дальше: оно определяет что произошло, с кем, когда и какого типа было событие. Заголовок «Tesla отзывает 1,2 миллиона автомобилей из-за дефекта ПО» содержит конкретное событие (отзыв продукции), объект (Tesla), масштаб (1,2 миллиона автомобилей) и причину (дефект ПО). Модель настроений может просто пометить это как «негатив», но система извлечения событий предоставляет структурированную, пригодную для действий информацию, которую торговая модель может анализировать.
На современных рынках скорость и точность обработки текстовой информации определяют конкурентное преимущество. Дискреционные трейдеры не могут читать тысячи новостных статей в день; системы извлечения событий — могут. Как для фондового, так и для криптовалютного рынков, события такие как листинги на биржах, объявления о партнёрствах, регуляторные действия и нарушения безопасности имеют хорошо документированные паттерны влияния на цену, которые систематические стратегии могут эксплуатировать.
В этой главе представлена полная система торговли на основе извлечения событий. Мы рассматриваем техники NLP для извлечения событий из текста, модели машинного обучения для классификации типов событий и предсказания их рыночного воздействия, а также рабочую реализацию на Rust, подключённую к криптовалютной бирже Bybit для торговли в реальном времени на основе событий.
Ключевые концепции
Определение и таксономия событий
Финансовое событие — это дискретное происшествие, которое изменяет информационное множество, доступное участникам рынка. События можно классифицировать по нескольким измерениям:
По источнику:
- Корпоративные события: Публикация отчётов о прибыли, объявления о слияниях и поглощениях, смена руководства, объявление дивидендов, дробление акций, обратный выкуп акций
- Макроэкономические события: Решения центральных банков по ставке, отчёты о занятости, публикации ВВП, данные по инфляции, показатели торгового баланса
- Регуляторные события: Документы SEC, одобрения/отказы FDA, антимонопольные решения, санкции, нарушения комплаенса
- События рыночной структуры: Листинги/делистинги на биржах, ребалансировка индексов, автоматические выключатели, остановки торгов
- Крипто-специфические события: Сжигание токенов, хардфорки, взломы бирж, движения китов, обновления протоколов, объявления об эйрдропах
По предсказуемости:
- Запланированные события: Даты отчётов, заседания FOMC, экспирация опционов — время известно, но содержание — нет
- Незапланированные события: Отзывы продукции, судебные иски, стихийные бедствия, нарушения безопасности — и время, и содержание неизвестны
По горизонту воздействия:
- Немедленное воздействие: Флэш-крэши, срочные новости, остановки торгов — цена реагирует в течение секунд
- Отложенное воздействие: Регуляторные проверки, выдача патентов, смена руководства — полная корректировка цены занимает дни или недели
- Постоянное воздействие: Отраслевые перевороты, структурное регулирование, технологические прорывы — постоянный сдвиг стоимости
Конвейер извлечения событий
Конвейер извлечения событий преобразует сырой текст в структурированные записи событий через несколько этапов:
1. Сбор документов: Сбор текстов из новостных лент (Reuters, Bloomberg), социальных сетей (Twitter/X), регуляторных баз данных (SEC EDGAR) и объявлений бирж (Bybit, Binance).
2. Предобработка: Токенизация текста, нормализация имён сущностей, разрешение кореференций (например, «компания» → «Tesla»), и сегментация многособытийных документов на отдельные предложения или отрывки.
3. Обнаружение событий: Определение, содержит ли текстовый фрагмент упоминание события. Это задача бинарной классификации:
$$P(\text{event} | \text{span}) = \sigma(\mathbf{w}^T \phi(\text{span}) + b)$$
где $\phi(\text{span})$ — признаковое представление текстового фрагмента.
4. Классификация событий: Присвоение обнаруженным событиям предопределённых категорий. Для упоминания события $e$ классификатор выдаёт распределение по типам событий:
$$P(\text{type}_k | e) = \frac{\exp(\mathbf{w}_k^T \mathbf{h}e)}{\sum{j=1}^{K} \exp(\mathbf{w}_j^T \mathbf{h}_e)}$$
где $\mathbf{h}_e$ — контекстуальное представление упоминания события, а $K$ — количество типов событий.
5. Извлечение аргументов: Для каждого события извлекаются его аргументы — сущности, значения и временные выражения, параметризующие событие. Например, из «Bybit листит бессрочный контракт SOL/USDT 15 марта» мы извлекаем:
- Тип события: Листинг на бирже
- Актив: SOL/USDT
- Биржа: Bybit
- Инструмент: Бессрочный контракт
- Дата: 15 марта
6. Связывание событий: Связывание родственных событий по документам и времени. Недостижение ожидаемой прибыли, за которым следует снижение рейтинга аналитиком, а затем смена руководства, образует причинную цепочку, которая более информативна, чем любое отдельное событие.
Распознавание именованных сущностей (NER) для финансов
Финансовый NER выявляет сущности, релевантные для рыночного анализа:
- ORG: Компании, биржи, центральные банки, регуляторные органы
- TICKER: Тикеры акций, торговые пары криптовалют
- MONEY: Суммы в долларах, проценты, ценовые уровни
- DATE: Временные выражения для привязки событий
- PERSON: Генеральные директора, управляющие фондами, политики
- EVENT: Именованные события (заседание FOMC, халвинг, звонок по прибыли)
Обнаружение триггерных слов
Триггеры событий — это слова или фразы, наиболее чётко выражающие наступление события. Обнаружение триггеров — основа извлечения событий:
- «приобрёл» → Событие M&A
- «отозвал» → Событие отзыва продукции
- «листинг» → Событие листинга на бирже
- «взломан» → Событие нарушения безопасности
- «сожжено» → Событие сжигания токенов
- «форк» → Событие хардфорка
Обнаружение триггеров может быть сформулировано как задача разметки последовательностей с использованием BIO-тегирования:
$$y_t = \arg\max_{c \in {B, I, O}} P(c | \mathbf{x}t, \mathbf{x}{t-1}, \ldots, \mathbf{x}_1)$$
где $\mathbf{x}_t$ — токен на позиции $t$, а $y_t \in {B\text{-trigger}, I\text{-trigger}, O}$.
Подходы машинного обучения
Разметка последовательностей с BiLSTM-CRF
Архитектура BiLSTM-CRF является сильным базовым решением для извлечения событий. Двунаправленная LSTM кодирует каждый токен в контексте:
$$\overrightarrow{\mathbf{h}}_t = \text{LSTM}(\mathbf{x}t, \overrightarrow{\mathbf{h}}{t-1})$$ $$\overleftarrow{\mathbf{h}}_t = \text{LSTM}(\mathbf{x}t, \overleftarrow{\mathbf{h}}{t+1})$$ $$\mathbf{h}_t = [\overrightarrow{\mathbf{h}}_t; \overleftarrow{\mathbf{h}}_t]$$
Слой условного случайного поля (CRF) поверх обеспечивает допустимые последовательности тегов:
$$P(\mathbf{y} | \mathbf{x}) = \frac{\exp\left(\sum_{t=1}^{T} \phi(y_{t-1}, y_t, \mathbf{h}t)\right)}{\sum{\mathbf{y}’} \exp\left(\sum_{t=1}^{T} \phi(y’_{t-1}, y’_t, \mathbf{h}_t)\right)}$$
Извлечение событий на основе трансформеров
Современные системы извлечения событий используют предобученные модели-трансформеры (BERT, FinBERT, RoBERTa) для более богатых контекстуальных представлений. Подход обычно включает:
- Кодирование: Пропустить входной текст через кодировщик-трансформер для получения контекстуализированных представлений токенов.
- Обнаружение триггеров: Применить голову классификации токенов для идентификации триггеров событий.
- Типизация событий: Классифицировать обнаруженные триггеры по категориям событий.
- Извлечение аргументов: Для каждого обнаруженного события применить голову извлечения спанов для идентификации аргументов события.
Совместная функция потерь объединяет все подзадачи:
$$\mathcal{L} = \lambda_1 \mathcal{L}{\text{trigger}} + \lambda_2 \mathcal{L}{\text{type}} + \lambda_3 \mathcal{L}_{\text{argument}}$$
Предсказание воздействия событий
После извлечения событий необходимо предсказать их рыночное воздействие. Это задача регрессии или классификации, сопоставляющая признаки события с ожидаемыми изменениями цены.
Для записи события $e$ с признаками $\mathbf{x}_e$ (тип события, сущность, масштаб, настроение, исторические аналоги) модель предсказания воздействия оценивает:
$$\hat{r}_e = f(\mathbf{x}_e) = \mathbf{w}^T \mathbf{x}_e + b$$
Для классификации по корзинам воздействия (сильный позитив, умеренный позитив, нейтральный, умеренный негатив, сильный негатив):
$$P(\text{impact}_k | e) = \text{softmax}(\mathbf{W} \mathbf{x}_e + \mathbf{b})_k$$
Ключевые признаки для предсказания воздействия:
- Тип события: Разные типы событий имеют разное среднее воздействие
- Важность сущности: События, затрагивающие крупные компании, двигают рынки сильнее
- Новизна: Первое появление типа события более значимо, чем повторения
- Время: События во время торговых часов имеют иную динамику, чем после закрытия
- Интенсивность настроения: Сила языка, использованного в описании события
- Историческая аналогия: Как похожие прошлые события влияли на тот же или подобные активы
Конструирование признаков
Текстовые признаки
TF-IDF по описаниям событий: Преобразование текста события в вектор фиксированной размерности с использованием взвешивания по частоте термина — обратной частоте документа.
Эмбеддинги слов: Усреднение или max-pooling предобученных векторов слов (GloVe, FastText или специфических для домена эмбеддингов, обученных на финансовых текстах).
Контекстуальные эмбеддинги: Использование выхода токена [CLS] из дообученной модели BERT или FinBERT в качестве плотного представления полного описания события.
Признаки последовательности событий
События не происходят изолированно. Последовательность событий, предшествующих торговому решению, несёт информацию:
- Частота событий: Количество событий для сущности за последние 1, 7, 30 дней
- Разнообразие событий: Количество различных типов событий в недавнем окне
- Моментум событий: Соотношение позитивных и негативных событий в недавнем окне
- Кластеризация событий: Временные промежутки между последовательными событиями
- Межсущностные события: События, затрагивающие связанные сущности (цепочка поставок, конкуренты, сектор)
Признаки рыночного контекста
Воздействие события зависит от преобладающего рыночного режима:
- Волатильность: Уровень VIX или реализованная волатильность
- Тренд: Текущая цена относительно скользящих средних
- Ликвидность: Спред бид-аск и глубина книги заявок
- Позиционирование: Открытый интерес, ставка финансирования (крипто), короткий интерес (акции)
Применения
Генерация альфы на основе новостей
Извлечение событий позволяет систематически торговать на новостях:
- Предсобытийное позиционирование: Для запланированных событий используются извлечённые ожидания и исторические паттерны для открытия позиций перед объявлением.
- Реакция на события: Для незапланированных событий — быстрое извлечение и классификация, предсказание воздействия и исполнение сделок в течение секунд.
- Послесобытийный дрифт: Многие события не полностью учитываются в цене немедленно. Извлечение событий выявляет события с исторически устойчивым ценовым воздействием.
Управление рисками
Извлечение событий поддерживает управление рисками:
- Обнаружение хвостового риска: Выявление событий, исторически предшествующих крупным просадкам
- Мониторинг экспозиции: Отслеживание событий, влияющих на позиции портфеля
- Триггеры хеджирования: Автоматическое предложение или исполнение хеджей при обнаружении неблагоприятных событий
Крипто-специфические применения
Криптовалютные рынки особенно подходят для событийной торговли:
- Рынки 24/7: События можно торговать в любое время
- Более высокая волатильность: Воздействие событий часто больше, предоставляя больше торговых возможностей
- Менее эффективное ценообразование: Информация о событиях инкорпорируется медленнее
- Уникальные типы событий: Сжигание токенов, обновления протоколов, листинги, движения китов создают крипто-специфические возможности для альфы
Реализация на Rust
Наша реализация на Rust предоставляет полный набор инструментов для торговли на основе извлечения событий:
EventExtractor
Структура EventExtractor обрабатывает сырой текст и выявляет финансовые события с помощью обнаружения триггеров на основе ключевых слов. Она поддерживает настраиваемый словарь триггерных слов, сопоставленных с типами событий.
EventClassifier
EventClassifier реализует логистическую регрессию для многоклассовой классификации типов событий. На основе вектора признаков из TF-IDF весов текста события, он выдаёт вероятности по предопределённым категориям событий.
ImpactPredictor
ImpactPredictor оценивает ожидаемое ценовое воздействие извлечённого события. Он использует линейную модель, обученную на исторических парах событие-воздействие.
SentimentScorer
SentimentScorer присваивает полярность настроения описаниям событий с использованием подхода на основе лексикона.
TradingSignalGenerator
TradingSignalGenerator объединяет извлечение событий, классификацию, предсказание воздействия и оценку настроения в торговые сигналы.
BybitClient
Структура BybitClient обеспечивает асинхронный HTTP-доступ к Bybit V5 API для получения рыночных данных.
Интеграция с Bybit API
Реализация подключается к REST API Bybit V5 для получения рыночных данных:
- Эндпоинт свечей (
/v5/market/kline): Предоставляет данные OHLCV свечей с настраиваемыми интервалами. - Эндпоинт тикеров (
/v5/market/tickers): Предоставляет данные о цене, объёме и ставке финансирования в реальном времени.
Ссылки
- Chen, Y., Xu, L., Liu, K., Zeng, D., & Zhao, J. (2015). Event extraction via dynamic multi-pooling convolutional neural networks. Proceedings of the 53rd Annual Meeting of the ACL, 167-176.
- Ding, X., Zhang, Y., Liu, T., & Duan, J. (2015). Deep learning for event-driven stock prediction. Proceedings of the 24th IJCAI, 2327-2333.
- Jacobs, G., Lefever, E., & Hoste, V. (2018). Economic event detection in company-specific news text. Proceedings of the First Workshop on Economics and NLP, 1-10.
- Araci, D. (2019). FinBERT: Financial sentiment analysis with pre-trained language models. arXiv preprint arXiv:1908.10063.
- Yang, S., Feng, D., Qian, T., & Li, Y. (2019). Exploring pre-trained language models for event extraction and generation. Proceedings of the 57th Annual Meeting of the ACL, 5284-5294.
- Xiang, W., & Wang, B. (2019). A survey of event extraction from text. IEEE Access, 7, 173111-173137.