3.8 KiB
3.8 KiB
Risk Management Architecture
This document describes the risk management system.
Risk Management Components
Risk Manager
├──► Pre-Trade Checks
│ │
│ ├──► Position Sizing
│ ├──► Daily Loss Limit
│ └──► Portfolio Allocation
│
├──► Real-Time Monitoring
│ │
│ ├──► Drawdown Monitoring
│ ├──► Position Monitoring
│ └──► Portfolio Monitoring
│
└──► Stop Loss Management
│
├──► Stop Loss Orders
└──► Trailing Stops
Pre-Trade Risk Checks
Before executing any trade:
-
Position Sizing Check
- Verify position size within limits
- Check portfolio allocation
- Validate against risk parameters
-
Daily Loss Limit Check
- Calculate current daily P&L
- Compare against daily loss limit
- Block trades if limit exceeded
-
Drawdown Check
- Calculate current drawdown
- Compare against max drawdown limit
- Block trades if limit exceeded
-
Portfolio Allocation Check
- Verify total exposure within limits
- Check per-asset allocation
- Validate diversification requirements
Position Sizing Methods
Fixed Percentage
position_size = capital * percentage
Kelly Criterion
f = (bp - q) / b
position_size = capital * f
Volatility-Based
position_size = (capital * risk_percentage) / (stop_loss_distance * price)
Risk Limits
Configurable limits:
- Max Drawdown: Maximum allowed drawdown percentage
- Daily Loss Limit: Maximum daily loss percentage
- Position Size Limit: Maximum position value
- Portfolio Exposure: Maximum portfolio exposure percentage
Stop Loss Management
Stop Loss Types
- Fixed Stop Loss: Fixed price level
- Trailing Stop: Adjusts with price movement
- Percentage-based: Adjusts by fixed percentage
- ATR-based: Adjusts based on volatility (Average True Range)
- Percentage Stop: Percentage below entry
- ATR-based Stop: Based on Average True Range (volatility-adjusted)
- Automatically calculates stop distance using ATR multiplier
- Adapts to market volatility conditions
- Configurable ATR period (default: 14) and multiplier (default: 2.0)
- Works with both fixed and trailing stops
ATR-Based Dynamic Stops
ATR-based stops provide better risk management in volatile markets:
stop_loss_manager.set_stop_loss(
position_id=1,
stop_price=entry_price,
use_atr=True,
atr_multiplier=Decimal('2.0'),
atr_period=14,
ohlcv_data=market_data,
trailing=True
)
Benefits:
- Adapts to market volatility
- Tighter stops in low volatility, wider in high volatility
- Reduces stop-outs during normal market noise
- Better risk-adjusted returns
Calculation:
- Stop distance = ATR × multiplier
- For long positions: stop_price = entry_price - (ATR × multiplier)
- For short positions: stop_price = entry_price + (ATR × multiplier)
Stop Loss Execution
Price Update
│
▼
Stop Loss Check
│
├──► Stop Loss Triggered?
│ │
│ └──► Execute Market Sell
│
└──► Update Trailing Stop (if applicable)
Real-Time Monitoring
Continuous monitoring of:
- Portfolio value
- Unrealized P&L
- Drawdown levels
- Position sizes
- Risk metrics
Risk Alerts
Automatic alerts for:
- Drawdown threshold exceeded
- Daily loss limit reached
- Position size exceeded
- Portfolio exposure exceeded
Integration Points
Risk management integrates with:
- Trading Engine: Pre-trade validation
- Order Manager: Position tracking
- Portfolio Tracker: Real-time monitoring
- Alert System: Risk alerts