Files
sanguo_quant_live/strategies/factors-dynamic-weight-timing-20260327/README.md
T

101 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 量化策略风控模块
## 功能说明
本模块实现了四层风控体系,是量化策略的生命线:
### 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)`:生成每日风控报告
## 使用示例
```python
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