Skip to content

empenoso/llm-stock-market-predictor

Repository files navigation

🧠 LLM Finance Predictor

Может ли языковая модель научиться читать биржевые графики?

PyTorch + Transformers Docker License GPU


🧩 Идея проекта

Эксперимент: можно ли заставить языковую модель (LLM) понимать поведение рынка, если подать график в виде текста, а не чисел?

Каждые 10 дней торгов превращаются в короткие текстовые описания вроде:

price rising strongly, volume increasing, near resistance

Эти фразы читает модель DistilBERT и пытается определить, пойдёт ли цена вверх или вниз на следующий день.


⚙️ Технологический стек

Компонент Версия / Особенности
Python 3.11
PyTorch 2.7.0 (CUDA 12.8, cuDNN 9)
Transformers 4.35.2
Tokenizers 0.15.0
Docker полностью изолированная среда
GPU поддержка RTX Blackwell (sm_120)

📈 Результаты эксперимента на 227 бумаг TQBR Московской биржи

analysis_20251011_181432
Метрика Средний AUC по всем бумагам Лучшие тикеры Худшие тикеры
AUC ≈ 0.53 AFLT (0.72), RTSB (0.70) PLZL (0.33), CHMF (0.36)

Модель предсказывает направление немного лучше случайного угадывания, но при этом понимает контекст рыночных движений через язык.


🧰 Быстрый старт

1️⃣ Клонирование репозитория

git clone https://github.com/empenoso/llm-stock-market-predictor.git

cd llm-stock-market-predictor

2️⃣ Сборка Docker-образа

docker build -t llm_predictor .

3️⃣ Запуск эксперимента

bash run.sh

4️⃣ Очистка образа

bash cleanup.sh

📊 Структура проекта

Файл Назначение
llm_finance_predictor.py Основная логика обработки OHLCV → текст → предсказания
multi_ticker_experiment.py Пакетное тестирование на множестве тикеров
Dockerfile Контейнер с CUDA и нужными библиотеками
cleanup.sh Очистка Docker-образа и кэша
requirements.txt Зависимости (фиксированные версии)
/Data/ Каталог с котировками (.txt или .csv)
/results/ Сюда сохраняются метрики и графики

🧮 Как работает конвейер

  1. Преобразование OHLCV → троичные признаки (рост, падение, боковик)
  2. Генерация текста → на естественном английском (price rising strongly, near resistance)
  3. Обучение DistilBERT → бинарная классификация (рост / падение)
  4. Walk-forward валидация → имитация реального рынка
  5. Оценка качества → метрики Accuracy, Precision, Recall, F1, AUC

🧩 Пример текстовой разметки

Дата Описание Target
2024-06-21 price rising strongly, volume increasing, near resistance 1
2024-06-24 price consolidating, sideways movement, low volatility 0

🚀 Особенности

  • Полностью воспроизводимо в Docker
  • Поддержка новых GPU Blackwell (RTX 5060 Ti и выше)
  • Векторизованная обработка >200 тикеров
  • Готовый шаблон для собственных LLM-экспериментов на рынке

📦 Результаты и логи

  • Все метрики (accuracy, f1, auc) сохраняются в /results

🧑‍💻 Автор

Михаил Шардин

Онлайн-визитка: shardin.name

Telegram-канал: "Умный Дом Инвестора"

Проект создан как исследование: не торговый алгоритм, а демонстрация того, как языковые модели могут «читать» рынок как текст.


🧠 Идеи для продолжения

  • Использовать LLaMA, Mistral или Gemma для более сложных текстовых паттернов
  • Применить мультимодальные модели (текст + изображение графика)
  • Добавить дообучение на финансовых статьях и отчетах компаний

🪪 Лицензия

Проект распространяется под лицензией MIT — свободно используйте, улучшайте и развивайте, пришлите весточку когда всё получится.

About

🤖 Teaching LLMs to read stock charts: converting OHLCV data to text patterns for price prediction using DistilBERT | Эксперимент по обучению языковой модели предсказывать движение цен через текстовое описание графиков

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors