一条向上的收益曲线,真的代表策略可靠吗?

回测评价:收益、回撤与交易质量

约 13 分钟1 个动手实验4 道小题

学完你能说清楚看回测先看收益,再看风险、交易质量和比较口径。

01学完这一课,你能做到什么

假设两套策略都把 100 万元变成了 200 万元。第一套一路比较平稳,第二套中途只剩 60 万元,后来才涨回来。只看期末金额,你会觉得它们一样;真正开始持有时,你的感受和承受能力可能完全不同。

学完这一课,你应该能:

  1. 区分总收益、和复合增长速度;
  2. 手算,并看懂它的时间顺序;
  3. 区分 (收益相对最大回撤)和 (收益相对波动);
  4. 用、和利润描述交易怎样赚钱;
  5. 检查报告的成本、现金流、基准和交易记录,而不是只看一个漂亮数字。

先记住一个前提:净值是把起始资产归一为 1 后,按账户资产变化得到的序列。如果中间有入金或出金,要先选对收益口径,不能把新投入的本金当成投资赚到的钱。

一张完整的回测评价表
  1. 1资金增长总收益、年化收益
  2. 2下跌风险最大回撤、波动
  3. 3风险调整Calmar、Sharpe
  4. 4交易质量胜率、盈亏比、利润因子
  5. 5比较口径基准、成本、现金流

一句话记住收益曲线不是完整成绩单。

02总收益和年化收益:先看赚了多少

先看最简单的情况:没有额外入金或出金,100 万元变成 200 万元。

总收益率的公式是:

总收益率 = 期末资产 ÷ 期初资产 − 1

代入数字:200 ÷ 100 − 1 = 100%。所以,资产变成原来的 200%,不等于收益率是 200%;真正赚到的是原本金的 100%。

如果要比较不同持有时间,就要看年化收益。年化收益可以理解为:假设每年以同样速度复利增长,最终能得到相同结果的速度。

CAGR = (期末资产 ÷ 期初资产)^(1 ÷ 年数) − 1

CAGR 是复合年增长率,也就是把多年的增长换算成一个等效的年复利速度。

例 1:100 万元十年变成 200 万元。

CAGR = (200 ÷ 100)^(1 ÷ 10) − 1 = 2^(1/10) − 1 ≈ 7.18%

例 2:10 万元五年变成 18 万元。

CAGR = (18 ÷ 10)^(1 ÷ 5) − 1 = 1.8^(1/5) − 1 ≈ 12.47%

第二个例子总收益只有 80%,但年化更高,因为持有时间更短。不要把总收益直接除以年数:那不是复利速度。

CAGR 只看起点、终点和经历了几年。它不会告诉你中间是平稳上涨,还是先大跌再涨回来。比较股票、房产或其他资产时,还要统一杠杆、、和现金流口径。

一个月的偶然高收益不能直接外推成全年能力。年化数字方便比较,不代表未来一定能重复。

把多年的增长换成同一把尺子

CAGR = (期末资产 ÷ 期初资产)^(1 ÷ 年数) − 1

100 万元十年变 200 万元,CAGR ≈ 7.18%。

总收益和年化收益回答不同问题
总收益

一共增加多少

看期初到期末的总变化。

CAGR

等效每年增长多快

按复利换算,适合比较时长不同的结果。

一句话记住总收益看结果,CAGR 看复利速度。

03最大回撤:你曾经差点撑不住多少

假设净值依次是 1.00、1.20、0.90、1.10。它先涨到 1.20,后来跌到 0.90,再回到 1.10。最大回撤一定要从先出现的高点往后找低点,不能把全样本的最高点和最低点随便相除。

在每个时点,先找截至当时出现过的最高净值 H_t,再计算:

回撤 = 1 − 当前净值 ÷ 历史最高净值

代入最高点 1.20 和之后的低点 0.90:

回撤 = 1 − 0.90 ÷ 1.20 = 25%

所以这组数据的最大回撤是 25%。有些系统用 -25% 显示,同一个指标要先看清它的正负号定义。

最大回撤不只是一个百分比。假设账户从高点 100 万元跌到 60 万元,就是损失 40 万元。年化收益 30%、最大回撤 40% 的组合,可能很赚钱,也可能让你在恢复前就无法继续持有。

历史最大回撤只是已经发生过的最深下跌,不是未来损失的上限。运行中看到 35% 回撤时,你不知道它会不会继续扩大到 40% 或更高。

无杠杆资产下跌、不足导致强平、账户爆仓,是不同风险,不能都用“回撤”三个字混在一起。提前写好风险规则,比情绪失控后临时决定更容易执行。回撤 10% 以内可能更容易持有,年化 50% 也可能伴随 80% 回撤,但这只是感受例子,不是固定对应关系。

回撤必须按时间顺序计算
  1. 1找到当前以前的最高净值例如 1.20
  2. 2找到高点之后的低点例如 0.90
  3. 3用高点减损失比例1 − 0.90 ÷ 1.20 = 25%

一句话记住回撤必须先高后低,历史不是上限。

04Calmar 和 Sharpe:收益要放到风险旁边看

如果策略年化收益 12%,最大回撤 6%,可以用 Calmar 比率做一个直观比较:

Calmar = 年化收益 ÷ 最大回撤绝对值

代入数字:12% ÷ 6% = 2。

这里的两个数字必须来自同一个分析区间。最大回撤为 0 时,分母为 0,Calmar 不能正常定义;样本太短时,它也可能异常漂亮。有人会把小于 1、超过 2、达到 3 当作经验分档,但它们不是所有市场和策略都通用的合格线。你还要一起看样本期、交易次数、收益路径和未来可能的回撤。

Sharpe(夏普比率)回答的是另一个问题:平均,相对于收益波动有多大。超额收益就是扣掉同频率无风险基准后的收益。

Sharpe = 超额收益序列的平均值 ÷ 超额收益序列的标准差

例如,假设一个月的超额收益为 2%、4%、0%,平均超额收益是:(2% + 4% + 0%) ÷ 3 = 2%。它们相对平均值的波动标准差还需要按选定的标准差口径计算,再用 2% ÷ 该标准差 得到 Sharpe。若要年化,还必须说明使用的是月度、日度还是其他频率,以及年化所用的期数假设。

Calmar 的分母是最大回撤,Sharpe 的分母是波动率,不能混用。Sharpe 为负,通常表示按你选择的无风险基准计算,平均超额收益为负。Sharpe 高也不等于没有尾部风险:很多小盈利后的一次大亏,可能被短样本遮住。

不要只问“哪个指标更高”。总收益、CAGR、最大回撤、Calmar 和 Sharpe 需要放在同一张表里,连同分析区间和计算口径一起看。

两个风险调整指标的分母不同
Calmar

年化收益 ÷ 最大回撤

看收益相对最深历史下跌的关系。

Sharpe

平均超额收益 ÷ 波动率

看收益相对日常波动的关系。

一句话记住Calmar 看回撤,Sharpe 看波动。

动手试试

策略评估工作台

切换三组固定教学情景,计入或忽略交易成本,比较年化收益、最大回撤、卡玛、夏普、胜率和盈亏比。

固定教学样本策略评估工作台
年化收益统一不同时间跨度
卡玛比率年化收益 ÷ 最大回撤
夏普比率超额收益 ÷ 收益波动
高收益 vs 低回撤

先猜哪套策略更值得继续研究,再运行评估查看完整指标。

运行后将比较年化收益与最大回撤卡玛与夏普胜率与盈亏比交易成本拖累

05胜率、盈亏比和利润因子:看策略怎样赚钱

先看三笔净交易利润:+"+100、-50、+200。"+有两笔盈利,一笔亏损,所以胜率是:

胜率 = 盈利交易次数 ÷ 统计交易总次数

代入数字:2 ÷ 3 = 66.7%,也可以写成约 2/3。

平均盈利是 (100 + 200) ÷ 2 = 150,平均亏损绝对值是 50,所以平均盈亏比为:

平均盈亏比 = 平均盈利交易收益 ÷ 平均亏损交易损失的绝对值

代入数字:150 ÷ 50 = 3,也就是 3:1。

利润因子不是平均盈亏比。它用所有盈利金额除以所有亏损金额的绝对值:

利润因子 = 全部盈利金额之和 ÷ 全部亏损金额绝对值之和

代入数字:(100 + 200) ÷ 50 = 6。

所以,同一组交易可以同时得到胜率约 66.7%、平均盈亏比 3、利润因子 6,但这三个数字回答的不是同一件事。报告里要写清指标名称和公式。

统计前先定规则:分批买卖和部分平仓怎样合并?未平仓交易算不算?手续费在每笔收益中有没有扣掉?如果十次交易全部盈利,平均亏损没有观察值,盈亏比应写“未定义”,不能说它特别高。

趋势策略可能多次小亏,靠少数大盈利赚钱;均值回归策略可能频繁小赚,偶尔大亏。趋势风格可以出现约 25%–30% 胜率、盈亏比可能 10 倍;另一种策略可能有 80% 胜率、7:1 盈亏比。数学上高胜率和高盈亏比并非绝对不能同时出现,但越亮眼,越要检查样本量、成本、未来数据泄漏和漏记亏损。

忽略成本时,每笔交易的期望收益可以写成:

每笔期望 = 胜率 × 平均盈利 − (1 − 胜率) × 平均亏损绝对值

假设胜率 30%、平均盈利 3、平均亏损 1:

0.3 × 3 − 0.7 × 1 = 0.2

这个 0.2 还没有扣手续费、等成本。

趋势交易里常说“让利润发展”,可以把它改成明确的退出规则:例如达到什么条件继续持有,什么条件止盈或。不要靠某个交易者的个人故事证明策略有效。

胜率不等于赚钱能力

每笔期望 = 胜率 × 平均盈利 − (1 − 胜率) × 平均亏损绝对值

30% × 3 − 70% × 1 = 0.2;成本还要继续扣除。

三种交易质量指标
次数

胜率

盈利交易占全部交易的比例。

平均

盈亏比

平均赚一笔对应平均亏多少。

总额

利润因子

全部盈利金额对应全部亏损金额。

一句话记住胜率、盈亏比、利润因子不能互相替代。

06用公共回测流程减少重复工作

你不必每换一条策略,就重新写一遍数据读取、资金初始化和报告输出。一个公共回测流程通常会依次完成:播放历史 、记录买卖、更新资金和持仓,再由分析器输出指标和图表。

可以把这些重复部分集中起来:读取数据、初始化引擎、设置初始资金和费用、挂载策略、运行分析器、生成图表报告。常见的封装函数名可以是 run_and_report,放在类似 data_loader 的公共模块中。它还可以封装 MySQL 查询,从类似 trade_stock_daily 的行情表读取日期、、最高价、最低价、收盘价和 volume()等输入。

公共函数的价值是少写重复代码,不是自动保证结果正确。你仍然要核对分析器口径。建议先准备一个很小的人工样例,逐项检查资金曲线、交易成本、胜率和回撤,再跑长时间数据。

策略规则可以像模块一样替换:、MACD、指数等趋势规则; 等超买超卖规则;海龟、唐奇安通道和放量突破;波动策略和均值回归;还可以加入事件、宏观或跨市场信号。

每一个信号都要对齐当时真正能拿到的时间。不能把海外市场收盘后才出现的数据,拿去决定更早的国内成交。回测报告还要写清起止日期、比较基准、成本、方式、交易次数和未平仓处理。

最后做五项验收:

  1. 手算 100 万元十年翻倍和 10 万元五年至 18 万元的 CAGR;
  2. 对净值 [1.00, 1.20, 0.90, 1.10] 写出每一步的历史高点和回撤;
  3. 对 +100、-50、+200 算胜率、平均盈亏比和利润因子;
  4. 检查报告有没有基准、成本、复权、交易次数和未平仓口径;
  5. 分别比较一条趋势规则和一条震荡规则,遇到一个指标更好、另一个更差时,写出取舍,不要直接评为“优秀”。

完成标准是:你能解释每个指标的分子和分母,能从交易记录复算,能识别短样本、无亏损、零波动和现金流造成的异常。程序输出应该帮助你判断,不能替你检查口径。

公共回测流程
  1. 1行情输入日期、开高低收、成交量
  2. 2策略运行信号、买卖、持仓
  3. 3资金更新费用和净值
  4. 4分析器收益、回撤、交易指标
  5. 5报告核对口径、成本、基准、时间

一句话记住公共流程省重复代码,不能省口径检查。

检验
检验一下

4 道小题

全部答对,这一课就算真正读懂了。答错了会告诉你为什么。

01100 万元十年变成 200 万元,正确的说法是什么?
02净值依次为 1.00、1.20、0.90、1.10,最大回撤是多少?
03三笔净利润为 +100、-50、+200,利润因子是多少?
04下面哪句话正确?
知识卡

这一课,浓缩成一张卡

学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。

AI+金融投资训练营 · 回测评价:收益、回撤与交易质量评价一份回测,除了收益还要看什么?

同时看回撤、波动、交易质量和成本口径,不能只看收益曲线。

  • CAGR 看复利速度
  • 回撤必须先高后低
  • 利润因子不等于盈亏比
quant.jtxaionline.com
这一课的要点

记住这 5 句话

  1. 01总收益率看资产增加多少,CAGR 看等效复利速度;100 万元十年翻倍的 CAGR 约为 7.18%。
  2. 02最大回撤必须从先出现的高点往后找低点;历史最大回撤不是未来损失上限。
  3. 03Calmar 的分母是最大回撤,Sharpe 的分母是波动率,负 Sharpe 通常表示平均超额收益为负。
  4. 04胜率、平均盈亏比和利润因子分别看次数、平均交易和总金额,不能互相替代。
  5. 05公共回测流程能复用代码,但时间对齐、成本、现金流、基准和未平仓口径仍要人工核对。
完成这一课

完成这一课

读完讲义、动手做一次实验、答对小题,这一课就算学完了。

  • 读完讲义
  • 完成一次策略指标评估
  • 通过随堂自测

实验数据AI+金融投资训练营教学样本。固定策略评估情景,用于比较收益、风险、交易质量和交易成本。

固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。