Files

量化策略风控模块

功能说明

本模块实现了四层风控体系,是量化策略的生命线:

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))

设计原则

  1. 单一职责:每个类只负责一件事,清晰好维护
  2. 可配置:默认参数是经验值,支持自定义
  3. 层层设防:事前过滤 → 事中监控 → 事后止损 → 整体降仓,每一步都有防护
  4. 易集成:用 dataclass 定义数据结构,和任意回测框架都能对接

作者

关羽(云长)
风险都督
2026-03-27