README.md

🇷🇺 Russian Investment Analysis Pipeline

Python License Contributions Stars

Продвинутый инструмент для комплексного анализа российских инвестиционных портфелей с применением современных математических моделей и методов количественной финансовой инженерии.

🚀 Возможности

📊 Комплексный анализ портфелей

  • ✅ Анализ российских акций, драгметаллов и криптовалют
  • ✅ Расчет ключевых метрик риска и доходности
  • ✅ Визуализация результатов в высоком качестве (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-формате

🎨 Примеры визуализации

График производительности

Performance Analysis

Диаграмма риск-доходность

Risk-Return Analysis

Корреляционная матрица

Correlation Heatmap

🔧 Технические требования

Системные требования

  • 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) - Загрузка портфелей из JSON
  • fetch_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 для получения подробной информации.

Как внести вклад

  1. Fork репозитория
  2. Создайте feature branch (git checkout -b feature/amazing-feature)
  3. Commit изменения (git commit -m 'Add amazing feature')
  4. Push в branch (git push origin feature/amazing-feature)
  5. Откройте Pull Request

Области для улучшения

  •  Добавление новых математических моделей
  •  Интеграция с дополнительными API
  •  Улучшение визуализации
  •  Оптимизация производительности
  •  Расширение документации

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для получения подробной информации.

🙏 Благодарности

  • Мосбиржа за предоставление API для российских активов
  • Сообщество Python за отличные библиотеки для научных вычислений
  • Академическое сообщество за фундаментальные исследования в области финансовой математики

📞 Контакты

⭐ Поддержка проекта

Если проект оказался полезным, поставьте звездочку ⭐ на GitHub!


⚠️ Дисклеймер: Данный инструмент предназначен исключительно для образовательных и исследовательских целей. Результаты анализа не являются инвестиционными рекомендациями. Всегда проводите собственное исследование перед принятием инвестиционных решений.

Конвейеры
0 успешных
0 с ошибкой