# 指标说明书 & 原理解释 > 本文档用大白话解释项目里出现的所有分析指标:是什么、怎么算、什么算好/坏、怎么用、出现在哪个模块。 > 零基础可读,配合 [README.md](README.md) 食用。 --- ## 目录 - [一、为什么要算这些指标](#一为什么要算这些指标) - [二、基础盈利指标](#二基础盈利指标) - 净盈利、毛利、毛损、盈利因子(PF)、胜率、平均盈利/亏损、盈亏比、期望收益 - [三、风险与回撤指标](#三风险与回撤指标) - 最大回撤、夏普比率、Sortino、Calmar、最大连胜/连败 - [四、稳健性指标](#四稳健性指标) - 滚动PF、滚动窗口盈利比例、蒙特卡洛回撤模拟 - [五、Walk-Forward 验证指标](#五walk-forward-验证指标) - WFE、IS-OOS PF 相关性 - [六、参数扫描指标](#六参数扫描指标) - 高原、过拟合评分、峰值孤立度、高原覆盖率 - [七、MAE/MFE 指标](#七maemfe-指标) - [八、What-If 场景含义](#八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 格"的区域。 **怎么检测**: 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**:本工具用**逐笔口径**(每笔交易作为一个样本),非年化口径。数值与教科书不同,**仅用于横向对比两份报告**,绝对值不可与年化夏普对齐。 - **滚动 PF**:100 笔窗口,步长 25 笔。 - **蒙特卡洛**:1000 次打乱,固定随机种子 42(可复现)。 - **高原检测**:80 分位阈值,4-连通,最小面积 4 格。 - **MAE/MFE**:M1 周期 K 线扫描近似(非 tick 级),略有误差但对 TP/SL 决策足够。 --- 如有疑问,对照本表回看 [README.md](README.md) 里的模块说明与各 HTML 报告的具体数值。