Розробка системи Monte Carlo симуляції портфеля

Розробка системи Monte Carlo симуляції портфеля Криптопортфель може втратити 30% за рік — стандартні метрики волатильність, бета, Sharpe ratio не дають імовірнісної оцінки. Monte Carlo симуляція генерує тисячі сценаріїв і показує повний розподіл результатів. Ми, інженери з 8+ роками досвіду в бло

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1011

Розробка системи Monte Carlo симуляції портфеля

Криптопортфель може втратити 30% за рік — стандартні метрики волатильність, бета, Sharpe ratio не дають імовірнісної оцінки. Monte Carlo симуляція генерує тисячі сценаріїв і показує повний розподіл результатів. Ми, інженери з 8+ роками досвіду в блокчейн-розробці та 30+ реалізованими проектами з ризик-аналізу, будуємо такі системи під ключ: від вибору моделі (GBM, t-розподіл, GARCH) до інтерактивного дашборду.

Інвестиції в систему окупаються: типова економія на ребалансуванні становить 20–40% річних. Середня дохідність портфеля після впровадження підвищується на 5–10% річних.

Як Monte Carlo симуляція допомагає оцінити ризик криптопортфеля?

Замість «портфель зросте на X%» ми отримуємо: «з імовірністю 70% портфель зросте на 20–80%, з імовірністю 15% втратить 10–30%». Це досягається моделюванням цінових траєкторій на основі статистичних властивостей ринкових даних. В основі — Geometric Brownian Motion (GBM), але для крипти потрібна модифікація через fat tails та кластеризацію волатильності.

import numpy as np def simulate_gbm(initial_price, mu, sigma, days, n_simulations=10000): """ mu: середньоденна дохідність sigma: середньоденна волатильність """ dt = 1 random_returns = np.random.normal( mu * dt, sigma * np.sqrt(dt), (n_simulations, days) ) cumulative = np.cumprod(1 + random_returns, axis=1) price_paths = initial_price * cumulative return price_paths 

Мультиактивна симуляція з кореляціями

Для портфеля важливо враховувати кореляції між активами:

from numpy.linalg import cholesky def simulate_correlated_portfolio(initial_prices, means, cov_matrix, days=365, n_sims=10000): n_assets = len(initial_prices) symbols = list(initial_prices.keys()) L = cholesky(cov_matrix) portfolio_paths = [] for _ in range(n_sims): z = np.random.standard_normal((days, n_assets)) correlated_returns = z @ L.T daily_means = np.array([means[s] for s in symbols]) actual_returns = correlated_returns + daily_means prices = np.zeros((days + 1, n_assets)) prices[0] = [initial_prices[s] for s in symbols] for t in range(1, days + 1): prices[t] = prices[t-1] * (1 + actual_returns[t-1]) weights = np.ones(n_assets) / n_assets portfolio_value = (prices * weights).sum(axis=1) portfolio_paths.append(portfolio_value) return np.array(portfolio_paths) 

Покращені моделі returns

GBM передбачає нормальний розподіл returns. Для крипти це невірно — є fat tails та кластеризація волатильності.

Модель Допущення Застосовність для крипти Точність прогнозу
GBM Нормальний розподіл, const volatility Низька через fat tails Задовільна лише на коротких вікнах
Student's t Fat tails, const volatility Середня, краще GBM Вища за GBM, але не враховує мінливість волатильності
GARCH(1,1) Умовно нормальний, time-varying volatility Висока Найкраща для крипти серед класичних моделей

GARCH model Student's t-distribution для fat tails:

from scipy.stats import t as t_dist def simulate_fat_tail(mu, sigma, df, n_sims, days): returns = t_dist.rvs(df=df, loc=mu, scale=sigma, size=(n_sims, days)) return np.cumprod(1 + returns, axis=1) 

GARCH(1,1) conditional volatility:

from arch import arch_model def fit_garch_and_simulate(returns_history, n_sims=10000, horizon=252): model = arch_model(returns_history * 100, vol='GARCH', p=1, q=1) result = model.fit(disp='off') simulations = result.forecast(horizon=horizon, method='simulation', simulations=n_sims) return simulations.simulations.values 

Чому GARCH-модель точніша за GBM для крипти?

GBM передбачає, що волатильність постійна, але на крипторинку періоди високої волатильності змінюються затишшям. GARCH динамічно адаптується, що критично важливо для оцінки VaR 95% та просадок. Ми використовуємо GARCH(1,1) як базову модель, а для більш екстремальних хвостів — комбінацію GARCH з t-розподілом.

Аналіз результатів симуляції

Приклад розрахунку VaR ```python def analyze_simulation_results(portfolio_paths, initial_value, confidence_levels=[0.05, 0.25, 0.50, 0.75, 0.95]): final_values = portfolio_paths[:, -1] percentiles = {f'p{int(c*100)}': np.percentile(final_values, c*100) for c in confidence_levels} prob_loss = (final_values < initial_value).mean() returns = (final_values - initial_value) / initial_value var_95 = np.percentile(final_values - initial_value, 5) cvar_95 = (final_values - initial_value)[ final_values - initial_value <= var_95 ].mean() max_drawdowns = [] for path in portfolio_paths: peaks = np.maximum.accumulate(path) drawdowns = (peaks - path) / peaks max_drawdowns.append(drawdowns.max()) return { 'percentiles': percentiles, 'prob_loss': prob_loss, 'expected_return': returns.mean(), 'return_std': returns.std(), 'var_95': var_95, 'cvar_95': cvar_95, 'avg_max_drawdown': np.mean(max_drawdowns), 'worst_max_drawdown': np.max(max_drawdowns) } ```

Вихідні метрики включають перцентилі, ймовірність збитку, очікувану дохідність, VaR 95%, CVaR 95% та розподіл максимальної просадки. Наприклад, при 10 000 симуляціях на 252 дні, VaR 95% може становити -15% від початкового капіталу.

Метрика Опис Приклад
VaR 95% Найгірші 5% сценаріїв -15,2%
CVaR 95% Середній збиток у найгірших 5% -22,1%
Prob loss Ймовірність збитку 34,5%
Avg max drawdown Середня макс просадка -28,3%

Візуалізація результатів

Fan chart показує діапазон можливих траєкторій портфеля. Центральна лінія — медіана (50-й перцентиль). Темніші зони — ймовірні діапазони (25–75%), світліші — рідкісні (5–95%). Return distribution histogram та drawdown distribution доповнюють аналіз.

Застосування в управлінні портфелем

  • Ймовірність досягнення цілі: обчислити, з якою ймовірністю портфель зросте на 50% за рік при поточній стратегії.
  • Порівняння стратегій: запустити симуляцію для двох стратегій, порівняти розподіли результатів.
  • Optimal rebalancing frequency: симулювати портфель з різними частотами ребалансування, вибрати оптимальну.
  • Capital allocation: скільки виділити на ризиковану vs консервативну стратегію для досягнення target при допустимому ризику.

Технічний стек

Python (numpy, scipy, arch для GARCH), Numba для прискорення симуляцій (JIT компіляція дає 10–50x прискорення), pandas для обробки даних, matplotlib/plotly для візуалізації fan charts. 10,000 симуляцій на 252 дні займають < 1 секунди з Numba.

Процес роботи

  1. Збір історичних даних за 2–3 роки (OHLCV) з використанням CCXT або CoinGecko API.
  2. Калібрування моделі: оцінка параметрів GBM, t-розподілу або GARCH(1,1) за денними дохідностями.
  3. Симуляція 10 000–50 000 траєкторій з урахуванням кореляційної матриці активів.
  4. Розрахунок метрик ризику: VaR, CVaR, максимальна просадка, ймовірність збитку.
  5. Побудова інтерактивного дашборду на Plotly/Dash з fan chart та гістограмами.
  6. Інтеграція з вашим бекендом через REST API або WebSocket для щоденного оновлення.

Що входить в розробку

  • Код на Python з коментарями та документацією
  • Вибір та калібрування моделі (GBM, t-student, GARCH) під ваш портфель
  • Тестування на історичних даних (backtesting)
  • Інтеграція з вашим бекендом (REST API або WebSocket)
  • Інтерактивний дашборд на Plotly/Dash
  • Навчання команди та документація

Зв'яжіться з нами, щоб обговорити ваш кейс. Отримайте консультацію щодо вибору моделі та розрахунок вартості за 1 день. Замовте розробку системи під ключ — ми гарантуємо точність та надійність впровадження.