Files
gavindiaz 9cdf93cc3d docs: 添加指标说明书 METRICS_GUIDE.md
用大白话解释所有分析指标的原理、公式、好坏阈值和"出了问题该改什么",
零基础可读。README 顶部加入链接引导。
2026-06-28 02:50:09 +08:00

20 KiB
Raw Permalink Blame History

指标说明书 & 原理解释

本文档用大白话解释项目里出现的所有分析指标:是什么、怎么算、什么算好/坏、怎么用、出现在哪个模块。 零基础可读,配合 README.md 食用。


目录


一、为什么要算这些指标

新手常犯的错误:只看净盈利。"这份回测赚了 $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 但最大回撤 -$500Calmar=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 格"的区域。

怎么检测

  1. 把所有指标值排序,取 80 分位作为阈值
  2. 把高于阈值的格子标记为"好点"
  3. 用 4-连通(上下左右相邻)找连通区域
  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:本工具用逐笔口径(每笔交易作为一个样本),非年化口径。数值与教科书不同,仅用于横向对比两份报告,绝对值不可与年化夏普对齐。
  • 滚动 PF100 笔窗口,步长 25 笔。
  • 蒙特卡洛:1000 次打乱,固定随机种子 42(可复现)。
  • 高原检测:80 分位阈值,4-连通,最小面积 4 格。
  • MAE/MFE:M1 周期 K 线扫描近似(非 tick 级),略有误差但对 TP/SL 决策足够。

如有疑问,对照本表回看 README.md 里的模块说明与各 HTML 报告的具体数值。