发布于VeighNa社区公众号【vnpy-community】
原文作者:Fusion小助手 | 发布时间:2026-10-27

上一篇我们介绍了策略代码的核对清单,以及如何配合软件的静态检查把语法和逻辑问题排查干净。确认代码无误后,下一步就进入历史回测与参数优化。

在系列最初的目录里,回测报告解读与参数优化原计划分两篇展开。不过在实际使用智策投研时,跑完回测看结果、规划优化方案、执行优化和锁定参数本来就是一气呵成的连续步骤,因此我们合并在这一篇里介绍。

回测与优化的目标,不是在历史数据里凑出一条收益最高的完美曲线,而是验证策略逻辑是否成立,并找到表现稳健的参数组合。

 

怎么看回测报告?

 

跑完一次历史回测后,很多人习惯第一眼先看“总收益率”或“年化收益”。但单看收益率很容易产生误判,更稳妥的做法是结合成交样本量、风险指标和交易成本一起看。

1. 四个核心评估维度

在智策投研的“回测结果”页面中,左侧是完整的绩效统计表,表上方另有一条包含 Sharpe、总收益率、最大回撤和交易次数的摘要,右侧是账户净值、净值回撤、每日盈亏和盈亏分布四张图表。浏览报告时重点看四处即可:

description

  • 总成交笔数与日均成交笔数:先看样本量够不够。如果几年回测下来一共只有二三十笔成交,统计上的偶然性就太大了;同时也能看出策略的交易频率是否符合预期。
  • 最大回撤、百分比最大回撤与最大回撤天数:界面上最大回撤与百分比最大回撤显示为负数,反映资金从高点回落的最大幅度;最大回撤天数则代表最深那次回撤从净值高点跌到谷底持续的自然日天数。
  • 收益回撤比与夏普比率:相比可以通过加大手数放大的总收益率,收益回撤比(总收益率除以百分比最大回撤的绝对值)和夏普比率衡量的是“承担一份风险能换来多少收益”,更适合用来横向评估策略质量。
  • 净值与回撤曲线形态:对照右侧的账户净值与净值回撤图表,看看利润是在整个回测区间里相对平稳地积累起来的,还是仅仅靠某一段特殊行情赚了一笔、其余大部分时间都在横盘消耗。

2. 交易成本对结果的影响

在创建任务、启动回测之前,还需要注意回测设置里的“手续费率”和“交易滑点”(在回测中,滑点不会加到成交价上,策略在 on_trade 里看到的仍是未加滑点的价格,滑点只按 滑点 × 手数 × 合约乘数 从盈亏里扣除)。

新建投研任务时,手续费率初始值为 0.0000,交易滑点初始值为 0(若此前创建过任务,会自动回填上次填写的值)。在前面第 2 篇创建演示任务时,为了先验证策略逻辑本身能否跑通,我们把这两项保持为了默认的 0。

这种“零成本回测”适合在开发初期快速检验信号机制;但在评估策略的真实表现时,需要在创建任务时填入实际的手续费率(按成交额比例计,开仓和平仓各算一次),并预留 1~2 个最小变动价位的滑点。

填写交易滑点时按价格单位输入,即填写 跳数 × 价格跳动。例如螺纹钢的价格跳动是 1,预留 1~2 跳直接填 1 或 2 即可;如果交易品种的价格跳动不是 1,则需要按实际价格跳动的倍数填写。

需要注意的是,手续费率和滑点在创建任务时写入,智策任务运行中不能事后修改;如果要调整成本假设,需要新建任务重新运行(若想放到独立的“CTA回测”模块中测试,则需先把任务目录里的策略代码直接放到程序启动目录下的 strategies 文件夹里,不能放在子目录中,再点击“策略重载”)。

 

参数优化与过拟合

 

看完首次回测结果后,我们通常会尝试调整参数,看看策略表现能否进一步改善。这一步最需要注意的问题就是过拟合。

历史行情里既有真实的趋势规律,也有大量偶然的随机波动。如果把策略里的所有参数一次性全放进去做大范围穷举,从几万种组合里挑出历史收益率最高的那一组,它往往只是刚好贴合了过去几年的行情噪音。一旦放到未来的实盘行情里,这种靠“背历史答案”凑出来的参数很容易失效。

因此,做参数优化时把握住两个基本原则就够了:

  1. 排除仓位参数,分轮少量寻优:不要把所有参数一股脑全丢进去同时穷举。仓位与资金比例类参数(如 fixed_size、max_pos、max_position、capital_pct,以及名称中带 size、volume、lot、ratio 的参数;因此止损倍数等参数命名时应避免带 ratio)不参与优化;其余待优化参数分成多轮逐步锁定,每一轮只挑 1~2 个参数(优先信号和出场参数),用合理的步长去测试。
  2. 用风险调整后指标衡量,不盲目追孤立高点:评估优化结果时,优先用“夏普比率”等综合风险收益指标作为优化目标。不要只盯着偶然冲高的孤立参数,如果一组参数在周边范围内表现都比较稳定,说明它处在稳健区域里,实盘可靠性更高。

 

智策投研里的回测与多轮优化

 

如果完全靠人工去分轮设置参数范围与步长、逐轮筛选锁定参数、再手动把参数改写回代码文件,操作起来还是有不少工作量的。

在 VeighNa Fusion 的智策投研里,这套流程会被自动执行完成:

description

第一步,代码检查通过后,流程自动进入“执行回测”。系统会按创建任务时的回测设置运行历史回测,在“回测结果”页展示完整的统计指标表、顶部四项摘要与右侧四张图表(多轮参数优化全部完成后的最终回测,同样会更新到该页面)。

description

注:图中历史回测结果仅作功能演示,历史回测结果不代表未来表现。

第二步,首次回测结束后,系统进入“优化规划 → 执行优化 → 选择参数”的多轮循环,并在“参数优化”页集中展示:页面顶部显示当前轮次与前几轮已锁定的参数;上半部分“本轮优化计划”列出从尚未锁定的 parameters 中挑出的 1~2 个参数(自动排除仓位与比例类参数)、测试范围、步长及规划理由;下半部分“优化结果”展示按优化目标(默认为 sharpe_ratio 夏普比率)降序排列的结果表,同时底部运行日志会记录每一轮基于参数平原与稳健性自动选出的参数。

description

注:历史回测与参数优化结果不代表未来表现。

第三步,当所有轮次的待优化参数全部锁定后,系统会自动将最终参数默认值写回策略源码,再做一次静态代码检查和最终回测(FINAL 模式),最后在“结果总览”页给出最终锁定的全套参数列表与核心绩效汇总(展示总收益率、年化收益、Sharpe 比率、最大回撤、总交易次数五项数值,胜率与盈亏比因回测引擎未计算对应字段显示为 -)。

description

注:历史回测与参数优化结果不代表未来表现。

 

本篇小结

 

  • 评估回测报告时不要只看总收益率,重点结合总成交笔数、最大回撤(及最大回撤天数)、收益回撤比、夏普比率和净值曲线形态一起看;评估真实表现时,需在创建任务时填入实际的手续费率和按价格跳动折算的滑点。
  • 参数优化的核心是避开过拟合:排除仓位类参数,分轮次每次只优化 1~2 个参数,并以夏普比率等风险收益指标作为优化目标。
  • 在 Fusion 智策投研中,从首次回测、每轮 1~2 个参数的“规划 → 优化 → 选参锁定”循环,到最终把参数写回代码并完成最终回测验证,已经串联成完整的自动化工作流。

 

接下来讲什么

 

走到这里,我们已经把一个交易想法变成了规则说明书,准备好了连续合约数据,生成并核对了策略代码,也在智策投研里走完了历史回测与多轮参数优化,拿到了写回最终参数的策略文件。

当策略代码和参数都已经锁定后,离真正启动实盘交易还有最后一步:期货程序化交易在实盘接入前有哪些合规要求?把策略投入实盘运行时,又有哪些需要注意的事项?

下一篇(本系列收官篇):从回测走向实盘:程序化合规流程与上线准备。


VeighNa Fusion 是韦纳软件面向期货公司推出的标准化期货量化交易平台,本系列文中演示均基于 Fusion 内置功能完成,如希望了解详情,请扫描下方二维码添加小助手交流:

description