Разработка системы управления рисками (risk management)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка системы управления рисками (risk management)
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

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

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1122
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    859

Разработка системы управления рисками (risk management)

Risk management — не набор инструментов, а архитектура, которая пронизывает всю торговую систему. Один неуправляемый риск способен уничтожить месяцы прибыльной торговли. Система управления рисками определяет когда торговать, сколько торговать и когда полностью останавливаться.

Иерархия рисков

Рыночный риск — потери от неблагоприятного движения цены. Управляется через position sizing, stop-loss, диверсификацию.

Execution risk — отклонение цены исполнения от ожидаемой (slippage). Особенно критично при high-frequency торговле и крупных ордерах.

Liquidity risk — невозможность закрыть позицию по разумной цене. Актуально для позиций в малоликвидных активах.

Counterparty risk — риск биржи (hack, bankruptcy, regulatory freeze). Решается диверсификацией между несколькими биржами и выводом большей части средств с бирж.

Operational risk — технические сбои, потеря соединения, ошибки в коде. Решается через надёжную инфраструктуру, circuit breakers и мониторинг.

Concentration risk — чрезмерная зависимость от одного актива или стратегии.

Уровни risk controls

Trade level — контроль каждой отдельной сделки:

class TradeRiskCheck:
    def __init__(self, max_position_size_pct=0.10, max_risk_per_trade_pct=0.02):
        self.max_position_pct = max_position_size_pct
        self.max_risk_pct = max_risk_per_trade_pct
    
    def validate(self, trade, portfolio_value, current_positions):
        # Проверка 1: максимальный размер позиции
        position_value = trade.qty * trade.price
        if position_value / portfolio_value > self.max_position_pct:
            return False, "Position size exceeds limit"
        
        # Проверка 2: риск на сделку
        trade_risk = abs(trade.price - trade.stop_loss) * trade.qty
        if trade_risk / portfolio_value > self.max_risk_pct:
            return False, "Risk per trade exceeds limit"
        
        # Проверка 3: корреляция с текущим портфелем
        portfolio_corr = self.calculate_portfolio_correlation(
            trade.symbol, current_positions
        )
        if portfolio_corr > 0.8:
            return False, "Too correlated with existing positions"
        
        return True, "OK"

Portfolio level — контроль совокупного портфеля:

  • Максимальное количество открытых позиций (например, 10)
  • Максимальная совокупная экспозиция (например, 80% капитала)
  • Максимальный Net Delta (сумма всех position deltas)
  • Sector concentration: не более 30% в одном секторе (DeFi, Layer-1, etc.)

Session level — дневные/недельные лимиты:

  • Maximum daily loss: 3% депозита → автоматический стоп торговли
  • Maximum weekly drawdown: 8% → требует ручного вмешательства
  • Maximum trades per day: 20 → защита от overtrading

Реализация Portfolio Risk Monitor

from dataclasses import dataclass
from typing import List, Dict
import numpy as np

@dataclass
class Position:
    symbol: str
    qty: float
    avg_price: float
    stop_loss: float
    current_price: float
    
    @property
    def unrealized_pnl(self):
        return (self.current_price - self.avg_price) * self.qty
    
    @property
    def position_value(self):
        return self.current_price * self.qty
    
    @property
    def risk_amount(self):
        return abs(self.current_price - self.stop_loss) * self.qty

class PortfolioRiskMonitor:
    def __init__(self, initial_capital: float, config: dict):
        self.initial_capital = initial_capital
        self.peak_capital = initial_capital
        self.config = config
        self.positions: List[Position] = []
        self.daily_pnl = 0
        self.session_start_capital = initial_capital
    
    def update_capital(self, current_capital: float):
        self.peak_capital = max(self.peak_capital, current_capital)
        self.daily_pnl = current_capital - self.session_start_capital
    
    def get_current_drawdown(self, current_capital: float) -> float:
        return (self.peak_capital - current_capital) / self.peak_capital
    
    def check_circuit_breakers(self, current_capital: float) -> dict:
        alerts = {}
        
        # Drawdown check
        dd = self.get_current_drawdown(current_capital)
        if dd > self.config['max_drawdown']:
            alerts['max_drawdown'] = f"CRITICAL: Drawdown {dd:.1%} exceeded limit"
        
        # Daily loss check
        daily_loss_pct = -self.daily_pnl / self.session_start_capital
        if daily_loss_pct > self.config['max_daily_loss']:
            alerts['daily_loss'] = f"HALT: Daily loss {daily_loss_pct:.1%} exceeded"
        
        # Total risk exposure
        total_risk = sum(p.risk_amount for p in self.positions)
        risk_pct = total_risk / current_capital
        if risk_pct > self.config['max_portfolio_risk']:
            alerts['portfolio_risk'] = f"WARNING: Total risk {risk_pct:.1%}"
        
        return alerts
    
    def get_correlation_matrix(self, price_data: Dict[str, list]) -> np.ndarray:
        symbols = list(price_data.keys())
        returns = {s: np.diff(np.log(price_data[s])) for s in symbols}
        return np.corrcoef([returns[s] for s in symbols])

Stress testing и scenario analysis

Historical scenarios: как бы повёл себя портфель при:

  • Краш марта 2020 (BTC -60% за неделю)
  • Краш мая 2021 (BTC -50% за месяц)
  • Terra/LUNA collapse (>99% за 48h)
  • FTX bankruptcy (рыночная паника -25%)

Hypothetical scenarios:

  • Все активы коррелируют 0.9 (as in crisis)
  • Ликвидность исчезает (bid-ask spread ×10)
  • Одновременное срабатывание всех стопов
def stress_test_portfolio(positions, scenarios):
    results = {}
    for scenario_name, price_shocks in scenarios.items():
        total_pnl = 0
        for position in positions:
            shock = price_shocks.get(position.symbol, price_shocks.get('DEFAULT', 0))
            pnl = position.qty * position.current_price * shock
            total_pnl += pnl
        results[scenario_name] = total_pnl
    return results

VAR (Value at Risk) интеграция

Historical VAR: при текущем портфеле, с вероятностью 95%, максимальный однодневный убыток не превысит X USD. Рассчитывается на основе исторических returns портфеля за последние 252 дня.

Мониторинг в реальном времени

Dashboard (Grafana + Prometheus):

  • Текущий P&L и drawdown
  • Все открытые позиции с риском каждой
  • Совокупный portfolio risk
  • Circuit breaker статус
  • Daily loss progress bar

Алерты (Telegram Bot с priority levels):

  • 🟡 WARNING: drawdown > 50% от лимита
  • 🟠 ALERT: drawdown > 75% от лимита
  • 🔴 HALT: circuit breaker сработал, торговля остановлена

Audit log: каждое решение риск-системы (блокировка ордера, срабатывание circuit breaker) логируется с timestamp и причиной.

Интеграция с торговыми стратегиями

Risk Management System — независимый компонент, который встраивается перед исполнением любого ордера. Все торговые боты и стратегии отправляют ордера через единый risk gateway:

Trading Strategy → Risk Gateway → Exchange API

Risk Gateway проверяет все limits, обновляет internal state, логирует. При блокировке — возвращает ошибку с причиной.

Разрабатываем полноценную систему risk management: trade-level checks, portfolio monitoring, circuit breakers, stress testing модуль, realtime dashboard и Telegram алерты.