Глава 241: Анализ тональности с FinBERT
Введение
FinBERT — это предварительно обученная языковая модель, специально дообученная для анализа тональности финансовых текстов. Построенная на основе BERT (Bidirectional Encoder Representations from Transformers), модель FinBERT понимает нюансированный язык финансовых текстов — отчётов о прибыли, аналитических заметок, новостных заголовков и постов в социальных сетях — и классифицирует их как позитивные, негативные или нейтральные. В отличие от универсальных инструментов анализа тональности, которые плохо справляются с доменной лексикой (где «волатильный» может быть нейтральным, а «реструктуризация» — негативным), FinBERT обучен на тысячах финансовых документов для улавливания тонких смыслов рыночно значимого языка.
Анализ тональности стал критическим компонентом современного количественного трейдинга. Исследования показали, что тональность новостей может предсказывать краткосрочные движения цен, сюрпризы в отчётности и всплески волатильности. Систематически количественно оценивая тон финансовых текстов, трейдеры могут строить альфа-сигналы, дополняющие традиционный технический и фундаментальный анализ. FinBERT обеспечивает точность анализа на уровне state-of-the-art, достигая более 90% точности на стандартных бенчмарках финансовой тональности.
В этой главе представлена полная система анализа тональности на базе FinBERT. Мы рассмотрим архитектуру модели, механику оценки тональности, стратегии включения тональности в торговые сигналы и рабочую реализацию на Rust, подключённую к криптовалютной бирже Bybit для торговли на основе тональности в реальном времени.
Ключевые концепции
Архитектурная основа BERT
FinBERT наследует свою архитектуру от BERT, который использует многослойный двунаправленный энкодер на основе Transformer. Ключевая инновация BERT — стратегия предобучения: модель учится представлениям языка, одновременно учитывая левый и правый контекст на всех слоях.
Вход BERT — это последовательность токенов $\mathbf{x} = [x_1, x_2, \ldots, x_n]$, которые преобразуются в эмбеддинги и проходят через $L$ слоёв Transformer. Каждый слой применяет многоголовое самовнимание:
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
где $Q$, $K$, $V$ — матрицы запросов, ключей и значений, полученные из входных данных, а $d_k$ — размерность ключевых векторов. Механизм многоголового внимания выполняет $h$ операций внимания параллельно:
$$\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)W^O$$
Выход последнего слоя Transformer для токена [CLS] служит представлением уровня предложения, отражающим общий смысл входного текста.
Адаптация к финансовому домену
FinBERT адаптирует общую модель BERT к финансовому домену через двухэтапный процесс:
- Доменное предобучение: базовая модель BERT дообучается на большом корпусе финансовых текстов (например, Reuters TRC2 с ~46 000 финансовых статей). Этот этап обучает модель финансовой лексике и языковым паттернам.
- Дообучение на задаче: адаптированная к домену модель дообучается на размеченном датасете финансовой тональности (например, Financial PhraseBank с ~4 845 предложениями, размеченными финансовыми экспертами).
Финальный классификационный слой отображает представление [CLS] в вероятности тональности:
$$P(y | \mathbf{x}) = \text{softmax}(W_c \cdot \mathbf{h}_{[CLS]} + b_c)$$
где $y \in {\text{позитивная}, \text{негативная}, \text{нейтральная}}$, $W_c$ — весовая матрица классификации, а $\mathbf{h}_{[CLS]}$ — скрытое состояние токена [CLS] из последнего слоя.
Оценка тональности
Для торговых приложений трёхклассовое распределение вероятностей обычно преобразуется в непрерывную оценку тональности:
$$S = P(\text{позитивная}) - P(\text{негативная})$$
Эта оценка варьируется от -1 (сильно негативная) до +1 (сильно позитивная). Оценка, близкая к 0, указывает на нейтральную тональность или неопределённость. Непрерывная оценка полезнее дискретных меток, так как она отражает интенсивность тональности, которая коррелирует с амплитудой последующих движений цены.
Агрегированные сигналы тональности
Оценки тональности отдельных текстов агрегируются по множеству источников и временных окон для построения устойчивых торговых сигналов:
$$\bar{S}t = \frac{1}{N_t} \sum{i=1}^{N_t} S_i$$
где $N_t$ — количество текстов, наблюдаемых во временном окне, заканчивающемся в момент $t$. Взвешенные варианты могут придавать больший вес более свежим текстам или прогнозам с более высокой уверенностью:
$$\bar{S}t^w = \frac{\sum{i=1}^{N_t} w_i \cdot S_i}{\sum_{i=1}^{N_t} w_i}$$
где веса $w_i$ могут основываться на давности, надёжности источника или уверенности предсказания.
Подходы машинного обучения
Альфа-сигналы на основе тональности
Простейшее торговое применение использует оценку тональности непосредственно как альфа-сигнал. При агрегированной тональности $\bar{S}_t$ и пороге $\theta$:
- Сигнал на покупку: $\bar{S}_t > \theta$ (бычья тональность)
- Сигнал на продажу: $\bar{S}_t < -\theta$ (медвежья тональность)
- Без сделки: $|\bar{S}_t| \leq \theta$ (нейтральная или неопределённая)
Порог $\theta$ контролирует агрессивность стратегии. Более высокие пороги порождают меньше, но более убеждённых сделок.
Моментум тональности
Моментум тональности отражает скорость изменения тональности, которая может быть более предсказательной, чем уровень:
$$\Delta S_t = \bar{S}t - \bar{S}{t-k}$$
Положительный моментум тональности (улучшающаяся тональность) часто предшествует росту цены, даже если абсолютный уровень тональности всё ещё отрицательный. Это аналогично подходу «второй производной», используемому в экономических индикаторах.
Мультифакторная интеграция
Тональность наиболее эффективна в сочетании с другими факторами. Мультифакторная модель может взвешивать:
$$\alpha_t = \beta_1 \cdot \bar{S}_t + \beta_2 \cdot \Delta S_t + \beta_3 \cdot \text{Volume}_t + \beta_4 \cdot \text{Momentum}_t$$
Коэффициенты $\beta_i$ оцениваются регрессией или машинным обучением на исторических данных. Тональность часто добавляет ортогональную информацию к ценовым факторам, улучшая коэффициент Шарпа комбинированной стратегии.
Логистическая регрессия для классификации тональности
Для построения лёгкого классификатора тональности без полной модели Transformer логистическая регрессия на признаках TF-IDF или эмбеддингов слов предоставляет практическую базовую линию:
$$P(y = 1 | \mathbf{x}) = \sigma(\mathbf{w}^T \mathbf{x} + b) = \frac{1}{1 + e^{-(\mathbf{w}^T \mathbf{x} + b)}}$$
Обучение минимизирует бинарную кросс-энтропию:
$$\mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log \hat{y}_i + (1 - y_i) \log(1 - \hat{y}_i) \right]$$
Инженерия признаков
Предобработка текста для финансовых документов
Финансовый текст требует специализированной предобработки:
- Нормализация тикеров: замена тикерных символов ($AAPL, BTC, ETH) стандартизированными токенами
- Обработка чисел: нормализация финансовых показателей (выручка, EPS, капитализация) в категориальные диапазоны
- Область отрицания: отслеживание слов отрицания («не прибыльный», «не удалось достичь»), меняющих тональность
- Доменные стоп-слова: удаление финансовых шаблонных фраз
Признаки тональности на основе ключевых слов
До глубокого обучения подходы на основе ключевых слов использовали словари финансовой тональности, такие как словарь Loughran-McDonald, классифицирующий слова по категориям:
- Позитивные: profit, growth, improvement, outperform, upgrade
- Негативные: loss, decline, risk, downgrade, deficit, lawsuit
- Неопределённость: may, possible, uncertain, approximately, risk
- Судебные: lawsuit, court, legal, regulation, compliance
Соотношение позитивных и негативных слов предоставляет простой, но эффективный индикатор тональности:
$$S_{LM} = \frac{N_{positive} - N_{negative}}{N_{total}}$$
Затухание тональности
Влияние тональности на цены затухает со временем. Экспоненциально взвешенная оценка тональности отражает это:
$$\hat{S}t = \sum{i=0}^{T} \lambda^i \cdot S_{t-i}$$
где $\lambda \in (0, 1)$ — коэффициент затухания. Типичные значения варьируются от 0,9 (медленное затухание, многодневное влияние) до 0,5 (быстрое затухание, внутридневное влияние).
Применения
Тональность отчётных звонков
Отчётные звонки предоставляют богатые данные о тональности. Тон руководства во время сессии вопросов и ответов особенно информативен:
- Подготовленные замечания: обычно позитивные и подготовленные по сценарию; анализ тональности здесь отражает степень оптимизма.
- Ответы на вопросы: неподготовленные; отклонения от типичного позитивного тона сигнализируют о потенциальных проблемах.
- Вопросы аналитиков: тональность вопросов раскрывает рыночные опасения и ожидания.
Торговля на тональности новостей
Заголовки и статьи финансовых новостей могут оцениваться в реальном времени для торговли на основе тональности:
- Экстренные новости: быстрая оценка тональности позволяет немедленно корректировать позиции.
- Развороты тональности: когда тональность переключается с негативной на позитивную (или наоборот), это часто сигнализирует о точке разворота.
- Консенсус тональности: когда несколько источников согласны в направлении тональности, сигнал сильнее.
Тональность криптовалютного рынка
Криптовалютные рынки особенно чувствительны к тональности из-за:
- Более высокого участия розничных инвесторов и влияния социальных сетей
- Меньшего количества фундаментальных якорей (нет прибыли, дивидендов или балансовой стоимости)
- Круглосуточной торговли с быстрым распространением информации
FinBERT может применяться к крипто-специфическим текстовым источникам: обсуждениям в Twitter/X, постам на Reddit, каналам Telegram и объявлениям бирж. API Bybit предоставляет ценовые данные для корреляции с сигналами тональности.
Реализация на Rust
Наша реализация на Rust предоставляет полный набор инструментов для анализа тональности и торговли со следующими компонентами:
SentimentAnalyzer
Структура SentimentAnalyzer реализует анализ финансовой тональности на основе ключевых слов, используя финансовый словарь тональности Loughran-McDonald. Она оценивает текст, подсчитывая позитивные и негативные финансовые ключевые слова, вычисляя нормализованную оценку тональности от -1 до +1.
SentimentAggregator
SentimentAggregator собирает оценки тональности отдельных текстов со временем и вычисляет агрегированные сигналы. Поддерживает простое усреднение, экспоненциально взвешенное усреднение с настраиваемым затуханием и моментум тональности.
SentimentClassifier
SentimentClassifier реализует логистическую регрессию для бинарной классификации тональности (позитивная vs. негативная). Принимает векторы признаков и обучается с помощью стохастического градиентного спуска.
SentimentStrategy
SentimentStrategy комбинирует сигналы тональности с ценовыми данными для генерации торговых решений. Использует настраиваемые пороги входа и выхода, поддерживает длинные и короткие позиции.
BybitClient
Структура BybitClient обеспечивает асинхронный HTTP-доступ к Bybit V5 API. Получает данные kline (свечей) из эндпоинта /v5/market/kline для бэктестинга стратегий тональности на реальных криптовалютных данных.
Интеграция с Bybit API
Реализация подключается к REST API Bybit V5 для получения рыночных данных в реальном времени:
- Эндпоинт Kline (
/v5/market/kline): предоставляет OHLCV-данные свечей с настраиваемыми интервалами. Используется для корреляции сигналов тональности с движениями цены и вычисления доходности стратегии. - Эндпоинт книги заявок (
/v5/market/orderbook): предоставляет снимок текущей книги лимитных заявок для вычисления спреда и признаков ликвидности.
Ссылки
- Araci, D. (2019). FinBERT: Financial Sentiment Analysis with Pre-Trained Language Models. arXiv preprint arXiv:1908.10063.
- Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of deep bidirectional transformers for language understanding. NAACL-HLT, 4171-4186.
- 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.
- Malo, P., Sinha, A., Korhonen, P., Wallenius, J., & Takala, P. (2014). Good debt or bad debt: Detecting semantic orientations in economic texts. Journal of the Association for Information Science and Technology, 65(4), 782-796.
- Huang, A. H., Wang, H., & Yang, Y. (2023). FinBERT: A large language model for extracting information from financial text. Contemporary Accounting Research, 40(2), 806-841.