🇷🇺 Russian Investment Analysis Pipeline
Продвинутый инструмент для комплексного анализа российских инвестиционных портфелей с применением современных математических моделей и методов количественной финансовой инженерии.
🚀 Возможности
📊 Комплексный анализ портфелей
- ✅ Анализ российских акций, драгметаллов и криптовалют
- ✅ Расчет ключевых метрик риска и доходности
- ✅ Визуализация результатов в высоком качестве (300 DPI)
- ✅ Поддержка множественных портфелей
🧮 Математические модели
- ✅ Геометрическое броуновское движение для моделирования цен активов
- ✅ Портфельная теория Марковица для оптимизации
- ✅ VaR/CVaR для оценки рисков
- ✅ Корреляционный анализ для диверсификации
- ✅ Логнормальные прогнозы с доверительными интервалами
- ✅ Теория игр для стратегического анализа
📈 Визуализация и отчетность
- ✅ Графики производительности и просадок
- ✅ Диаграммы риск-доходность
- ✅ Тепловые карты корреляций
- ✅ Веерные диаграммы прогнозов
- ✅ JSON-отчеты с детальными метриками
🎯 Быстрый старт
Установка
# Клонирование репозитория
git clone https://github.com/your-username/investment-pipeline.git
cd investment-pipeline
# Установка зависимостей
pip install -r requirements.txt
# Или через Poetry
poetry install
Создание тестовых портфелей
python investment_pipeline.py --create-samples
Запуск анализа
# Анализ одного портфеля
python investment_pipeline.py my_portfolio.json
# Анализ нескольких портфелей
python investment_pipeline.py conservative_ru.json balanced_ru.json aggressive_ru.json
📋 Формат входных данных
JSON-структура портфеля
{
"name": "Консервативный российский портфель",
"assets": {
"SBER": 0.25, // Сбербанк
"LKOH": 0.20, // ЛУКОЙЛ
"NVTK": 0.15, // Новатэк
"GLDRUB": 0.20, // Золото в рублях
"SLVRUB": 0.10, // Серебро в рублях
"MTSS": 0.10 // МТС
}
}
Поддерживаемые активы
📈 Российские акции
- Голубые фишки: SBER, LKOH, NVTK, ROSN, GAZP, PLZL, GMKN, CHMF, MTSS, SNGS
- Второй эшелон: FIVE, OZON, YNDX, MGNT, TATN, NLMK, MAGN, ALRS, PHOR, RTKM
- Технологии: AFLT, POLY, MOEX, TCSG, PIKK, FIXP, YNDX
- Энергетика: HYDR, FEES, UPRO, IRAO, MSNG
- Банки: CBOM, BSPB, SBERP
- Другие: TRNFP, LSRG, DSKY, RUAL, VSMO, AKRN, UWGN, FLOT, SMLT, ETLN, LNTA, DIXY, APTK, LIFE, MDMG, SELG, POGR, KROT, KRKO
🥇 Драгметаллы в рублях
- GLDRUB (Золото)
- SLVRUB (Серебро)
- PLTRUB (Платина)
- PLDRUB (Палладий)
₿ Криптовалюты в рублях
- BTCRUB (Bitcoin)
- ETHRUB (Ethereum)
- ADDRUB (Cardano)
- BNBRUB (Binance Coin)
- XRPRUB (Ripple)
- DOTRUB (Polkadot)
- MATRUB (Polygon)
- SOLRUB (Solana)
🧮 Математические модели и методы
1. Геометрическое броуновское движение (Geometric Brownian Motion)
Применение: Моделирование цен активов при отсутствии реальных данных
Математическая модель:
dS = μSdt + σSdW
где:
S
- цена активаμ
- дрифт (средняя доходность)σ
- волатильностьW
- винеровский процесс
Реализация:
# Формула с поправкой Ито: dln(S) = (μ - 0.5σ²)dt + σdW
price_changes = (drift - 0.5 * volatility**2) * dt + volatility * np.sqrt(dt) * random_shocks
log_prices = np.log(start_price) + np.cumsum(price_changes)
prices = np.exp(log_prices)
2. Портфельная теория Марковица (Modern Portfolio Theory)
Применение: Оптимизация соотношения риск-доходность
Ключевые формулы:
Взвешенная доходность портфеля:
R_p = Σ(w_i * R_i)
Годовая доходность:
μ_annual = μ_daily × 252
Годовая волатильность:
σ_annual = σ_daily × √252
Коэффициент Шарпа:
SR = (R_p - R_f) / σ_p
3. Модели риска (Risk Models)
Value at Risk (VaR)
Определение: Максимальный ожидаемый убыток с заданной вероятностью
Формула:
VaR_α = F^(-1)(α)
где F^(-1)
- обратная функция распределения доходностей
Conditional Value at Risk (CVaR)
Определение: Ожидаемый убыток при условии превышения VaR
Формула:
CVaR_α = E[R | R ≤ VaR_α]
Максимальная просадка (Maximum Drawdown)
Определение: Максимальное падение стоимости портфеля от пика
Формулы:
C(t) = Π(1 + R_i) # Кумулятивная доходность
M(t) = max{C(s) : s ≤ t} # Бегущий максимум
DD(t) = (C(t) - M(t)) / M(t) # Просадка
maxDD = min{DD(t)} # Максимальная просадка
4. Корреляционный анализ (Correlation Analysis)
Применение: Анализ взаимосвязей между активами
Пирсоновская корреляция:
ρ = Cov(X,Y) / (σ_X × σ_Y)
5. Логнормальная модель прогнозирования (Lognormal Forecasting Model)
Применение: Построение доверительных интервалов для прогнозов
Формула:
S(t) = S(0) × exp((μ - 0.5σ²)t + σ√t × Z)
где Z ~ N(0,1)
- стандартная нормальная случайная величина
6. Теория игр (Game Theory)
Применение: Анализ стратегического взаимодействия портфелей
Компоненты:
- Матрица выплат:
U = Return - penalty × Risk
- Функции лучшего ответа:
BR_i(s_j) = argmax U_i(s_i, s_j)
- Смешанные стратегии:
E[U] = Σ p_i × p_j × U(i,j)
7. Кластеризация волатильности (Volatility Clustering)
Применение: Моделирование GARCH-эффектов для криптовалют
Модель:
σ(t) = σ_base × ε(t)
где ε(t) ~ N(1, 0.1)
- случайные шоки волатильности
📊 Выходные файлы
После выполнения анализа создаются следующие файлы в папке output/
:
📈 Графики
performance_analysis.png
- Кумулятивная доходность и просадкиrisk_return_analysis.png
- Диаграмма риск-доходностьcorrelation_heatmap.png
- Корреляционная матрица активовportfolio_composition.png
- Состав портфелей (круговые диаграммы)var_analysis.png
- Анализ VaR и распределения доходностейfan_chart.png
- Веерная диаграмма прогнозовgame_theory_analysis.png
- Анализ теории игр
📋 Данные
analysis_results.json
- Детальные результаты анализа в JSON-формате
🎨 Примеры визуализации
График производительности
Диаграмма риск-доходность
Корреляционная матрица
🔧 Технические требования
Системные требования
- Python: 3.7+
- RAM: 4GB+ (для больших портфелей)
- Дисковое пространство: 100MB+
Основные зависимости
numpy>=1.21.0 # Численные вычисления
pandas>=1.3.0 # Обработка данных
matplotlib>=3.5.0 # Визуализация
seaborn>=0.11.0 # Статистические графики
scipy>=1.7.0 # Научные вычисления
requests>=2.25.0 # HTTP-запросы к API
🚀 Использование в коде
Базовый пример
from investment_pipeline import RussianInvestmentPipeline
# Создание анализатора
pipeline = RussianInvestmentPipeline(output_dir="my_analysis")
# Запуск полного анализа
pipeline.run_full_analysis([
"conservative_ru.json",
"balanced_ru.json",
"aggressive_ru.json"
])
Продвинутый пример
# Создание кастомного портфеля
custom_portfolio = {
"name": "Мой портфель",
"assets": {
"SBER": 0.30,
"LKOH": 0.25,
"GLDRUB": 0.20,
"BTCRUB": 0.15,
"MTSS": 0.10
}
}
# Сохранение в файл
import json
with open("custom_portfolio.json", "w") as f:
json.dump(custom_portfolio, f, ensure_ascii=False, indent=2)
# Анализ
pipeline = RussianInvestmentPipeline()
pipeline.run_full_analysis(["custom_portfolio.json"])
📚 Документация API
Основные классы
RussianInvestmentPipeline
Методы:
load_portfolios(files)
- Загрузка портфелей из JSONfetch_market_data(days=730)
- Получение рыночных данныхcalculate_portfolio_metrics()
- Расчет метрик портфелейcreate_performance_chart()
- График производительностиcreate_risk_return_chart()
- Диаграмма риск-доходностьcreate_correlation_heatmap()
- Корреляционная матрицаcreate_fan_chart()
- Веерная диаграмма прогнозовcreate_game_theory_chart()
- Анализ теории игрrun_full_analysis(files)
- Полный анализ
🤝 Вклад в проект
Мы приветствуем вклад в развитие проекта! Пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения подробной информации.
Как внести вклад
- Fork репозитория
- Создайте feature branch (
git checkout -b feature/amazing-feature
) - Commit изменения (
git commit -m 'Add amazing feature'
) - Push в branch (
git push origin feature/amazing-feature
) - Откройте Pull Request
Области для улучшения
- Добавление новых математических моделей
- Интеграция с дополнительными API
- Улучшение визуализации
- Оптимизация производительности
- Расширение документации
📄 Лицензия
Этот проект распространяется под лицензией MIT. См. файл LICENSE для получения подробной информации.
🙏 Благодарности
- Мосбиржа за предоставление API для российских активов
- Сообщество Python за отличные библиотеки для научных вычислений
- Академическое сообщество за фундаментальные исследования в области финансовой математики
📞 Контакты
- Автор: Investment Analysis System
- Email: your-email@example.com
- GitHub: @your-username
- Telegram: @your-telegram
⭐ Поддержка проекта
Если проект оказался полезным, поставьте звездочку ⭐ на GitHub!
⚠️ Дисклеймер: Данный инструмент предназначен исключительно для образовательных и исследовательских целей. Результаты анализа не являются инвестиционными рекомендациями. Всегда проводите собственное исследование перед принятием инвестиционных решений.