参数优化
策略里 Params 声明的参数(如均线周期 5/20)到底用多少最好?靠拍脑袋不如让程序遍历一遍。
TBQuant 内置「策略优化」功能,自动帮你测试不同参数组合的回测表现。本章讲怎么用、怎么读结果、怎么不被「过拟合」骗到。
为什么用 Params 声明参数
回顾 TB语言类型与变量:Params 段声明的参数,回测和实盘时能在属性框里直接改,无需改代码。
这正是参数优化的前提——把关键周期、阈值写成参数,优化器才能遍历它们。
Params
Numeric FastLen(5); // 优化器会尝试不同的 FastLen
Numeric SlowLen(20); // 和 SlowLen 的组合
优化入口
- 菜单 策略 → 策略优化,打开优化工作区。
- 选择要优化的策略、合约、周期、回测区间。
- 对每个参数设置:最小值、最大值、步长。
例如 FastLen 设 315 步长 2(取 3,5,7,…,15),40 步长 5,
优化器会遍历所有组合(本例约 7×7=49 组),逐组跑回测,汇总绩效。SlowLen 设 10
设置参数区间
| 要点 | 建议 |
|---|---|
| 区间范围 | 别太窄(漏掉好参数)也别太宽(跑太久、易过拟合) |
| 步长 | 太细则组合爆炸、跑得慢;先粗扫再细扫 |
| 参数个数 | 尽量控制在 2~3 个,多了组合数指数增长 |
经验:先用大步长粗扫(如步长 5),锁定较优区间;再用小步长(如步长 1)在该区间细扫。
解读优化结果
优化完会输出一张参数组合 × 绩效指标的表/图:
- 净利润 / 收益率:越高越好,但不能只看这个。
- 最大回撤:关注收益好且回撤小的组合——稳健。
- 收益回撤比(净利润/最大回撤):综合衡量「赚得多还扛得住」。
- 参数平原 vs 参数孤峰:
- 好的结果:最优点周围一片都不错(参数平原),说明策略对参数不敏感、稳健。
- 危险的结果:只有一个孤立尖峰、周围都很差(参数孤峰),极可能是过拟合。
防范过拟合
过拟合是参数优化的头号大敌——参数对历史调得太完美,未来却不灵。防范方法:
- 样本外检验:用 A 时段优化得到参数,再在 B 时段(未参与优化的数据)回测,看是否依然有效。
- 看参数平原:选「一片都好」的区域中心值,而不是孤峰极值。
- 少而稳的参数:参数越少,过拟合风险越低;能合并就合并。
- 跨品种验证:同一组参数在多个品种上都还行,比只在一个品种上完美更可信。
- 交易次数要够:参数组合只产生三五次交易,统计意义不足,再多测也不可信。
核心心态:优化是为了「排除明显差的参数」,不是为了找到「历史最完美的参数」。后者几乎一定过拟合。
优化后的下一步
- 选定的参数拿去做样本外回测和模拟盘验证。
- 实盘用「轻仓 + 监控」,确认表现与回测大体一致后再逐步加仓。
- 定期重新评估参数(市场风格会变),但别频繁改动——追着最近行情调参也是过拟合。
小结
策略优化遍历参数组合找表现好的配置;设置合理的区间与步长,先粗扫再细扫; 重点看收益回撤比和「参数平原」;务必做样本外检验防范过拟合。优化是辅助决策,不是寻宝。
下一步
单品种策略之外,TBQuant 还支持多品种组合与 Python 接口 TBPY: 多品种组合与TBPY。