Может ли языковая модель научиться читать биржевые графики?
Эксперимент: можно ли заставить языковую модель (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) |
| Метрика | Средний AUC по всем бумагам | Лучшие тикеры | Худшие тикеры |
|---|---|---|---|
| AUC | ≈ 0.53 | AFLT (0.72), RTSB (0.70) |
PLZL (0.33), CHMF (0.36) |
Модель предсказывает направление немного лучше случайного угадывания, но при этом понимает контекст рыночных движений через язык.
git clone https://github.com/empenoso/llm-stock-market-predictor.git
cd llm-stock-market-predictordocker build -t llm_predictor .bash run.shbash cleanup.sh| Файл | Назначение |
|---|---|
| llm_finance_predictor.py | Основная логика обработки OHLCV → текст → предсказания |
| multi_ticker_experiment.py | Пакетное тестирование на множестве тикеров |
| Dockerfile | Контейнер с CUDA и нужными библиотеками |
| cleanup.sh | Очистка Docker-образа и кэша |
| requirements.txt | Зависимости (фиксированные версии) |
| /Data/ | Каталог с котировками (.txt или .csv) |
| /results/ | Сюда сохраняются метрики и графики |
- Преобразование OHLCV → троичные признаки (
рост,падение,боковик) - Генерация текста → на естественном английском (
price rising strongly, near resistance) - Обучение DistilBERT → бинарная классификация (
рост / падение) - Walk-forward валидация → имитация реального рынка
- Оценка качества → метрики 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 — свободно используйте, улучшайте и развивайте, пришлите весточку когда всё получится.