文件
quantKonwledge/wiki/流程图解/回测完整流程.md

7.0 KiB

回测完整流程图解

返回:流程图解目录 | Wiki 主索引 相关文档:回测方法论与实践 | 回测名词解释 | tradehk 信号评分引擎


一、回测总体流程

┌─────────────────────────────────────────────────────────────┐
│                    量化策略回测 7 步流程                       │
└─────────────────────────────────────────────────────────────┘

第一步:数据准备
    ↓
第二步:策略定义与参数设置
    ↓
第三步:数据集分割(训练/验证/测试)
    ↓
第四步:信号生成(严格避免前视偏差)
    ↓
第五步:参数优化(在验证集上)
    ↓
第六步:样本外测试(只执行一次)
    ↓
第七步:结果分析与决策

二、第一步:数据准备流程

数据来源选择:
    ├─ Binance API推荐,数据质量最高
    ├─ CoinGecko备用,部分历史数据
    └─ 本地数据库(已采集的历史数据)
    │
    ▼
数据质量检查:
    ├─ 检查缺失 K 线(时间戳连续性)
    │   └─ 缺失 > 5%:重新获取或标记为不可用
    ├─ 检查异常值(单根 K 线涨跌幅 > 50%
    │   └─ 确认是否为真实行情或数据错误
    ├─ 检查成交量(成交量为 0 的 K 线)
    │   └─ 标记为低流动性时段,回测时跳过
    └─ 时区统一(统一转换为 UTC+8 北京时间)
    │
    ▼
数据格式标准化:
    列名timestamp, open, high, low, close, volume
    时间格式Unix 时间戳(毫秒)
    价格精度:保留 8 位小数
    存储格式Parquet推荐或 CSV

各品种推荐回测数据量

品种 最少数据量 推荐数据量 原因
BTC 6 个月 2 年 需覆盖牛熊周期
ETH 6 个月 2 年 同 BTC
SOL 3 个月 1 年 历史数据较短
BNB 6 个月 2 年 需覆盖季度销毁
DOGE 3 个月 1 年 高度事件驱动
XAUT 6 个月 2 年 需覆盖多个宏观周期

三、第三步:数据集分割规则

时间顺序分割(不可随机分割!):

总数据时间范围T_start → T_end
    │
    ├─ 训练集70%T_start → T_split1
    │   用途:策略开发和初步参数设置
    │
    ├─ 验证集15%T_split1 → T_split2
    │   用途:参数优化和过拟合检测
    │
    └─ 测试集15%T_split2 → T_end
        用途:最终策略评估(只能使用一次!)

示例2 年数据):
    训练集2023-01 至 2024-0416 个月)
    验证集2024-04 至 2024-106 个月)
    测试集2024-10 至 2025-035 个月)

重要原则:测试集只能在策略完全确定后使用一次。如果在测试集上调整参数,则测试集实际上变成了验证集,需要重新收集新数据作为真正的测试集。


四、第四步:信号生成注意事项

前视偏差检查清单

□ 所有指标计算是否只使用已收线的 K 线数据?
□ EWO 转换信号是否在"已收线确认"后才触发?
□ 入场价格是否使用下一根 K 线的开盘价?
□ ATR 计算是否使用当根 K 线收盘后的数据?
□ 大周期偏向是否使用已完成的 4h K 线?
□ 止损价格是否在入场后才设置(不使用未来数据)?

tradehk 信号系统的正确回测时序

时间 TK 线收盘):
    → 计算所有指标(使用 T 及之前的数据)
    → 判断 EWO 是否发生转换
    → 如果触发信号:记录信号,等待下一根 K 线

时间 T+1下一根 K 线开盘):
    → 以 T+1 开盘价执行入场
    → 设置止损价格

时间 T+1 至平仓:
    → 每根 K 线检查止损是否触发
    → 每根 K 线检查是否有反向信号(平仓条件)

五、第五步:参数优化流程

网格搜索(适合参数少的情况)

定义参数搜索空间:
    EWO 幅度阈值:[5, 8, 10, 12, 15, 20]
    阶段持续时间阈值:[10, 15, 20, 25, 30]
    信号执行分数阈值:[4, 5, 6, 7]

对每个参数组合:
    → 在验证集上运行回测
    → 计算评估指标(夏普比率、卡尔玛比率)
    → 记录结果

选择最优参数:
    → 优先选择夏普比率 > 1.5 的参数组合
    → 在多个优秀组合中选择参数最稳健的(参数稍变化结果不大变)

过拟合检测

计算样本内外性能比IS/OOS Ratio

IS_Sharpe = 训练集夏普比率
OOS_Sharpe = 验证集夏普比率

IS/OOS Ratio = OOS_Sharpe ÷ IS_Sharpe

判断标准:
    > 0.7:良好,过拟合风险低
    0.5-0.7:一般,谨慎使用
    < 0.5:严重过拟合,需要简化策略

六、第七步:结果分析标准

通过标准(全部满足才考虑实盘)

指标 最低要求 优秀标准
年化收益率 > 20% > 50%
夏普比率 > 1.0 > 2.0
最大回撤 < 25% < 15%
卡尔玛比率 > 1.0 > 2.5
胜率 > 45% > 55%
盈亏比 > 1.2 > 2.0
交易次数 > 100 > 300
IS/OOS 比率 > 0.5 > 0.7

压力测试

在以下极端场景下重新运行回测:

场景一2025 年 4 月关税战BTC -30%,3 天内)
    → 策略最大回撤是否可接受?

场景二2025 年 10 月黑色星期六($190 亿清算)
    → 策略是否触发连续亏损保护?

场景三:手续费提高 2 倍
    → 策略是否仍然盈利?

场景四:滑点提高 3 倍
    → 策略是否仍然盈利?

全部通过 → 可以考虑模拟盘验证
任一失败 → 需要改进策略后重新回测

七、从回测到实盘的路径

回测通过
    ↓
模拟盘Paper Trading验证至少 1-3 个月
    ├─ 使用真实市场数据
    ├─ 不使用真实资金
    └─ 记录每笔信号和执行情况
    ↓
模拟盘结果评估:
    ├─ 模拟盘夏普比率 ≥ 回测夏普比率 × 0.7?
    ├─ 模拟盘最大回撤 ≤ 回测最大回撤 × 1.5?
    └─ 信号触发频率与回测接近?
    ↓
小资金实盘(账户 10% 资金):至少 1 个月
    ↓
全资金实盘

八、相关文档