Risk Management
Risk Management
Comprehensive risk management system for professional trading - pre-trade checks, position limits, margin, liquidation, and monitoring
Risk Management
Specification: LP-9004: DEX Risk Management
LX implements institutional-grade risk management with real-time monitoring, automated safeguards, and comprehensive exposure controls.
Risk Management Architecture
LX RISK MANAGEMENT ARCHITECTURE
┌─────────────────────────────────────────────────────────────────────────────┐
│ ORDER FLOW │
└─────────────────────────────────────────────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────────────────┐
│ PRE-TRADE RISK CHECKS │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ Order Validation│ │ Balance Check │ │ Position Limits Check │ │
│ │ Price/Size │ │ Margin Calc │ │ Exposure/Concentration │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────────────────┐
│ MATCHING ENGINE │
└─────────────────────────────────────────────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────────────────┐
│ POST-TRADE RISK MONITORING │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ Margin Health │ │ Position Update │ │ Exposure Recalculation │ │
│ │ Monitoring │ │ & P&L Calc │ │ & Alerting │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────────────────┐
│ AUTOMATED RISK RESPONSES │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ Liquidation │ │ Circuit Breaker │ │ Kill Switch │ │
│ │ Engine │ │ Trigger │ │ (Emergency Halt) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────────────────┐
│ INSURANCE FUND / ADL │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Insurance Fund covers bankrupt positions; ADL for extreme events │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘Risk Categories
1. Market Risk
Risk from adverse price movements affecting positions.
| Risk Type | Mitigation | Documentation |
|---|---|---|
| Price volatility | Circuit breakers, price bands | Circuit Breakers |
| Gap risk | Pre-trade price validation | Pre-Trade Checks |
| Liquidity risk | Order size limits, market depth checks | Position Limits |
2. Credit Risk
Risk of counterparty default or insufficient margin.
| Risk Type | Mitigation | Documentation |
|---|---|---|
| Margin shortfall | Initial/maintenance margin | Margin |
| Liquidation cascade | ADL mechanism, insurance fund | Liquidation |
| Socialized loss | Insurance fund coverage | Insurance Fund |
3. Operational Risk
Risk from system failures or malicious activity.
| Risk Type | Mitigation | Documentation |
|---|---|---|
| System failure | Kill switch, graceful degradation | Kill Switch |
| Fat-finger errors | Order validation, size limits | Pre-Trade Checks |
| Market manipulation | Rate limits, wash trade detection | Monitoring |
Key Risk Parameters
Global Parameters
interface GlobalRiskConfig {
// Circuit breaker thresholds
circuitBreaker: {
priceMovementThreshold: 0.10, // 10% price move triggers halt
volumeSpikeThreshold: 10, // 10x normal volume
haltDurationSeconds: 300, // 5-minute cooling period
},
// Position limits
positionLimits: {
maxLeverageSpot: 10, // 10x max for margin
maxLeveragePerp: 50, // 50x max for perpetuals
maxPositionUSD: 10_000_000, // $10M max position
maxConcentration: 0.25, // 25% max in single asset
},
// Margin requirements
margin: {
initialMarginSpot: 0.10, // 10% initial (10x leverage)
maintenanceMarginSpot: 0.05, // 5% maintenance
initialMarginPerp: 0.02, // 2% initial (50x leverage)
maintenanceMarginPerp: 0.005, // 0.5% maintenance
},
// Liquidation
liquidation: {
liquidationFee: 0.005, // 0.5% liquidation fee
insuranceFundContribution: 0.20, // 20% to insurance fund
adlThreshold: 0.80, // ADL at 80% insurance depletion
},
}Per-Market Risk Tiers
| Tier | Assets | Max Leverage | Position Limit | Margin Buffer |
|---|---|---|---|---|
| Tier 1 | BTC, ETH | 50x | $50M | 1.5x maintenance |
| Tier 2 | LUX, SOL, AVAX | 25x | $25M | 2x maintenance |
| Tier 3 | Mid-caps | 10x | $5M | 2.5x maintenance |
| Tier 4 | Small-caps | 5x | $1M | 3x maintenance |
| Tier 5 | New listings | 3x | $100K | 5x maintenance |
Risk Check Flow
Order Submission
func (r *RiskEngine) ValidateOrder(order *Order) error {
// 1. Structural validation
if err := r.validateOrderStructure(order); err != nil {
return fmt.Errorf("invalid order structure: %w", err)
}
// 2. Price band check
if err := r.checkPriceBands(order); err != nil {
return fmt.Errorf("price band violation: %w", err)
}
// 3. Balance/margin check
if err := r.checkMarginRequirement(order); err != nil {
return fmt.Errorf("insufficient margin: %w", err)
}
// 4. Position limit check
if err := r.checkPositionLimits(order); err != nil {
return fmt.Errorf("position limit exceeded: %w", err)
}
// 5. Rate limit check
if err := r.checkRateLimits(order.UserID); err != nil {
return fmt.Errorf("rate limit exceeded: %w", err)
}
return nil
}Real-Time Monitoring
type RiskMetrics struct {
// Account-level metrics
AccountEquity float64 `json:"account_equity"`
UnrealizedPnL float64 `json:"unrealized_pnl"`
MarginUsed float64 `json:"margin_used"`
MarginAvailable float64 `json:"margin_available"`
MarginLevel float64 `json:"margin_level"` // equity/margin
HealthFactor float64 `json:"health_factor"` // >1 = healthy
// Position-level metrics
TotalExposure float64 `json:"total_exposure"`
LargestPosition float64 `json:"largest_position"`
Concentration float64 `json:"concentration"` // % in single asset
// Market-level metrics
TotalOpenInterest float64 `json:"total_open_interest"`
FundingRate float64 `json:"funding_rate"`
MarkPrice float64 `json:"mark_price"`
IndexPrice float64 `json:"index_price"`
}API Endpoints
Risk Status
GET /api/v1/risk/status
Authorization: Bearer {api_key}Response:
{
"account_id": "acc_123456",
"equity": 100000.00,
"margin_used": 25000.00,
"margin_available": 75000.00,
"health_factor": 4.0,
"risk_level": "low",
"positions": 3,
"total_exposure_usd": 250000.00,
"largest_position_pct": 0.40,
"warnings": [],
"timestamp": "2024-01-15T10:30:00Z"
}Position Risk
GET /api/v1/risk/positions
Authorization: Bearer {api_key}Response:
{
"positions": [
{
"symbol": "BTC-PERP",
"side": "long",
"size": 2.5,
"entry_price": 42000.00,
"mark_price": 43500.00,
"liquidation_price": 38640.00,
"margin_used": 10500.00,
"unrealized_pnl": 3750.00,
"leverage": 10.0,
"margin_ratio": 0.097
}
]
}Risk Configuration
GET /api/v1/risk/config
Authorization: Bearer {api_key}PUT /api/v1/risk/config
Authorization: Bearer {api_key}
Content-Type: application/json
{
"max_leverage": 25,
"position_limit_usd": 500000,
"risk_alerts": {
"margin_warning_threshold": 0.80,
"liquidation_warning_threshold": 0.90
}
}Risk Alerts
WebSocket Alerts
// Subscribe to risk alerts
ws.send(JSON.stringify({
op: 'subscribe',
channel: 'risk',
params: { account_id: 'acc_123456' }
}))
// Receive alerts
{
"channel": "risk",
"type": "margin_warning",
"data": {
"account_id": "acc_123456",
"current_margin_level": 0.15,
"warning_threshold": 0.20,
"action_required": "reduce_positions_or_add_margin",
"time_to_liquidation_estimate": "2h 15m",
"timestamp": "2024-01-15T10:30:00Z"
}
}Alert Types
| Alert Type | Trigger | Urgency |
|---|---|---|
margin_warning | Margin level < 80% | Medium |
margin_critical | Margin level < 50% | High |
liquidation_imminent | Margin level < 20% | Critical |
position_limit_warning | Position > 80% of limit | Medium |
circuit_breaker_triggered | Market halted | High |
kill_switch_activated | Trading suspended | Critical |
Best Practices
For Traders
- Monitor health factor continuously - Keep above 2.0 for safety buffer
- Use stop-loss orders - Automated exits prevent catastrophic losses
- Diversify positions - Avoid concentration in single assets
- Start with lower leverage - Scale up as you gain experience
- Set up risk alerts - Enable all notification channels
For Market Makers
- Implement delta hedging - Reduce directional exposure
- Monitor funding rates - Adjust positions around funding
- Use reduce-only mode - When approaching limits
- Maintain margin buffers - At least 3x maintenance margin
- Configure sub-accounts - Isolate strategy risk
For Institutions
- Implement pre-trade risk - Check before order submission
- Use portfolio margining - Optimize capital efficiency
- Configure kill switches - Emergency halt capability
- Set up risk reporting - Daily/weekly exposure reports
- Conduct stress testing - Regular scenario analysis
Risk Documentation
| Topic | Description | Link |
|---|---|---|
| Pre-Trade Checks | Order validation, price bands, balance checks | Pre-Trade |
| Position Limits | Size limits, exposure caps, concentration limits | Position Limits |
| Margin Requirements | Initial/maintenance margin, cross/isolated modes | Margin |
| Liquidation | Liquidation process, cascade prevention, ADL | Liquidation |
| Kill Switch | Emergency procedures, cancel-all, trading halt | Kill Switch |
| Circuit Breakers | Market halts, price bands, cooldown periods | Circuit Breakers |
| Insurance Fund | Fund mechanics, ADL mechanism, coverage | Insurance Fund |
| Monitoring | Real-time dashboards, alerts, anomaly detection | Monitoring |
| Reporting | Risk reports, exposure analysis, audit trails | Reporting |
Implementation Status
| Component | Status | Source |
|---|---|---|
| Pre-Trade Risk Engine | Complete | pkg/risk/pretrade.go |
| Position Limit Manager | Complete | pkg/risk/limits.go |
| Margin Calculator | Complete | pkg/risk/margin.go |
| Liquidation Engine | Complete | pkg/risk/liquidation.go |
| Circuit Breaker | Complete | pkg/risk/circuit_breaker.go |
| Insurance Fund | Complete | pkg/risk/insurance.go |
| Risk Monitoring | Complete | pkg/risk/monitor.go |