用大白话解释所有分析指标的原理、公式、好坏阈值和"出了问题该改什么", 零基础可读。README 顶部加入链接引导。
20 KiB
指标说明书 & 原理解释
本文档用大白话解释项目里出现的所有分析指标:是什么、怎么算、什么算好/坏、怎么用、出现在哪个模块。 零基础可读,配合 README.md 食用。
目录
- 一、为什么要算这些指标
- 二、基础盈利指标
- 净盈利、毛利、毛损、盈利因子(PF)、胜率、平均盈利/亏损、盈亏比、期望收益
- 三、风险与回撤指标
- 最大回撤、夏普比率、Sortino、Calmar、最大连胜/连败
- 四、稳健性指标
- 滚动PF、滚动窗口盈利比例、蒙特卡洛回撤模拟
- 五、Walk-Forward 验证指标
- WFE、IS-OOS PF 相关性
- 六、参数扫描指标
- 高原、过拟合评分、峰值孤立度、高原覆盖率
- 七、MAE/MFE 指标
- 八、What-If 场景含义
- 九、各指标速查表
一、为什么要算这些指标
新手常犯的错误:只看净盈利。"这份回测赚了 $1000,挺好吧?" —— 不一定。
考虑这两个策略:
- 策略 A:赚 $1000,过程中最多亏到 -$800(差点爆仓),靠最后一把运气翻盘
- 策略 B:赚 $1000,过程中最多只回撤 -$50,稳定增长
净盈利相同,但 A 是赌徒、B 是好策略。光看净盈利分不清。所以我们用一组指标从盈利能力、风险、稳健性三个维度交叉评估。
类比体检:净盈利像体重,单看体重看不出健康;还要看血压(回撤)、心率(夏普)、耐力(稳健性)等。
二、基础盈利指标
1. 净盈利 (Net Profit)
是什么:所有交易盈亏求和。
怎么算:净盈利 = Σ 每笔净盈亏(含手续费/swap)
好坏:正数=赚,负数=亏。但正数不代表策略好(要看风险)。
在哪看:所有模块的卡片顶部。
2. 毛利 / 毛损 (Gross Profit / Gross Loss)
是什么:把盈利笔和亏损笔分开求和。
怎么算:
毛利 = Σ 盈利笔的盈利毛损 = Σ 亏损笔的亏损(负数)
用途:是算 PF 的中间量,本身少看。
3. 盈利因子 (Profit Factor, PF) ⭐ 最重要
是什么:赚的总额 / 亏的总额。最关键的单个指标。
怎么算:PF = 毛利 / |毛损|
好坏阈值:
| PF | 含义 |
|---|---|
| < 1.0 | 亏钱,策略期望为负,不能用 |
| 1.0 - 1.3 | 勉强盈利,扣掉滑点/点差可能就亏了,危险 |
| 1.3 - 1.5 | 合格,有正期望 |
| 1.5 - 2.0 | 良好 |
| > 2.0 | 优秀(但要警惕过拟合,太完美往往不真实) |
类比:你摆摊,PF=1.5 意思是每亏 1 块钱能赚回 1.5 块。
在哪看:主报告卡片、核心指标对比表、What-If 表、参数扫描热力图(默认 metric=pf)。
4. 胜率 (Win Rate)
是什么:盈利笔数占总笔数的百分比。
怎么算:胜率 = 盈利笔数 / 总笔数 × 100%
好坏:单独看胜率没用!要配合盈亏比。
- 胜率 90% 但每笔赢 $1 输 $20 → 还是亏
- 胜率 30% 但每笔赢 $50 输 $5 → 还是赚
在哪看:核心指标表、方向性诊断、What-If 表。
5. 平均盈利 / 平均亏损 (Avg Win / Avg Loss)
是什么:盈利笔的平均赚多少 / 亏损笔的平均亏多少。
好坏:单独看意义不大,用来算盈亏比。
6. 盈亏比 (Payoff Ratio)
是什么:平均每笔赢的 vs 平均每笔亏的。
怎么算:盈亏比 = 平均盈利 / |平均亏损|
好坏:
| 盈亏比 | 含义 |
|---|---|
| < 0.5 | 赢太小输太大,必须靠高胜率才能活 |
| 0.5 - 1.0 | 输赢相当 |
| 1.0 - 2.0 | 健康,赢的比输的多 |
| > 2.0 | 优秀,砍单快、让利润跑 |
和胜率的关系(关键公式):
- 若胜率 W、盈亏比 R,长期盈利 ⟺
W × R > (1-W) × 1,即W > 1/(R+1) - 例:盈亏比 2.0 → 胜率 > 33% 就能赚;盈亏比 0.5 → 胜率要 > 67% 才赚
在哪看:核心指标表、方向性诊断。
7. 期望收益 (Expectancy)
是什么:平均每笔交易能赚多少。
怎么算:期望 = 净盈利 / 总笔数(即每笔的数学期望)
好坏:必须为正。正期望 + 大样本 = 长期赚钱。
类比:期望 +$0.5 意思是长期平均每笔赚 5 毛钱,1000 笔后大约赚 $500。
在哪看:核心指标表、What-If 表。
三、风险与回撤指标
8. 最大回撤 (Max Drawdown) ⭐
是什么:从资金曲线的最高点跌到下一个最低点,跌了多少。最重要的风险指标。
怎么算:在资金曲线上,每个时点算"当前资金 - 历史最高资金",取最小的那个值(负数)。
两种口径:
- 金额回撤:
-$963 - 百分比回撤:
96%(账户从最高点跌了 96%)
好坏阈值:
| 回撤% | 含义 |
|---|---|
| < 10% | 优秀 |
| 10-25% | 合格 |
| 25-40% | 警告,扛不住连续亏损 |
| > 40% | 危险,接近爆仓 |
| > 80% | 实际上已经废了 |
类比:账户最高 $1000,跌到 $400 才回升,最大回撤 = 60%。
在哪看:核心指标表、蒙特卡洛模拟表、Walk-Forward 窗口表。
9. 夏普比率 (Sharpe Ratio)
是什么:每承担 1 单位风险(波动)能换回多少超额收益。
怎么算:夏普 = (平均收益 - 无风险收益) / 收益标准差
(项目里用逐笔口径近似,无风险收益简化为 0)
好坏阈值:
| 夏普 | 含义 |
|---|---|
| < 0 | 亏钱 |
| 0 - 0.5 | 不值得做 |
| 0.5 - 1.0 | 一般 |
| 1.0 - 2.0 | 良好 |
| > 2.0 | 优秀 |
注意:单笔口径的夏普数值会比年化口径低很多,本工具的夏普只用于横向对比两份报告,绝对数值不与教科书对齐。
在哪看:核心指标表(从 MT5 报告读取)。
10. Sortino 比率
是什么:夏普的改进版。夏普把上涨和下跌波动都算风险,Sortino 只把下跌(亏损)当风险。
怎么算:Sortino = 平均收益 / 亏损笔的标准差
为什么更好:赚钱的波动是好事(你希望大赚),不该被罚;只有亏钱的波动才是风险。
好坏:和夏普类似,但通常数值更高。负数=亏钱,>1 算不错。
在哪看:核心指标表(本工具逐笔口径计算)。
11. Calmar 比率
是什么:净盈利 / 最大回撤。收益与风险的直白比值。
怎么算:Calmar = 净盈利 / |最大回撤|
好坏:
- < 0:亏钱
- 0 - 1:赚的没回撤多,风险大
-
1:赚的比回撤多,开始合格
-
3:优秀
类比:赚 $1000 但最大回撤 -$500,Calmar=2,意思是"每承受 1 块回撤能换 2 块利润"。
在哪看:核心指标表。
12. 最大连胜 / 最大连败 (Max Streak Win/Loss)
是什么:历史上最多连续赢/连续亏了几笔。
好坏:
- 最大连败是关键 —— 决定你能扛多久不爆仓
- 连败 10 笔、每笔亏 1% 账户 = 跌 10%,还可接受
- 连败 10 笔、每笔亏 5% 账户 = 跌 50%,危险
配合仓位看:连败本身不可怕,可怕的是"连败 × 单笔风险"。
在哪看:核心指标表、Walk-Forward 表。
四、稳健性指标
稳健性 = 策略在未来不同行情下还能不能赚。一个策略在历史回测里赚翻,但换个时间段就亏光,就是"过拟合",不稳健。
13. 滚动 PF (Rolling PF)
是什么:把全部交易切成 100 笔一个窗口,每个窗口单独算 PF。
怎么算:滑动窗口(步长=25),每段算一次 PF。
看什么:
- 最低值:最差的窗口表现多差?如果最低 PF < 1,说明有行情段会亏
- 最高值:最好的窗口多好
- 波动大小:高低差距大 = 策略对行情敏感 = 不稳健
在哪看:核心指标表的"滚动PF 区间"。
14. 滚动窗口盈利比例 (Pct Profitable Window)
是什么:在所有 100 笔窗口里,有多少比例的窗口 PF > 1(盈利)。
怎么算:盈利窗口数 / 总窗口数 × 100%
好坏:
-
80%:策略在大部分行情段都能赚,稳健
- 50-80%:中等,对行情有依赖
- < 50%:大部分时段都亏,不稳健
在哪看:核心指标表。
15. 蒙特卡洛回撤模拟 ⭐
是什么:把所有交易随机打乱顺序 1000 次,每次重新算最大回撤,看回撤的分布。
为什么这么做:实盘里交易发生的顺序是随机的,回测里那个顺序只是历史的一种可能。打乱重排 = 模拟"如果行情以不同顺序发生,最坏会怎样"。
4 个关键值:
| 值 | 含义 |
|---|---|
| 实际回撤 | 真实历史回测里的回撤 |
| 5% 分位 | 1000 次模拟里最糟的 5%,极端坏运气下的回撤 |
| 50% 分位(中位) | 一半模拟比这好、一半比这差 |
| 95% 分位 | 比较好的那 5% |
怎么判断(本工具的"连败聚集"规则):
- 实际回撤 ≈ 中位 → 顺序无自相关,回撤属正常范围
- 实际回撤 显著差于中位(>1.3 倍) → 顺序有自我相关,亏损倾向连发,需加连亏保护
类比:你抛硬币 100 次,理论正反各 50。"实际最差连续正面数 vs 蒙特卡洛的典型最差连续正面数"对比,能看出硬币有没有被动过手脚。
在哪看:主报告第 5 节、SVG 条形图。
五、Walk-Forward 验证指标
Walk-Forward 是比单次 IS/OSS 更严格的稳健性检验:把数据切成多段,每段前半做"训练(IS)"、后半做"验证(OOS)",看 IS 段的好表现能否延续到 OOS 段。
16. WFE (Walk-Forward Efficiency) ⭐
是什么:所有 OOS 段净盈利之和 / 所有 IS 段净盈利之和。
怎么算:WFE = Σ OOS净盈利 / Σ IS净盈利
好坏:
| WFE | 含义 |
|---|---|
| < 0 | OOS 总体亏钱,策略没泛化,不能用 |
| 0 - 0.3 | OOS 只能保留 IS 的 30% 利润,泛化差 |
| 0.3 - 0.7 | 中等,有一定泛化 |
| 0.7 - 1.0 | 良好,OOS 保留大部分 IS 利润 |
| > 1.0 | OOS 比 IS 还赚(罕见,可能 IS 段行情特殊) |
类比:IS 段是模拟考,OOS 段是高考。WFE=0.5 意思是高考成绩只有模拟考的一半 —— 模拟考成绩虚高,真实水平没这么好。
在哪看:Walk-Forward 报告卡片、主报告第 9 节。
17. IS-OOS PF 相关性
是什么:每个窗口的 IS PF 和 OOS PF 之间的相关系数(-1 到 1)。
怎么算:所有窗口的 (IS_PF, OOS_PF) 配对,算皮尔逊相关系数。
好坏:
| 相关性 | 含义 |
|---|---|
| > 0.6 | IS 好的窗口 OOS 也好 → 泛化能力强,参数稳健 |
| 0.2 - 0.6 | 中等,部分泛化 |
| < 0.2 | IS 表现不能预测 OOS → 过拟合风险高,参数对行情敏感 |
为什么重要:高相关性比高 WFE 更可靠 —— WFE 可能被一两个极端窗口带偏,相关性看的是"稳定的预测关系"。
在哪看:Walk-Forward 报告卡片。
18. OOS 盈利窗口占比
是什么:所有 OOS 窗口里,有多少比例是盈利的。
好坏:
-
70%:策略在多数行情段都能赚,稳健
- 50-70%:中等
- < 50%:多数时段亏,不稳健
在哪看:Walk-Forward 报告卡片。
六、参数扫描指标
参数扫描 = 对 EA 的输入参数做网格回测,看不同参数下的表现,找最优参数。
19. 响应面 (Response Surface)
是什么:把两个参数当 X/Y 轴,把指标(如 PF)当高度,画成的"地形图"。
怎么读:
- 山峰(尖峰):某组参数特别好,但周围快速下降 → 单点最优,过拟合风险
- 高原(宽阔平顶):一大片参数都表现不错 → 稳健区域,选参应在这里
- 山谷:某组参数特别差 → 避开
在哪看:参数扫描的 2D 热力图、3D 等距投影曲面。
20. 高原 (Plateau) ⭐
是什么:响应面上"指标高于 80 分位且 4-邻域连通 ≥ 4 格"的区域。
怎么检测:
- 把所有指标值排序,取 80 分位作为阈值
- 把高于阈值的格子标记为"好点"
- 用 4-连通(上下左右相邻)找连通区域
- 面积 ≥ 4 格的区域才算高原
为什么重要:
- 高原 = "参数即使小幅扰动,表现仍然不错" → 实盘更可靠
- 单点峰值 = "参数稍微改一点就完蛋" → 过拟合,实盘必死
类比:选扎营地点。单点峰值像一根针尖,站上去稍微动一下就掉下去;高原像台地,怎么走都稳。
在哪看:参数扫描热力图上的 P1/P2/P3 粗框、高原清单表。
21. 过拟合评分 (Robust Score) ⭐
是什么:综合"峰值孤立度"和"高原覆盖率"得出的稳健性 0~1 评分。
怎么算:稳健性 = 峰值孤立度 × 0.5 + min(1, 高原覆盖率 × 4) × 0.5
两个分量:
21a. 峰值孤立度 (Peak Isolation Ratio)
= 峰值周围 8 邻域的均值 / 峰值- 接近 1:峰值和邻域差不多,是高原的一部分,稳健
- 接近 0:峰值远高于邻域,孤立尖峰,过拟合
21b. 高原覆盖率 (Plateau Coverage)
= 高原格子数 / 总格子数- 越大 = 高原越宽阔 = 越多参数组合都好用
好坏:
| 评分 | 含义 |
|---|---|
| < 0.4 | 过拟合,最优参数是孤立尖峰,实盘风险高 |
| 0.4 - 0.7 | 中等,有高原但峰值仍突出 |
| > 0.7 | 稳健,存在宽阔高原,泛化好 |
在哪看:参数扫描报告卡片。
22. 选参策略 (Strategy: peak / plateau)
两种策略:
--strategy plateau(默认,推荐):取最大高原的中心点参数。抗扰动,实盘更稳。--strategy peak:取全局单点峰值。理论最优但孤立,实盘易退化。
为什么不直接用峰值:回测的最优参数是"对历史过度适配"的结果,实盘行情稍有不同就会失效。高原中心留有安全边际。
七、MAE/MFE 指标
MAE/MFE 是诊断"止损/止盈设得对不对"的工具。MT5 标准报告不含,需要 EA 自己导出。
23. MAE (Maximum Adverse Excursion)
是什么:每笔交易持仓期间,逆向走的最大点数。
- 多单的 MAE = 开仓后最低价距开仓价的点数
- 空单的 MAE = 开仓后最高价距开仓价的点数
怎么用:
- 画 MAE vs 盈亏散点(绿=赢,红=输)
- 看亏损笔(红点)集中在 MAE 多大处 → 那就是 SL 应该设的位置
- 工具自动取"亏损笔 MAE 的 75 分位"作为 SL 候选
类比:MAE 是"账单 —— 这笔交易最多被套了多少点"。被套很深还能翻红的是运气,被套很深最终亏损的是常态,所以深 MAE 区基本全红。
24. MFE (Maximum Favorable Excursion)
是什么:每笔交易持仓期间,顺向走的最大点数。
- 多单的 MFE = 开仓后最高价距开仓价的点数
- 空单的 MFE = 开仓后最低价距开仓价的点数
怎么用:
- 画 MFE vs 盈亏散点
- 看盈利笔(绿点)从 MFE 多大开始变多 → 那就是 TP 应该设的位置
- 工具自动取"盈利笔 MFE 的中位数"作为 TP 候选
- 关键洞察:如果很多高 MFE 笔(涨了很多)最终却亏损,说明 TP 太贪,价格涨到位又跌回来,应该早点止盈
25. TP×SL 扫描热力图
是什么:把 TP 和 SL 各取 30 个值组成 900 个组合,每个组合基于历史 MAE/MFE 重算理论净盈利,画成热力图。
重算规则(对每笔):
- 若 MAE ≥ SL → 该笔按 SL 亏损离场
- 否则若 MFE ≥ TP → 该笔按 TP 盈利离场
- 否则按原盈亏
看什么:
- 最优点(圈出):理论净盈利最大
- 但要看周围是否宽阔(和高原同理)—— 单点最优过拟合,宽绿区才稳健
在哪看:MAE/MFE 报告第 2 节。
26. 盈亏-MAE/MFE 相关系数
是什么:每笔的盈亏金额与 MAE/MFE 的相关系数(-1 到 1)。
怎么用:
- 盈亏-MAE 负相关(如 -0.4):逆向偏移越大越易亏 → 设 SL 有意义
- 盈亏-MFE 正相关(如 0.5):顺向偏移越大越易赚 → 设 TP 有意义
- 若相关性弱 → MAE/MFE 对盈亏影响小,TP/SL 优化空间有限,应改入场逻辑
八、What-If 场景含义
What-If = "如果这样改,会变成怎样"。对每份报告模拟改造,重算指标,看哪种改法能让策略转正。
9 个通用场景
| 场景 | 怎么做 | 想验证什么 |
|---|---|---|
| 基线(现状) | 不改 | 对照基准 |
| 仅做空 sell-only | 剔除所有 long 单 | 空头方向单独有没有正期望 |
| 仅做多 buy-only | 剔除所有 short 单 | 多头方向单独有没有正期望 |
| 信号反向 | 净盈亏全部 ×(-1) | 如果方向逻辑写反了,反向后会变盈利 |
| 过滤最差星期 | 剔除净盈利最差的那个星期 | 时间过滤能否改善 |
| 过滤最差 N 小时 | 剔除净盈利最差的 1/6 小时窗口 | 时段过滤能否改善 |
| 仓位减半 | 净盈亏 ×0.5 | 回撤与盈利同步减半,看风险收益比 |
| 盈利单放大 ×1.5 | 盈利笔 ×1.5 | 让盈利单跑更远能否改善(验证离场逻辑) |
| 亏损截断 | 单笔亏损封顶(中位亏损为阈) | 更紧止损能否改善 |
| 启用 BE | 盈利笔 ×0.5 | 模拟保本止损触发后部分回吐 |
怎么读 What-If 表:
- 看每个场景的 PF 是否站上 1、回撤是否收敛、期望是否转正
- 比基线明显改善的场景 → 对应方向是优化重点
- 特别警惕:若"信号反向"两份报告都转正,强烈怀疑代码方向写反,需人工复核源码
九、各指标速查表
按重要性 ⭐
| 优先级 | 指标 | 一句话 |
|---|---|---|
| ⭐⭐⭐⭐⭐ | PF | 赚的/亏的,必须 >1.3 |
| ⭐⭐⭐⭐⭐ | 最大回撤% | 不能 >40% |
| ⭐⭐⭐⭐⭐ | 期望收益 | 必须为正 |
| ⭐⭐⭐⭐ | WFE | OOS 能保留多少 IS 利润 |
| ⭐⭐⭐⭐ | 高原/稳健性评分 | 参数是否抗扰动 |
| ⭐⭐⭐⭐ | 信号反向 What-If | 方向逻辑是否写反 |
| ⭐⭐⭐ | 盈亏比 + 胜率 | 配合看,不能单独看胜率 |
| ⭐⭐⭐ | 蒙特卡洛实际 vs 中位 | 是否有连败聚集 |
| ⭐⭐⭐ | 最大连败 | 决定能扛多久不爆仓 |
| ⭐⭐ | 滚动PF区间 | 不同行情段的表现差异 |
| ⭐⭐ | 夏普/Sortino/Calmar | 风险调整后收益 |
| ⭐⭐ | IS-OOS PF 相关性 | 参数泛化能力 |
| ⭐ | 滚动窗口盈利比例 | 多少行情段能赚 |
按"出了问题该改什么"
| 指标异常 | 可能原因 | 优化方向 |
|---|---|---|
| PF < 1 | 整体期望为负 | 先看方向诊断,再离场逻辑 |
| 买入胜率 << 卖出胜率 | 多空信号不对称 | 检查入场信号逻辑(看 What-If 反向) |
| 卖出胜率高但 PF < 1 | 赢的太小输的太大 | 改离场(看 What-If "盈利单放大") |
| 回撤 > 40% | 单笔风险太大 / 连败 | 缩 SL、加连亏保护 |
| 蒙特卡洛实际远差于中位 | 连败聚集 | 连亏 N 笔暂停 |
| WFE < 0.3 | IS 不能泛化到 OOS | 参数扫描找高原,别用单点峰值 |
| 稳健性评分 < 0.4 | 参数是孤立尖峰 | 用 --strategy plateau 选高原中心 |
| 高 MFE 笔最终亏损 | TP 太贪 | 缩小 TP(看 MAE/MFE 报告) |
| 高 MAE 笔全亏 | 没止损或 SL 太宽 | 缩小 SL 到 MAE 75 分位 |
附:本工具的指标计算口径
- 夏普/Sortino/Calmar:本工具用逐笔口径(每笔交易作为一个样本),非年化口径。数值与教科书不同,仅用于横向对比两份报告,绝对值不可与年化夏普对齐。
- 滚动 PF:100 笔窗口,步长 25 笔。
- 蒙特卡洛:1000 次打乱,固定随机种子 42(可复现)。
- 高原检测:80 分位阈值,4-连通,最小面积 4 格。
- MAE/MFE:M1 周期 K 线扫描近似(非 tick 级),略有误差但对 TP/SL 决策足够。
如有疑问,对照本表回看 README.md 里的模块说明与各 HTML 报告的具体数值。