Локльно проект можно запустить через
poetry install
cp portfolio_optimisation/.env.example portfolio_optimisation/.env
Добавьте переменные bot_token и benzinga_token
make start-api
make start-bot
Чтобы запустить через docker-compose
cp portfolio_optimisation/.env.example portfolio_optimisation/.env
Добавьте переменные bot_token и benzinga_token
docker compose up
Проект направлен на разработку системы, предлагающей рекомендации по балансировке портфеля ценных бумаг, учитывая цены на акции и связанные новости для максимизации прибыли.
- Модель Встраивания: Использует векторные представления, сгенерированные из заголовков новостей.
- Модель Машинного Обучения: Применяет различные алгоритмы машинного обучения.
- Алгоритм Оптимизации: Для оптимизации портфеля.
- Исторические Данные: Акции из индекса S&P 500, полученные из Yahoo Finance, начиная с 2010 года, более миллиона записей.
- Финансовые Новости: Также по акциям индекса S&P 500, полученные из Benzinga, включая более 300 000 новостных статей и заголовков.
- Обработка Текста: Токенизация, удаление стоп-слов и пунктуации, стемминг с использованием SnowballStemmer.
- Встраивание: Генерация векторных представлений из заголовков новостей с использованием all-MiniLM-L6-v2.
- TF-IDF: Применяется для агрегирования текстов новостей по дням.
- Обработка Исторических Данных: Включает MACD, скользящие средние, тренды и лаги.
Исследованы модели без NLP для скорости: CatBoost, XGBoost, LGBM, GBoost и Random Forest от Sklearn. Метрики, такие как R2-скор, MAE и MSE, предоставляются для оценки производительности.
- Исследование дополнительных источников новостей и расширение набора данных.
- Применение моделей глубокого обучения, например, LSTM.
- Разработка комплексного веб-приложения.
| model | mean_absolute_error | mean_squared_error | r2 | full_train_min | full_train_sec | train_size |
|---|---|---|---|---|---|---|
| metrics_financial_data_only | 0.016942 | 0.000640 | 0.665110 | 0 | 10.02 | 946211 |
| metrics_titles_embedding_financial_data | 0.017106 | 0.000689 | 0.824685 | 0 | 20.25 | 60358 |
| metrics_news_tfidf_title_embedding_financial_data | 0.019028 | 0.000883 | 0.775300 | 45 | 42.97 | 60358 |
| metrics_nlp_news_financial_data | 0.019148 | 0.000893 | 0.772712 | 43 | 19.21 | 60358 |