量化策略风控模块
功能说明
本模块实现了四层风控体系,是量化策略的生命线:
1. 单票止损(SingleStockRiskControl)
- 默认规则:亏损达到 15% 强制止损
- 可配置:支持自定义止损比例
- 接口:
check_stop_loss(stock)检查是否触发止损
2. 组合回撤分级风控(PortfolioDrawdownRiskControl)
分级降仓规则:
| 总回撤 | 目标仓位 | 说明 |
|---|---|---|
| <10% | 100% | 正常运行,满仓操作 |
| ≥10% | 50% | 降仓一半,控制风险 |
| ≥20% | 25% | 保留四分之一仓位 |
| ≥25% | 0% | 全部清仓,停止交易休息 |
- 可配置:支持自定义回撤阈值和降仓比例
- 接口:
need_rebalance(portfolio)返回是否需要调整仓位
3. 黑天鹅过滤(BlackSwanFilter)
开仓前直接排除以下风险票:
-
✅ ST股票:排除退市风险
-
✅ 跌停股票:流动性风险+继续下跌风险
-
✅ 财务造假问题股:提前排除暴雷风险
-
✅ 低流动性:默认日成交额 < 5000万 排除
-
可配置:支持自定义最小成交额阈值
-
接口:
filter_stock(stock)返回是否通过 + 原因
4. 总风控控制器(RiskController)
整合所有规则,提供两个核心入口:
pre_trade_check(stock, portfolio):开仓前检查,黑天鹅过滤+仓位检查post_trade_check(stocks, portfolio):收盘后检查,止损+降仓检查get_risk_report(stocks, portfolio):生成每日风控报告
使用示例
from risk_control import RiskController, StockInfo, PortfolioInfo
# 初始化风控
rc = RiskController()
# 开仓前检查
stock = StockInfo(
code="000001",
name="平安银行",
cost_price=10.0,
current_price=10.0,
is_st=False,
is_limit_down=False,
is_fraud=False,
volume=20.0 # 日成交额20亿
)
portfolio = PortfolioInfo(
total_capital=1000000,
current_capital=950000,
positions={"000002": 200000}
)
ok, reason = rc.pre_trade_check(stock, portfolio)
if ok:
# 允许开仓
pass
else:
# 拒绝开仓
print(reason)
# 收盘后检查
result = rc.post_trade_check(all_stocks, portfolio)
if result['stop_loss_required']:
# 对这些股票执行止损
for s in result['stop_loss_stocks']:
print(f"止损: {s['code']} {s['name']}")
if result['rebalance_required']:
# 执行降仓
target_ratio = result['target_position_ratio']
print(f"需要降仓到目标仓位: {target_ratio:.1%}")
# 生成风控日报
print(rc.get_risk_report(all_stocks, portfolio))
设计原则
- 单一职责:每个类只负责一件事,清晰好维护
- 可配置:默认参数是经验值,支持自定义
- 层层设防:事前过滤 → 事中监控 → 事后止损 → 整体降仓,每一步都有防护
- 易集成:用 dataclass 定义数据结构,和任意回测框架都能对接
作者
关羽(云长)
风险都督
2026-03-27