Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telegram-бот для анализа и прогнозирования акций

Учебный проект по машинному обучению и автоматизации финансового анализа

Цель разработки

Разработать Telegram-бота, который позволяет пользователю:

  • Получать прогноз цены акций на 30 дней вперёд;
  • Получать рекомендации по покупке/продаже на основе прогноза;
  • Рассчитывать условную прибыль от стратегии торговли;
  • Всё это — в удобном интерфейсе мессенджера, без необходимости использовать специализированные платформы.

Проект демонстрирует применение трёх различных подходов к прогнозированию временных рядов: классической ML-модели, статистической модели и нейросети.


Основной функционал

1. Ввод данных

Пользователь указывает:

  • Тикер компании (например, AAPL, TSLA, MSFT);
  • Сумму условной инвестиции (в USD).

2. Анализ и прогноз

Бот автоматически:

  • Загружает исторические данные за последние 2 года с Yahoo Finance;
  • Обучает три модели:
    • Random Forest с лаговыми признаками;
    • Prophet (Meta);
    • LSTM (нейросеть);
  • Выбирает лучшую модель по метрике MAPE (Mean Absolute Percentage Error).

3. Визуализация

Отправляет график с:

  • Историей цен (последние 90 дней);
  • Прогнозом на 30 дней вперёд.

4. Торговые рекомендации

Анализирует прогноз и предлагает:

  • Дни для покупки (локальные минимумы);
  • Дни для продажи (локальные максимумы);
  • Расчёт потенциальной прибыли от суммы пользователя.

5. Логирование

Все запросы сохраняются в файл audit_logs.csv с деталями:

  • ID пользователя, дата, тикер, сумма;
  • Выбранная модель, значение MAPE, прибыль.

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

  • Python 3.9+
  • aiogram - Telegram-бот фреймворк
  • pandas/numpy - Обработка данных
  • scikit-learn - Реализация Random Forest
  • prophet - Прогнозирование временных рядов
  • tensorflow - Нейронные сети LSTM
  • yfinance - Yahoo Finance API
  • matplotlib - Построение графиков

Особенности

  • Три разных класса моделей — обеспечивает объективный выбор наилучшего подхода.
  • Реальное время — все расчёты выполняются после запроса пользователя.
  • Обработка ошибок — некорректные тикеры или суммы не ломают бота.
  • Нет зависимости от внешних сервисов (кроме Yahoo Finance).
  • Учебный характер — результаты не являются финансовыми рекомендациями.

Инструкция по развёртыванию

Требования

  • Python 3.9–3.13 (внимание: для TensorFlow требуется Python ≤ 3.13)
  • Доступ в интернет (для загрузки данных с Yahoo Finance)
  • Telegram-аккаунт и BotFather для получения токена

Шаги по установке

  1. Клонируйте репозиторий:

    git clone <url>
    cd StockBot
  2. Создайте виртуальное окружение (рекомендуется):

    python -m venv venv
    source venv/bin/activate        # Linux/macOS
    # или
    venv\Scripts\activate          # Windows
  3. Установите зависимости:

    pip install --upgrade pip
    pip install -r requirements.txt

    ⚠️ Если возникают проблемы с yfinance, выполните:

pip uninstall yfinance -y
pip install --no-cache-dir git+https://github.com/ranaroussi/yfinance.git@main
  1. Настройте Telegram-бота:

    • Напишите @BotFather/newbot

    • Скопируйте токен (например: 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ)

    • Создайте файл .env в корне проекта:

      TELEGRAM_BOT_TOKEN=ваш_токен_здесь
  2. Запустите бота:

    python app.py

    Готово! Бот запущен и готов принимать запросы.


Использование бота

  1. Найдите своего бота в Telegram по имени (указано при создании через BotFather).

  2. Отправьте команду:

    /start
    
  3. Следуйте инструкциям:

    • Введите тикер (например: AAPL);
    • Введите сумму инвестиций (например: 1000).
  4. Дождитесь анализа (обычно 30–120 секунд, особенно при первом запуске LSTM).

  5. Получите:

    • График прогноза;
    • Изменение цены через 30 дней;
    • Рекомендации по сделкам;
    • Расчёт прибыли.

Поддерживаются популярные тикеры: AAPL, MSFT, GOOGL, TSLA, AMZN, NVDA и др.


Важное примечание

  • Результаты носят исключительно учебный характер.
  • Бот не подключён к реальным биржам и не совершает сделок.
  • Прогнозы основаны на исторических данных и могут быть неточными.
  • Не используйте вывод бота как основу для реальных инвестиций.

Производительность моделей

Бот автоматически выбирает лучшую модель на основе MAPE:

  • Random Forest: Хорош для краткосрочных паттернов, быстрое обучение
  • Prophet: Отлично выявляет тренды и сезонность
  • LSTM: Улавливает сложные нелинейные зависимости

Каждая модель оценивается на отложенной тестовой выборке (20% от обучающих данных) перед выбором.


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages