系统架构
系统架构
基于 vnpy 4.1.0 构建的生产级量化交易平台,采用分层架构设计:
数据层
- Wind API: 历史行情获取与实时数据推送
- SQLite: 本地数据存储与索引优化
- 数据验证: 缺失值检测、异常值过滤、时间序列对齐
交易层
- CTP网关: 东方证券期货接口,支持实盘交易
- 订单管理: 订单验证、重复检测、撤单管理
- 风控系统:
- 保证金实时监控
- 最大持仓限制
- 单笔订单金额限制
策略层
- CTA引擎: 基于vnpy_ctastrategy的策略框架
- 回测引擎: 支持参数优化和多策略组合
- 性能分析: 夏普比率、最大回撤、盈亏比、胜率等
监控层
- Rich终端: 实时持仓、PnL、订单状态
- 日志系统: 分级日志记录和错误追踪
- 可视化: Plotly交互式图表 + Matplotlib静态图表
策略分类体系
量化策略按交易逻辑可分为四大类:
1. 趋势跟踪策略
核心思想: 识别趋势方向,顺势交易。
| 策略 | 信号来源 | 适用市场 |
|---|---|---|
| ATR波动率突破 | 价格突破 + ATR过滤 | 趋势初期、波动率扩大 |
| 动量反转组合 | 短期动量 + 长期反转 | 趋势延续但有回调 |
| 均线交叉 | 快慢均线金叉/死叉 | 明确趋势行情 |
| 通道突破 | 唐奇安通道/布林带上下轨 | 区间震荡后的突破 |
国债期货特点:
- 趋势持续性强(政策驱动)
- 单日波动小,需持仓数日至数周
- 适合中长期趋势策略
2. 均值回归策略
核心思想: 价格偏离均值后会回归。
| 策略 | 信号来源 | 适用市场 |
|---|---|---|
| 布林带均值回归 | 价格触及上下轨 | 震荡行情 |
| 网格交易 | 固定价格网格 | 窄幅震荡 |
| RSI超买超卖 | RSI指标极值 | 无明确趋势 |
| 配对交易 | 价差偏离历史均值 | 相关品种套利 |
国债期货特点:
- 大部分时间处于震荡(政策观望期)
- 价格有明确的支撑/阻力位
- 适合高频网格和日内回归策略
3. 套利策略
核心思想: 利用相关品种间的定价偏差。
| 策略 | 套利对象 | 风险特征 |
|---|---|---|
| 跨期套利 | 主力vs次主力合约 | 低风险、收益稳定 |
| 跨品种套利 | TL vs T vs TS | 久期风险、流动性风险 |
| 期现套利 | 期货vs国债ETF | 资金成本风险 |
| 基差套利 | 股指期货vs现货 | 升贴水波动风险 |
国债期货特点:
- 跨期价差稳定(无分红、无仓储成本)
- TL/T/TS久期不同,价差有规律
- 流动性好,适合套利交易
4. 多因子策略
核心思想: 综合多个信号源,降低误判概率。
| 因子类别 | 具体因子 | 权重分配 |
|---|---|---|
| 动量因子 | ROC、MACD、RSI | 30% |
| 波动率因子 | ATR、布林带宽度 | 25% |
| 成交量因子 | 成交量变化率、OBV | 20% |
| 宏观因子 | 利率曲线斜率、CPI | 25% |
国债期货特点:
- 宏观因子权重高(政策敏感)
- 适合机构级策略
- 需要大量历史数据训练
国债期货专用策略
除通用策略外,国债期货有其特殊的交易逻辑:
久期策略
原理: 利用债券久期与利率变化的关系。
$$ \Delta P \approx -D \times \Delta y \times P $$
其中:
- $D$: 修正久期
- $\Delta y$: 利率变化
- $P$: 债券价格
应用:
- 预期降息 → 做多长久期品种(TL)
- 预期加息 → 做空或转向短久期(TS)
收益率曲线策略
蝶式套利:
- 买入TL(10年)+ 卖出T(10年)和TS(2年)
- 利用收益率曲线斜率变化盈利
陡峭化/平坦化交易:
- 曲线陡峭化 → 买短端卖长端
- 曲线平坦化 → 买长端卖短端
转换因子套利
原理: 国债期货可交割券有多个,转换因子决定哪个券最便宜。
$$ \text{转换因子} = \frac{\text{可交割券价格}}{\text{标准券面值}} $$
CTD(Cheapest-to-Deliver)券:
- 识别最便宜可交割券
- 期货价格会向CTD券靠拢
- 可通过期货多头+现券空头套利
利率期限结构策略
骑乘策略(Riding the Yield Curve):
- 买入久期长于持有期的债券
- 随时间推移,债券收益率下降(曲线滚动)
- 获取资本利得
子弹式vs梯式:
- 子弹式: 集中于某一期限
- 梯式: 分散于多个期限
- 根据收益率曲线形态选择
股指期货专用策略
基差套利
正向套利(期货升水):
| |
反向套利(期货贴水):
| |
风险:
- 融资融券成本
- 保证金占用
- 基差收敛不确定性
Alpha策略
原理: 股票组合超额收益 + 股指期货对冲系统性风险
$$ \text{收益} = \alpha + \beta \times r_m - \text{对冲成本} $$
实现:
- 构建高Alpha股票组合(多因子选股)
- 用股指期货对冲Beta敞口
- 保留纯Alpha收益
CTA趋势策略
股指特点:
- 波动率高于国债期货
- 趋势更明显(牛熊切换)
- 适合Dual Thrust、R-Breaker等日内策略
机器学习策略框架
特征工程
技术特征:
- 滞后价格、收益率
- 滚动统计量(均值、标准差、偏度、峰度)
- 技术指标(ATR、RSI、MACD)
宏观特征(国债):
- 10年期国债收益率
- 利率曲线斜率(10Y - 2Y)
- CPI、PPI同比
- M2增速
微观结构特征:
- 买卖价差
- 订单流不平衡
- 大单成交占比
模型选择
| 模型 | 优势 | 劣势 |
|---|---|---|
| XGBoost | 非线性拟合强、可解释性好 | 需要大量特征工程 |
| LightGBM | 训练速度快、内存占用小 | 容易过拟合 |
| LSTM | 捕捉时序依赖 | 训练难度大、可解释性差 |
| Transformer | 长序列建模 | 计算资源消耗大 |
回测陷阱
未来函数:
- 使用当日收盘价计算信号 → 用当日开盘价模拟
- Lookahead bias → 严格时间序列切分
过拟合:
- 参数过多 → 正则化、early stopping
- 训练集表现完美 → 样本外测试
交易成本:
- 回测滑点低估 → 按实盘数据设置(0.01-0.02元/手)
- 手续费忽略 → 双边手续费 + 印花税(股指)
强化学习策略探索
环境设计
State空间:
| |
Action空间:
- 离散: {做多, 做空, 平仓}
- 连续: 仓位比例 [-1, 1]
Reward设计: $$ r_t = \text{PnL}_t - \lambda_1 \times \text{Drawdown}_t - \lambda_2 \times \text{Turnover}_t $$
算法选择
| 算法 | 适用场景 | 参数复杂度 |
|---|---|---|
| PPO | 连续动作空间、稳定性好 | 中等 |
| A2C | 样本效率高 | 较低 |
| SAC | 最大熵RL、探索性强 | 较高 |
| TD3 | 连续控制、减少过估计 | 较高 |
挑战
- 样本效率低: 金融数据有限,RL需要大量交互
- 非平稳性: 市场regime变化,策略需要持续适应
- 风险控制: RL容易学到高风险策略,需要硬约束
实盘部署关键要素
1. 滑点控制
回测假设 vs 实盘现实:
- 回测: 滑点 0.005元/手
- 实盘: 开盘/收盘 0.02元/手,日内 0.01元/手
优化策略:
- 限价单 + 市价单组合
- 避开流动性差的时段(开盘前5分钟、收盘后5分钟)
- 大单拆分执行
2. 保证金管理
计算公式: $$ \text{保证金} = \text{合约乘数} \times \text{价格} \times \text{保证金比例} \times \text{手数} $$
风险:
- 极端行情保证金比例上调(2% → 5%)
- 多策略并行,保证金占用叠加
- 隔夜持仓,跳空风险
对策:
- 保证金占用率不超过50%
- 预留应急资金
- 及时平仓亏损头寸
3. 系统监控
实时监控指标:
- 持仓PnL、浮动盈亏
- 保证金占用率
- 订单成交状态
- 策略信号触发
异常告警:
- 单日亏损超过阈值(如3%)
- 保证金不足
- 订单连续失败
- 网络连接中断
策略评估标准
回测必达指标
| 指标 | 最低要求 | 优秀水平 |
|---|---|---|
| 夏普比率 | > 1.0 | > 2.0 |
| 最大回撤 | < 20% | < 10% |
| 胜率 | > 40% | > 55% |
| 盈亏比 | > 1.5 | > 2.5 |
| 年化收益率 | > 15% | > 30% |
样本外测试
- 训练集: 60%
- 验证集: 20%(参数调优)
- 测试集: 20%(最终评估,不参与任何优化)
稳健性测试
- 不同市场状态(牛市、熊市、震荡)
- 不同品种(TL、T、TS、股指)
- 不同时间段(2020-2022, 2023-2024)
参考文献
量化交易
- 《量化交易:如何建立自己的算法交易业务》Ernest P. Chan
- 《主动投资组合管理》Grinold & Kahn
- 《打开量化投资的黑箱》里什·纳兰
固定收益
- 《固定收益证券》法博齐
- 《利率期限结构模型》Brigo & Mercurio
- 《债券市场分析与策略》法博齐
机器学习
- 《金融中的机器学习》Marcos López de Prado
- 《Advances in Financial Machine Learning》同上
- 《强化学习在金融中的应用》FinRL论文集
下一篇: 《ATR波动率突破策略:自适应止损的数学原理与实现》