YuriFalevsky/time_series_sentiment

Python

0

2 commits

updated Apr 24, 2026

See the code

README

time_series_sentiment

Гибридный проект для прогнозирования направления движения акций MOEX на основе:

  • новостей на русском языке,
  • рыночных временных рядов,
  • моделей сентимента,
  • мета-модели, объединяющей текстовые и технические сигналы.

Цель проекта

Оценить, когда сентимент действительно добавляет предсказательную силу к технической модели, и в каких настройках это устойчиво на честных сплитах.

Основная задача:

  • прогноз direction (рост/падение) на фиксированных горизонтах,
  • сравнение tech_only vs tech + sentiment vs контроль с random sentiment.

Что считается объектом

Базовый объект обучения/оценки:

  • (news, ticker, timestamp)

Для каждого объекта строятся:

  • технические признаки по истории цены,
  • сентимент-фичи из текстовой модели или RAG,
  • таргет направления по доходности на выбранном горизонте.

Данные

В проекте используются:

  • основной русскоязычный набор финансовых новостей,
  • внешние русскоязычные news-наборы для расширения корпуса,
  • котировки MOEX для расчета таргетов и технических признаков,
  • граф связей тикеров (knowledge_graph.gexf) для KG-расширений.

Архитектура

1) Технический блок

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

  • GRU/LSTM для динамики цены,
  • XGBoost/CatBoost как табличные/мета-компоненты.

2) Сентимент-блок

Тестировались несколько подходов:

  • готовые и дообученные BERT-модели для RU financial sentiment,
  • RAG-сентимент (retrieval похожих новостей + агрегация меток),
  • Jina v3 embeddings + CatBoost как отдельный пайплайн.

Также исследовались формульные oracle/pseudo-target сентименты для анализа связи с рыночным direction.

3) Мета-модель

Мета-модель объединяет:

  • выход техблока,
  • сентимент (score/class/probabilities/confidence),
  • контекстные агрегаты и взаимодействия.

На выходе:

  • финальный прогноз направления,
  • метрики dir_acc, dir_f1.

Что в репозитории

  • experiments/ — сценарии экспериментов и ablation.
  • scripts/ — утилиты и remote GPU workflow.
  • results_remote/ — сохраненные результаты ключевых прогонов.
  • reports/ — сводные таблицы и аналитические отчеты.
  • docs/ — материалы статьи.
  • sentiment_rag_v2.py — RAG-сентимент пайплайн.
  • xgb_gru_rag_kg_system_v2.py — интеграционный скрипт системы.

Воспроизводимость

Быстрая проверка remote GPU

make gpu-check

Синхронизация проекта на gpu-pc

make gpu-push

Запуск эксперимента на удаленной GPU-машине

make gpu-run ENTRY=experiments/sentiment_meta_ablation_rag.py ARGS="--horizons 24 --xgb-seeds 42,43,44 --max-news 20000 --lstm-epochs 8 --use-cuda --rag-method softmax"

Принципы оценки

В экспериментах фокус на:

  • честные сплиты (время/группы текста),
  • контроль data leakage,
  • сравнение с базовыми и случайными источниками сентимента,
  • устойчивость по нескольким прогонам/сидам.

Ключевой вывод

Сентимент полезен не сам по себе, а когда:

  • корректно синхронизирован с рынком,
  • согласован с целевым горизонтом,
  • вычислен без утечек,
  • и добавляется к сильному техническому baseline в мета-модели.

Именно поэтому в проекте есть отдельные блоки:

  • проверки leakage,
  • ablation источников сентимента,
  • сравнения формул/моделей/RAG,
  • и контрольные сценарии с random sentiment.

Статья

Материалы статьи находятся в docs/icdm2026_falevsky.pdf.

YuriFalevsky/time_series_sentiment

Python

0

2 commits

updated Apr 24, 2026

See the code

README

time_series_sentiment

Гибридный проект для прогнозирования направления движения акций MOEX на основе:

  • новостей на русском языке,
  • рыночных временных рядов,
  • моделей сентимента,
  • мета-модели, объединяющей текстовые и технические сигналы.

Цель проекта

Оценить, когда сентимент действительно добавляет предсказательную силу к технической модели, и в каких настройках это устойчиво на честных сплитах.

Основная задача:

  • прогноз direction (рост/падение) на фиксированных горизонтах,
  • сравнение tech_only vs tech + sentiment vs контроль с random sentiment.

Что считается объектом

Базовый объект обучения/оценки:

  • (news, ticker, timestamp)

Для каждого объекта строятся:

  • технические признаки по истории цены,
  • сентимент-фичи из текстовой модели или RAG,
  • таргет направления по доходности на выбранном горизонте.

Данные

В проекте используются:

  • основной русскоязычный набор финансовых новостей,
  • внешние русскоязычные news-наборы для расширения корпуса,
  • котировки MOEX для расчета таргетов и технических признаков,
  • граф связей тикеров (knowledge_graph.gexf) для KG-расширений.

Архитектура

1) Технический блок

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

  • GRU/LSTM для динамики цены,
  • XGBoost/CatBoost как табличные/мета-компоненты.

2) Сентимент-блок

Тестировались несколько подходов:

  • готовые и дообученные BERT-модели для RU financial sentiment,
  • RAG-сентимент (retrieval похожих новостей + агрегация меток),
  • Jina v3 embeddings + CatBoost как отдельный пайплайн.

Также исследовались формульные oracle/pseudo-target сентименты для анализа связи с рыночным direction.

3) Мета-модель

Мета-модель объединяет:

  • выход техблока,
  • сентимент (score/class/probabilities/confidence),
  • контекстные агрегаты и взаимодействия.

На выходе:

  • финальный прогноз направления,
  • метрики dir_acc, dir_f1.

Что в репозитории

  • experiments/ — сценарии экспериментов и ablation.
  • scripts/ — утилиты и remote GPU workflow.
  • results_remote/ — сохраненные результаты ключевых прогонов.
  • reports/ — сводные таблицы и аналитические отчеты.
  • docs/ — материалы статьи.
  • sentiment_rag_v2.py — RAG-сентимент пайплайн.
  • xgb_gru_rag_kg_system_v2.py — интеграционный скрипт системы.

Воспроизводимость

Быстрая проверка remote GPU

make gpu-check

Синхронизация проекта на gpu-pc

make gpu-push

Запуск эксперимента на удаленной GPU-машине

make gpu-run ENTRY=experiments/sentiment_meta_ablation_rag.py ARGS="--horizons 24 --xgb-seeds 42,43,44 --max-news 20000 --lstm-epochs 8 --use-cuda --rag-method softmax"

Принципы оценки

В экспериментах фокус на:

  • честные сплиты (время/группы текста),
  • контроль data leakage,
  • сравнение с базовыми и случайными источниками сентимента,
  • устойчивость по нескольким прогонам/сидам.

Ключевой вывод

Сентимент полезен не сам по себе, а когда:

  • корректно синхронизирован с рынком,
  • согласован с целевым горизонтом,
  • вычислен без утечек,
  • и добавляется к сильному техническому baseline в мета-модели.

Именно поэтому в проекте есть отдельные блоки:

  • проверки leakage,
  • ablation источников сентимента,
  • сравнения формул/моделей/RAG,
  • и контрольные сценарии с random sentiment.

Статья

Материалы статьи находятся в docs/icdm2026_falevsky.pdf.