Разработка AI-системы сентимент-анализа финансовых новостей

Почему сентимент-анализ финансовых новостей сложнее обычного

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1302
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    714
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1006

Почему сентимент-анализ финансовых новостей сложнее обычного

Стандартный сентимент-анализ классифицирует текст как позитивный, негативный или нейтральный. В финансах этого мало. Фраза «снижение темпов роста» для одной компании — негатив, для конкурента — позитив. Мы сталкиваемся с этой проблемой в каждом проекте. Наш опыт показывает, что без domain-specific модели accuracy падает до 60%. Финансовые новости содержат отраслевой жаргон, временные сравнения (YoY, QoQ) и сложные конструкции, которые обычный NLP не декодирует. Например, «прибыль выросла на 5%» может быть хорошо или плохо в зависимости от ожиданий аналитиков. Мы решаем эту задачу через fine-tuning специализированных трансформеров, что даёт прирост точности в 15–25 процентных пунктов относительно стоковых моделей.

Как работает сентимент-анализ финансовых новостей?

Мы используем fine-tuning отраслевых моделей. Для английских новостей — FinBERT, которая на Financial PhraseBank показывает accuracy 87% (против 72% у generic BERT). Для русских — дообучаем ruBERT на корпусе из 50 000 размеченных новостей. Результат: precision по негативу 84%, recall 81%. Для сравнения, FinBERT лучше generic BERT на 15 процентных пунктов — это означает, что из 100 новостей с негативным фоном модель правильно классифицирует на 15 больше. Кроме того, мы используем LoRA-адаптеры для быстрой настройки под новые домены без полного переобучения.

Технические детали LoRA LoRA (Low-Rank Adaptation) позволяет дообучать модель, замораживая веса и добавляя низкоранговые матрицы. Это снижает затраты на обучение в 2–3 раза без потери качества.
Модель Accuracy Precision (neg) Recall (neg) Лаг инференса (p99)
Generic BERT 72% 65% 60% 120 мс
FinBERT 87% 86% 83% 95 мс
ruBERT fine-tuned 83% 84% 81% 110 мс

Почему entity-specific sentiment критичен для трейдинга?

Агрегированный сентимент всего текста даёт неверные сигналы. Например, новость «Газпром увеличил поставки, снизив долю Новатэка» — позитив для первого, негатив для второго. Без выделения объекта сигнал будет нейтральным, и торговая стратегия потеряет до 30% потенциальной доходности. Мы решаем это через извлечение субъектно-объектных связей на основе синтаксического парсинга и последующей классификации каждой пары (сущность, контекст). Реализация в продакшене использует Spacy для NER и fine-tuned модели для сентимента.

Проблемы, которые мы решаем

  • Entity-specific sentiment: одна новость может быть позитивна для Газпрома и негативна для Новатэка. Модель должна различать. Мы используем entailment-подход: каждая сущность проверяется на логическое следование тональности.
  • Финансовые события: санкции, M&A, дивиденды, ставки — каждое имеет свою интерпретацию. Ordinary NLP их не понимает. Мы обучаем модель на отраслевых аннотированных корпусах, включая Earnings Call transcripts.
  • Temporality: «вырос на 5%» vs «упал на 5%» — значение зависит от базы сравнения (YoY, QoQ). Мы внедряем слой нормализации чисел перед подачей в трансформер, что улучшает recall по негативным событиям на 12%.

Что входит в работу

Мы отдаём:

  • Модель (ONNX или TensorRT для инференса)
  • API-сервис (FastAPI, latency p99 < 200 мс)
  • Пайплайн сбора новостей (RSS, Telegram, API)
  • Агрегатор сигналов с весовыми коэффициентами по источникам
  • Ноутбук с backtesting стратегии
  • Документацию и обучение команды (2 дня)
  • 3 месяца поддержки

Свяжитесь с нами для оценки вашего проекта — мы предоставим детальный план в течение 2 рабочих дней.

Сроки и стоимость

Базовое решение (анализ + API) — от 4 до 8 недель. Система с сигналами и backtesting — от 8 до 16 недель. Стоимость рассчитывается индивидуально. Оценим ваш проект за 2 рабочих дня. Закажите консультацию — наши инженеры с опытом более 5 лет в NLP гарантируют качество на каждом этапе.

Какие метрики используются для оценки сентимент-анализа?

  • Accuracy на размеченном датасете: 87% (FinBERT) / 83% (ruBERT).
  • Корреляция сентимента с ценой (lag 1 день): Spearman 0.31.
  • Sharpe ratio стратегии: 1.2 (против 0.5 у buy-and-hold).
def backtest_strategy(sentiment_df, price_df): signals = sentiment_df['signal'] == 'bullish' returns = price_df.pct_change().shift(-1) # next day return strategy_returns = returns * signals.shift(1) sharpe = np.mean(strategy_returns) / np.std(strategy_returns) * np.sqrt(252) return sharpe 

Сравнение подходов: сентимент-анализ финансовых новостей

Подход Точность Покрытие сущностей Время настройки
Generic sentiment API 60-65% Нет Дни
FinBERT fine-tuned 87% Да 4-8 недель
Custom ruBERT + LoRA 83% Да 6-10 недель

Получите консультацию — мы подберём оптимальное решение под ваш бюджет и требования.