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

Глава 253: Классификация документов в финансах

Введение

Классификация документов — это задача автоматического присвоения заранее определённой категории документу на основе его содержания. В финансовой сфере объём текстовой информации — отчёты о прибылях, заявки SEC, аналитические записки, новостные статьи, регуляторные раскрытия и публикации в социальных сетях — значительно превышает возможности ручной обработки любой командой. Автоматическая классификация документов позволяет финансовым учреждениям направлять информацию нужным командам, формировать оповещения о существенных событиях и извлекать структурированные сигналы из неструктурированного текста в промышленном масштабе.

Ставки высоки. Форма 10-K, раскрывающая существенную слабость внутреннего контроля, должна быть немедленно отмечена для проверки комплаенс-службой. Новостная статья об отставке генерального директора должна попасть на стол трейдеров событийных стратегий в течение секунд. Аналитический отчёт, повышающий рейтинг акции с «держать» до «покупать», должен быть зафиксирован системами агрегации настроений до того, как рынок полностью учтёт информацию. Классификация документов — первый шаг во всех этих процессах.

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

Ключевые концепции

Представление документов

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

Мешок слов (Bag of Words)

Простейшее представление рассматривает документ как неупорядоченную коллекцию слов. Каждый документ представляется как вектор частот слов:

$$\mathbf{x}_d = [c(w_1, d), c(w_2, d), \ldots, c(w_V, d)]$$

где $c(w_i, d)$ — количество вхождений слова $w_i$ в документ $d$, а $V$ — размер словаря. Несмотря на полное игнорирование порядка слов, мешок слов остаётся удивительно эффективным для многих задач классификации, особенно в сочетании с сильной регуляризацией.

TF-IDF

Частота термина — обратная частота документа (TF-IDF) уточняет сырые подсчёты, уменьшая вес слов, встречающихся во многих документах (и потому менее информативных):

$$\text{TF-IDF}(w, d) = \text{TF}(w, d) \times \text{IDF}(w)$$

где:

$$\text{TF}(w, d) = \frac{c(w, d)}{\sum_{w’ \in d} c(w’, d)}$$

$$\text{IDF}(w) = \log \frac{N}{1 + |{d \in D : w \in d}|}$$

Здесь $N$ — общее количество документов, а $D$ — корпус. TF-IDF естественным образом повышает значимость предметно-специфических терминов, таких как «дивиденд», «обесценение» или «делистинг», которые несут сильный классификационный сигнал в финансовых текстах, одновременно подавляя общие термины.

Эмбеддинги слов

Предобученные эмбеддинги слов (Word2Vec, GloVe, FastText) отображают слова в плотные, низкоразмерные вектора, захватывающие семантические отношения. Документ может быть представлен путём усреднения или пулинга эмбеддингов его составляющих слов:

$$\mathbf{x}d = \frac{1}{|d|} \sum{w \in d} \mathbf{e}(w)$$

где $\mathbf{e}(w) \in \mathbb{R}^k$ — $k$-мерный эмбеддинг слова $w$. Это представление захватывает семантическое сходство — «выручка» и «продажи» будут иметь похожие эмбеддинги, несмотря на то что являются разными токенами.

Категории финансовых документов

Финансовые документы могут быть классифицированы по нескольким таксономиям:

  • Тип документа: 10-K, 10-Q, 8-K, стенограмма звонка по прибылям, аналитический отчёт, пресс-релиз, новостная статья
  • Тональность: позитивная, негативная, нейтральная
  • Тема: слияния и поглощения, прибыли, регуляторные вопросы, юридические, кадровые изменения, запуск продуктов
  • Существенность: существенный, несущественный (может ли информация повлиять на цену акции)
  • Срочность: критичный по времени, рутинный
  • Категория риска: рыночный риск, кредитный риск, операционный риск, регуляторный риск

Иерархическая классификация

Финансовые документы часто принадлежат к иерархии категорий. Например, документ может сначала быть классифицирован как «регуляторная заявка», затем как «10-K», затем по конкретному разделу (факторы риска, MD&A, финансовые отчёты). Иерархические сети внимания (Yang et al., 2016) решают эту задачу, применяя внимание на уровне слов и предложений:

$$\mathbf{h}_i = \overrightarrow{\text{GRU}}(w_i) | \overleftarrow{\text{GRU}}(w_i)$$

$$\alpha_i = \frac{\exp(\mathbf{u}_w^T \mathbf{h}_i)}{\sum_j \exp(\mathbf{u}_w^T \mathbf{h}_j)}$$

$$\mathbf{s} = \sum_i \alpha_i \mathbf{h}_i$$

Внимание на уровне слов $\alpha_i$ выделяет, какие слова наиболее важны для классификации, а второй уровень внимания работает над представлениями предложений, определяя, какие предложения важнее всего. Это даёт интерпретируемые решения классификации — ценное свойство в регулируемых финансовых контекстах.

Подходы машинного обучения

Наивный Байес для быстрого базового решения

Наивный Байес — каноническая базовая модель для классификации текстов. Несмотря на сильное предположение о независимости — что вхождения слов условно независимы при данном классе — он показывает замечательные результаты в задачах классификации документов.

Для документа $d$ со словами $w_1, w_2, \ldots, w_n$ и класса-кандидата $c$:

$$P(c | d) \propto P(c) \prod_{i=1}^{n} P(w_i | c)$$

Условные вероятности слов для классов оцениваются из обучающих данных со сглаживанием Лапласа:

$$P(w | c) = \frac{c(w, c) + \alpha}{\sum_{w’} c(w’, c) + \alpha V}$$

где $\alpha$ — параметр сглаживания (обычно 1.0), а $V$ — размер словаря. Наивный Байес чрезвычайно быстр в обучении, требует минимальной настройки гиперпараметров и служит сильным базовым решением.

Логистическая регрессия с TF-IDF

Логистическая регрессия на признаках TF-IDF часто является самой сильной «простой» моделью для классификации документов. Для вектора признаков TF-IDF $\mathbf{x}_d$ модель оценивает вероятности классов с помощью функции softmax:

$$P(y = c | \mathbf{x}_d) = \frac{\exp(\mathbf{w}c^T \mathbf{x}d + b_c)}{\sum{c’} \exp(\mathbf{w}{c’}^T \mathbf{x}d + b{c’})}$$

Модель обучается минимизацией кросс-энтропийной функции потерь с L2-регуляризацией:

$$\mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{ic} \log P(y = c | \mathbf{x}_i) + \lambda |\mathbf{W}|_2^2$$

L2-регуляризация критически важна для классификации текстов, поскольку пространство признаков высокоразмерно и разреженно, что делает переобучение постоянным риском.

Метод опорных векторов (SVM)

SVM с линейным ядром особенно эффективны для классификации текстов, потому что:

  1. Текстовые данные обычно линейно разделимы в высокоразмерном TF-IDF пространстве
  2. SVM максимизирует отступ между классами, обеспечивая хорошую обобщающую способность
  3. Эффективно работает с высокоразмерными разреженными данными

Целевая функция SVM для бинарной классификации:

$$\min_{\mathbf{w}, b} \frac{1}{2} |\mathbf{w}|^2 + C \sum_{i=1}^{N} \max(0, 1 - y_i(\mathbf{w}^T \mathbf{x}_i + b))$$

Для многоклассовой классификации финансовых документов используются стратегии «один против всех» или «один против одного».

Свёрточные нейронные сети (CNN) для текста

CNN захватывают локальные паттерны (n-граммы) в тексте с помощью одномерной свёртки:

$$h_i = \text{ReLU}(\mathbf{W} \cdot \mathbf{x}_{i:i+k-1} + b)$$

где $\mathbf{x}_{i:i+k-1}$ — конкатенация $k$ последовательных эмбеддингов слов. Множественные размеры фильтров (например, 3, 4, 5) захватывают n-граммы разной длины. Макс-пулинг по выходу каждого фильтра создаёт представление фиксированного размера независимо от длины документа:

$$\hat{h} = \max(h_1, h_2, \ldots, h_{n-k+1})$$

Эта архитектура, предложенная Kim (2014), особенно эффективна для коротких финансовых текстов, таких как заголовки и публикации в социальных сетях.

Инженерия признаков

Признаки финансовой лексики

Предметно-специфическая лексика обеспечивает сильные классификационные сигналы:

  • Ключевые слова прибылей: «выручка», «EPS», «прогноз», «превзошёл», «не достиг», «перспективы»
  • Ключевые слова M&A: «приобретение», «слияние», «поглощение», «предложение», «сделка»
  • Регуляторные ключевые слова: «SEC», «комплаенс», «нарушение», «штраф», «санкция»
  • Ключевые слова рисков: «дефолт», «понижение рейтинга», «обесценение», «списание», «реструктуризация»

Подсчёт наличия и плотности этих групп ключевых слов создаёт интерпретируемые признаки, дополняющие статистические представления текста.

Признаки структуры документа

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

  • Длина документа: формы 10-K обычно содержат 50 000+ слов; пресс-релизы — 500-1 000 слов
  • Заголовки разделов: наличие специфических заголовков (например, «Факторы риска», «Обсуждение и анализ руководства»)
  • Плотность чисел: финансовые отчёты имеют высокое соотношение чисел к словам
  • Плотность таблиц: некоторые типы документов (отчёты о прибылях) содержат множество таблиц
  • Паттерны форматирования: юридические оговорки, предупреждения о прогнозных заявлениях

Временные признаки

Для торговых приложений время публикации документа имеет значение:

  • Торговые часы: документы, опубликованные в торговые часы vs. после закрытия
  • Сезон отчётностей: повышенная чувствительность к документам, связанным с прибылями
  • День недели: публикации в пятницу вечером часто пытаются «похоронить» плохие новости
  • Относительное время: насколько близко к дате отчётности появляется документ

Применения

Генерация торговых сигналов

Классификация документов генерирует торговые сигналы несколькими способами:

  1. На основе тональности: классификация новостей как позитивных/негативных и торговля в направлении тональности до того, как рынок полностью усвоит информацию
  2. Обнаружение событий: выявление существенных событий (объявления M&A, кадровые изменения, регуляторные действия) и выполнение событийных стратегий
  3. Информационное преимущество: более быстрая классификация заявок SEC по мере их публикации обеспечивает временное преимущество перед ручным анализом

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

Классификация документов поддерживает управление рисками:

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

Регуляторный комплаенс

Финансовые учреждения используют классификацию документов для:

  • Категоризация заявок: автоматическая маршрутизация заявок SEC соответствующим группам проверки
  • Подозрительная деятельность: выделение коммуникаций, которые могут указывать на инсайдерскую торговлю или манипулирование рынком
  • KYC/AML: классификация документов клиентов для процедур «знай своего клиента» и противодействия отмыванию денег

Реализация на Rust

Наша реализация на Rust предоставляет полный набор инструментов для классификации документов со следующими компонентами:

TfIdfVectorizer

Структура TfIdfVectorizer строит словарь из обучающего корпуса и преобразует документы в TF-IDF вектора. Она вычисляет частоты терминов, частоты документов и обратные частоты документов, создавая разреженные вектора признаков, подходящие для классификации.

NaiveBayesClassifier

NaiveBayesClassifier реализует мультиномиальный наивный Байес со сглаживанием Лапласа. Он изучает условные распределения слов для классов из размеченных обучающих данных и предсказывает метки классов путём вычисления логарифмических апостериорных вероятностей.

DocumentClassifier

DocumentClassifier реализует многоклассовую логистическую регрессию (softmax) со стохастическим градиентным спуском. Он принимает вектора признаков TF-IDF и создаёт распределения вероятностей по категориям документов.

BybitClient

Структура BybitClient обеспечивает асинхронный HTTP-доступ к Bybit V5 API. Она получает данные kline (свечей) и рыночные объявления, служащие реальными документами для классификации.

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

Реализация подключается к REST API Bybit V5 для получения рыночных данных:

  • Эндпоинт Kline (/v5/market/kline): предоставляет OHLCV-данные свечей для измерения влияния цены после сигналов классификации документов
  • Объявления: рыночные объявления и новости, служащие реальными документами для классификации по теме и ожидаемому влиянию

Ссылки

  1. Yang, Z., Yang, D., Dyer, C., He, X., Smola, A., & Hovy, E. (2016). Hierarchical Attention Networks for Document Classification. Proceedings of NAACL-HLT, 1480-1489.
  2. Kim, Y. (2014). Convolutional Neural Networks for Sentence Classification. Proceedings of EMNLP, 1746-1751.
  3. Joachims, T. (1998). Text categorization with Support Vector Machines: Learning with many relevant features. Proceedings of ECML, 137-142.
  4. Loughran, T., & McDonald, B. (2011). When is a liability not a liability? Textual analysis, dictionaries, and 10-Ks. The Journal of Finance, 66(1), 35-65.
  5. Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press.