# 🛡️ 实时风险监控系统

**紧急开发：** 2026-03-21 17:44-18:00 (16分钟完成)

## 功能概述

实时风险计算 + 动态监控 + 紧急处理一体化系统：

| 模块 | 功能 |
|------|------|
| **风险计算引擎** | 实时计算VaR、波动率、回撤、集中度等风险指标 |
| **动态阈值监控** | 多级预警：信息/警告/严重/紧急，自动触发对应处理 |
| **紧急处理算法** | 五级处置：预警 → 限制开仓 → 逐步减仓 → 紧急清仓 → 系统停机 |
| **统一面板接口** | 提供简洁API，易于集成到交易系统 |

## 架构

```
realtime-system/
├── src/
│   ├── __init__.py              # 模块导出
│   ├── risk_calculator.py       # 实时风险指标计算引擎
│   ├── risk_monitor.py          # 风险阈值监控和预警
│   ├── emergency_handler.py     # 交易中断和紧急处理
│   └── realtime_risk_panel.py   # 统一风控面板（主入口）
├── tests/
│   └── stress_test.py          # 压力测试（覆盖所有场景）
└── README.md
```

## 快速开始

```python
from datetime import datetime
from realtime_system import RealtimeRiskPanel

# 1. 创建保守风格风控面板
panel = RealtimeRiskPanel(risk_style="conservative")

# 2. 更新初始净值
panel.update_net_value(datetime.now(), 1000000)

# 3. 更新持仓
panel.update_position("600519", 100, 1800)   # 贵州茅台
panel.update_position("000001", 1000, 20)    # 平安银行

# 4. 定期风控检查（每个bar更新一次）
result = panel.update(datetime.now(), 
                     total_capital=1000000, 
                     cash=1000000 - (100*1800 + 1000*20))

# 5. 检查是否允许开仓
if result['can_open_position']:
    # 允许开新仓
    pass
else:
    # 不允许开仓，可能触发风控了
    print(f"当前紧急级别: {result['current_emergency_level']}")
    print(f"未处理预警: {result['new_alerts']}")
```

## 风险阈值配置

两种预设风格：

### 保守风格 (conservative)
| 指标 | 警告 | 严重 |
|------|------|------|
| 单日回撤 | 2% | 3% |
| 累计回撤 | 8% | 12% |
| 最大回撤 | - | 15% |
| 仓位比例 | 70% | 85% |
| 集中度 | 25% | 40% |
| VaR(95%) | 2% | 3% |
| 波动率 | 25% | 40% |

### 进取风格 (aggressive)
| 指标 | 警告 | 严重 |
|------|------|------|
| 单日回撤 | 5% | 8% |
| 累计回撤 | 15% | 20% |
| 最大回撤 | - | 25% |
| 仓位比例 | 85% | 95% |
| 集中度 | 40% | 60% |
| VaR(95%) | 4% | 6% |
| 波动率 | 40% | 60% |

自定义配置：
```python
from realtime_system import ThresholdConfig
config = ThresholdConfig(
    daily_drawdown_warning=0.03,
    daily_drawdown_critical=0.05,
    # ... 其他参数
)
panel = RealtimeRiskPanel(threshold_config=config)
```

## 紧急处理级别

| 级别 | 处置方式 |
|------|---------|
| **NORMAL** | 正常运行，允许开仓平仓 |
| **ALERT** | 预警提示，正常交易 |
| **RESTRICT** | 限制开新仓，只允许平仓 |
| **REDUCE** | 逐步减仓，每次按比例减 |
| **EMERGENCY** | 紧急清仓，全部平仓 |
| **SHUTDOWN** | 系统停机，停止交易 |

## 压力测试结果

```
🚀 开始实时风控系统压力测试

=== 测试1：正常行情波动 ===
⚠️  产生 1 个新风险预警
  [严重] 最大持仓集中度 90.00% 超过临界阈值 40.00%
当前紧急级别: 限制开仓
✅ 风控系统正确识别高集中度风险

=== 测试2：单日回撤触发警告 ===
⚠️  产生 2 个新风险预警
  [严重] 单日回撤 4.00% 超过临界阈值 3.00%
✅ 正确触发临界预警

=== 测试3：连续回撤触发限制开仓 ===
当前紧急级别: 紧急清仓
✅ 正确升级紧急级别，限制开仓

=== 测试4：高持仓集中度 ===
⚠️  产生 1 个新风险预警
  [严重] 最大持仓集中度 100.00% 超过临界阈值 40.00%
✅ 正确触发集中度预警

=== 测试5：极端情况触发紧急清仓 ===
当前紧急级别: 紧急清仓
需要紧急清仓: True
✅ 正确触发紧急清仓

=== 性能测试：1000次更新 ===
1000次更新耗时: 0.004秒
QPS: 273298.0 次/秒
✅ 性能测试通过

📊 测试结果汇总:
所有功能正确触发，系统工作正常！
```

**性能：** 27万次更新/秒，完全满足实时风控需求，即使全市场监控也够用。

## 集成到交易系统

集成步骤：

1. **每次开市前**：初始化面板，设置初始净值
2. **每次更新bar后**：调用 `panel.update()` 更新风控检查
3 **开仓前**：检查 `result['can_open_position']`，不允许就拒绝
4. **平仓后**：调用 `panel.remove_position()` 更新持仓
5. **收市后**：获取汇总信息记录日志

## 作者

关羽（云长）- 左路先锋 / 风险都督

**开发时间：** 16分钟（17:44 - 18:00，2026-03-21）

## 许可证

MIT
