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

Глава 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) для более богатых контекстуальных представлений. Подход обычно включает:

  1. Кодирование: Пропустить входной текст через кодировщик-трансформер для получения контекстуализированных представлений токенов.
  2. Обнаружение триггеров: Применить голову классификации токенов для идентификации триггеров событий.
  3. Типизация событий: Классифицировать обнаруженные триггеры по категориям событий.
  4. Извлечение аргументов: Для каждого обнаруженного события применить голову извлечения спанов для идентификации аргументов события.

Совместная функция потерь объединяет все подзадачи:

$$\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 или реализованная волатильность
  • Тренд: Текущая цена относительно скользящих средних
  • Ликвидность: Спред бид-аск и глубина книги заявок
  • Позиционирование: Открытый интерес, ставка финансирования (крипто), короткий интерес (акции)

Применения

Генерация альфы на основе новостей

Извлечение событий позволяет систематически торговать на новостях:

  1. Предсобытийное позиционирование: Для запланированных событий используются извлечённые ожидания и исторические паттерны для открытия позиций перед объявлением.
  2. Реакция на события: Для незапланированных событий — быстрое извлечение и классификация, предсказание воздействия и исполнение сделок в течение секунд.
  3. Послесобытийный дрифт: Многие события не полностью учитываются в цене немедленно. Извлечение событий выявляет события с исторически устойчивым ценовым воздействием.

Управление рисками

Извлечение событий поддерживает управление рисками:

  • Обнаружение хвостового риска: Выявление событий, исторически предшествующих крупным просадкам
  • Мониторинг экспозиции: Отслеживание событий, влияющих на позиции портфеля
  • Триггеры хеджирования: Автоматическое предложение или исполнение хеджей при обнаружении неблагоприятных событий

Крипто-специфические применения

Криптовалютные рынки особенно подходят для событийной торговли:

  • Рынки 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): Предоставляет данные о цене, объёме и ставке финансирования в реальном времени.

Ссылки

  1. 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.
  2. Ding, X., Zhang, Y., Liu, T., & Duan, J. (2015). Deep learning for event-driven stock prediction. Proceedings of the 24th IJCAI, 2327-2333.
  3. 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.
  4. Araci, D. (2019). FinBERT: Financial sentiment analysis with pre-trained language models. arXiv preprint arXiv:1908.10063.
  5. 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.
  6. Xiang, W., & Wang, B. (2019). A survey of event extraction from text. IEEE Access, 7, 173111-173137.