🤖
Как мы создавали систему ML-прогнозирования для Московской биржи
📋 Содержание
Введение
Сегодня расскажу о проекте, над которым работаю последние несколько
месяцев — системе прогнозирования цен акций на Московской бирже с
использованием машинного обучения. Это не просто эксперимент, а
полноценная production-система, которая уже работает и доступна для
тестирования.
🚀 Этапы разработки
Этап 1: Исследование и
прототип (2 месяца)
Задача: Понять, можно ли вообще прогнозировать
движение акций с приемлемой точностью.
🔍 Что сделали: — Изучили исторические данные за 10
лет (2015-2025) — Протестировали различные ML-алгоритмы — Выбрали
RandomForest как оптимальный по соотношению точность/скорость
📊 Ключевые находки: — Технические индикаторы (RSI,
MACD) значительно улучшают прогнозы — Оптимальный горизонт
прогнозирования — 1-5 дней — Точность падает с увеличением горизонта
(что логично)
Этап 2: Создание
инфраструктуры (1.5 месяца)
Задача: Построить масштабируемую архитектуру для
production.
⚙️ Технологический стек:
├── 🐍 Python (FastAPI) - ML сервис
├── 🐹 Go - высокопроизводительный сервис данных
├── ☸️ Kubernetes - оркестрация
├── 🐳 Docker - контейнеризация
└── ☁️ S3 - хранение моделей
🏗️ Архитектура: — Микросервисная архитектура —
Раздельные сервисы для ML и данных — Горизонтальное масштабирование —
Автоматическое восстановление при сбоях
Этап 3: Обучение моделей (3
недели)
Задача: Обучить модели на реальных данных MOEX.
📈 Процесс обучения: 1. Сбор
данных: 10 лет истории по SBER (2500+ торговых дней) 2.
Feature Engineering: 12 технических индикаторов 3.
Обучение: 5 моделей RandomForest (по одной на каждый
день) 4. Валидация: кросс-валидация на исторических
данных
🎯 Достигнутая точность: — 1 день: MAE = 1.04% — 3
дня: MAE = 2.01% — 5 дней: MAE = 2.83%
Этап 4: Интеграция и
тестирование (1 месяц)
Задача: Собрать все компоненты в единую систему.
🔗 Интеграции: — ✅ MOEX API для real-time данных —
✅ Telegram Bot для удобного доступа — ✅ S3 хранилище для моделей
(43MB) — ✅ SQLite для истории прогнозов
🧪 Тестирование: — Unit тесты с покрытием 80%+ —
Интеграционные тесты — Нагрузочное тестирование — A/B тесты различных
моделей
Этап 5: Запуск в production
(2 недели)
Задача: Развернуть систему в облаке и сделать
доступной пользователям.
☁️ Инфраструктура: — Kubernetes кластер в облаке —
Автоматический мониторинг — Резервное копирование — CI/CD pipeline
💻 Технические детали
Модели машинного обучения
# Используемые признаки (features)
features = [
'rsi', # Relative Strength Index
'macd', # MACD индикатор
'momentum_5d', # Моментум 5 дней
'momentum_20d', # Моментум 20 дней
'volatility_20d', # Волатильность
'volume_ratio', # Отношение объемов
'price_to_ma20', # Цена к MA20
'price_to_ma50', # Цена к MA50
# и другие...
]
# Модель
RandomForestRegressor(
n_estimators=200,
max_depth=20,
min_samples_split=10
)
Система валидации
Каждый прогноз автоматически сохраняется и проверяется:
📅 Ежедневно в 18:00
├── Сравнение прогнозов с фактическими ценами
├── Расчет ошибок и точности
└── Обновление метрик производительности
Гибридное обучение
Внедрили полуавтоматическую систему улучшения:
🔄 Еженедельный цикл
├── Автоматический анализ ошибок
├── Выявление паттернов неточностей
├── Генерация рекомендаций
└── Ручное применение корректировок (макс ±5%)
📊 Результаты и метрики
Текущая производительность
| Метрика | Значение |
|---|---|
| 🎯 Средняя точность (MAE) | 2.2% |
| 📈 Точность направления | 45-55% |
| ⚡ Время прогноза | < 3 сек |
| 🔄 Доступность системы | 99.9% |
Ретроспективная валидация
Система показывает точность последних прогнозов прямо в ответе:
📈 ПРОВЕРКА ТОЧНОСТИ (прошлые прогнозы):
• 16.09: 307₽ vs 304₽ (0.9%) ✅
• 15.09: 308₽ vs 302₽ (2.0%) ⚠️
• 12.09: 309₽ vs 302₽ (2.1%) ⚠️
Средняя ошибка: 2.2%
🔮 Планы развития
Ближайшие планы (1-3 месяца)
1. Расширение покрытия
- 📊 Добавить топ-20 акций MOEX
- 🏢 Индексы (IMOEX, RTS)
- 💱 Валютные пары
2. Улучшение моделей
- 🧠 Эксперименты с LSTM/Transformer
- 📈 Добавление макроэкономических факторов
- 🌐 Учет мировых рынков
3. Новые функции
- 📱 Веб-интерфейс и мобильное приложение
- 📊 Персональные портфели
- 🔔 Уведомления о сигналах
Среднесрочные планы (3-6
месяцев)
1. Автоматическое обучение
- 🤖 Полностью автоматическая адаптация моделей
- 🔄 A/B тестирование новых алгоритмов
- 📈 Персонализация под разные стили торговли
2. Аналитика
- 📊 Дашборды с детальной статистикой
- 🎯 Бэктестинг стратегий
- 💼 Портфельная оптимизация
3. Интеграции
- 🏦 Подключение к брокерским API
- 📰 Анализ новостного фона
- 💬 Sentiment анализ соцсетей
Долгосрочное видение (6+
месяцев)
🎯 Цель: Создать полноценную экосистему для
алготрейдинга с: — Автоматическим исполнением сделок — Риск-менеджментом
— Образовательным контентом — Сообществом трейдеров
🚀 Как попробовать
Telegram Bot
Система уже доступна для тестирования:
🤖 Бот: @MajoMOEXBot
Доступные команды:
/predict_sber - прогноз для Сбербанка
/predict_gazp - прогноз для Газпрома
/predict_lkoh - прогноз для Лукойла
/predict TICKER - прогноз для любой акции
/indicators TICKER - технические индикаторы
/validation TICKER - статистика точности
Telegram канал
Следите за обновлениями и сигналами:
📢 Канал: https://t.me/majosignal
🤝 Обратная связь
Проект находится в активной разработке, и ваше мнение очень
важно:
- Какие функции хотелось бы видеть?
- Какие акции добавить в первую очередь?
- Удобен ли текущий интерфейс?
Пишите свои предложения прямо боту или в комментариях!
⚠️ Дисклеймер
Система предоставляет прогнозы на основе исторических данных и
технического анализа. Это не является инвестиционной рекомендацией.
Всегда проводите собственный анализ перед принятием торговых
решений.
Проект разрабатывается как open-source и доступен для изучения и
улучшения сообществом.
Отправить ответ