🤖 Как мы создавали систему ML-прогнозирования для Московской биржи

🤖
Как мы создавали систему 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 и доступен для изучения и
улучшения сообществом.

Оставьте первый комментарий

Отправить ответ

Ваш e-mail не будет опубликован.


*