外汇策略测试与 R-squared:优化你的净值曲线

外汇策略测试与 R-squared:优化你的净值曲线

风险提示。 历史统计数据描述的是在一组假设下的过去行为。本页面上的任何指标都不代表未来结果,且杠杆产品会对你的资本带来重大风险。

直接回答

R-squared(决定系数)可以告诉你,在测试的观测值中,净值曲线与拟合线性趋势的贴合程度有多紧密。数值越高,意味着数据点紧密聚集在该曲线周围。数值越低,意味着路径偏离该曲线越远。

这就是它能告诉你的全部内容。具体来说,它不会告诉你趋势是上升还是下降,过程中的回撤是否可以承受,底层逻辑是否合理,或者是否会出现类似的情况。

这一点很重要,因为 2019 年版本的这篇文章将较高的数值视为单纯的更好,而这种表述方式是有误的,应当予以纠正,而不是含糊其辞。

我曾弄错的两个定义

这两个错误都源于同一个原因:用视觉描述而非数学方式来描述统计量。

“当净值曲线不接触拟合线时,数值为零。” 这并不准确。计算过程与点是否物理上位于线上无关。它是将观测值与拟合值之间的残差大小与数据的总变异进行比较。接近零的数值意味着线性拟合几乎无法解释该变异,这是一个关于残差量级的陈述,而不是关于接触的问题。

“完美的 100 需要仅两个观测值。” 这也是错误的。只要每个点都精确位于拟合线上,任何数量的点都可以产生完美拟合。两个点总是会产生完美拟合,因为两个点定义了一条直线,但这属于特例而非规律。在四百个已平仓头寸中出现一条完美的线性净值曲线在实践中是极其罕见的,尽管数学上并不禁止。

对于传播了这两个错误,我深表歉意。尤其是第二个错误,曾被读者多次向我反馈,这就是糟糕的解释是如何传播开来的。

计算过程的原理

取你的净值曲线。使用线性回归拟合一条趋势线。然后测量观测值的变异中有多少是由该拟合趋势所解释的。

结果根据平台不同,以 0 到 1 或 0 到 100 之间表示,它只回答一个问题:线性拟合对该数据的描述程度如何?

数值其含义
接近 100观测值紧贴拟合趋势
中间范围存在显著偏差,但线性模式仍然可见
接近 0线性拟合几乎无法解释变异

注意表中缺失的内容。方向、量级、风险。衡量拟合质量的统计量无法报告其中任何一项,因为这并不是它所询问的问题。

亏损策略问题

这是一个本应出现在原文章中的例子。

想象一条净值曲线稳步下降,每月亏损的金额大致相同,且几乎没有偏离该下降路径。对其进行趋势拟合,拟合效果极佳,R-squared 接近 95。

持续亏损仍然是持续亏损。该统计量准确地报告了线性特征,但线性特征从来不是你关心的重点。

示例净结果R-squared数值
A+20%92沿着相当线性的路径获得正向结果
B−20%95非常线性,且持续亏损
C+25%48赚钱了,尽管路径并不规则

示例 B 说明了为什么绝不能仅凭此指标进行判断。示例 C 则是一个更微妙的教训:低数值并不代表策略失败。不规则的路径仍能产生可接受的结果,如果仅因平滑度而拒绝 C,就会丢弃表中表现最好的净结果。

请务必将数值与方向结合起来看。拟合趋势的斜率告诉你事物的走向;而拟合质量仅告诉你走势有多整齐。

它无法确定的事项

  • 策略是否赚钱: 方向存在于另一个数值中。
  • 回撤是否可承受: 路径可以合理地追踪趋势,但其中可能包含你无法承受的回撤。
  • 停滞期是否短暂: 这与上述相关,且是独立测量的。
  • 逻辑是否合理: 拟合质量无法说明入场为何发生。
  • 结果是否会持续: 它只描述历史。
  • 样本是否充足: 仅十二个观测值就能产生看似完美、实则毫无意义的拟合。

最后一点值得单独列出一个章节。

样本量改变一切

基于少量观测值计算出的高数值几乎没有意义,因为通过少量点拟合出一条线很容易,而且它几乎无法告诉你生成这些点的过程。

我在实践中使用的最低阈值:至少有 10 个观测值,该数字才值得展示;至少有 300 个或更多,我才会认真对待。我自己的收藏中有一个例子,其读数旁显示的计数为 333,这大约是该统计数据开始产生信息的领域。

这些数字是工作偏好,而非经过验证的标准。我没有测试过 300 是否比 200 或 500 更适合作为截断点,据我所知,其他人也没有测试过。

余额线还是净值线?

原始文章将“净值线”、“余额图”和“余额线”交替使用。它们并不是同一回事。

序列记录内容
余额仅在头寸关闭且结果实现时发生变化
净值包括当前任何未平仓头寸的浮动价值

从已实现余额计算得出的读数与从盯市净值计算得出的读数不同,有时差异巨大,因为一个持有亏损头寸数周的策略在余额序列上看起来比在净值序列上要平滑得多。

任何报告此指标的平台都应说明它使用的是哪种序列。如果文档没有说明,请询问。

水平轴上的内容

极少披露,且它会完全改变解释方式。

计算需要轴上的某些内容,而不同平台选择不同:

  • 头寸数量: 衡量从一个已关闭头寸到下一个头寸的一致性。
  • K线数量: 将读数与图表周期而非活动挂钩。
  • 日历时间: 包括没有任何交易的阶段。
  • 每日或每周采样: 在拟合前平滑短期波动。

一个每年交易两次的策略,按头寸数量衡量与按日历时间衡量看起来非常不同,因为日历版本将每个静止月份都计为数据,而头寸版本则忽略它们。

每当你发布读数时,值得披露的设置:

设置应说明的内容
拟合序列余额或净值
自变量头寸数量、K线数量或时间
采样频率每个头寸、每日、每周
刻度账户货币、百分比或归一化
显示范围0 到 1,或 0 到 100
存款与取款包含、排除或调整
未平仓头寸计数或忽略

两个针对同一策略报告不同读数的人,通常是在其中一行上存在差异,而不是在数学逻辑上存在分歧。

存款和规模会使其失真

净值线可能由于与策略质量无关的原因显得更整齐或更陡峭:

  • 期中增加或提取资本。
  • 随着账户增长,头寸规模增加。
  • 复利,这会让原本线性的路径向上弯曲。
  • 中途改变了杠杆。
  • 在一段良好的行情后调整了每笔头寸的风险。
  • 多个策略在同一个账户中同时运行。

复利值得特别关注。产生稳定百分比增长的策略会产生指数级的账户路径,这与线性趋势拟合度很差,尽管这正是你想要的。使用对数拟合,或者基于百分比收益率而非货币金额进行计算,可以正确处理这个问题。

结合其他内容进行解读

指标衡量内容不足之处
R平方拟合趋势周围的线性度对方向和风险保持沉默
净结果总历史收益或损失忽略路径过程
最大回撤最大峰值到谷值的跌幅对一致性没有任何说明
利润因子总收益对总损失在小样本下不稳定
头寸计数观测值数量数量不代表质量
最大停滞期没有新高点的最长时期无法捕捉损失深度
样本外结果在未见数据上的表现仍取决于所选样本

我之前声称较高的读数意味着更少的剧烈下跌和更少的停滞,这个说法太绝对了。两者通常会同时移动,且更整齐的路径通常确实包含更浅的跌幅,但“通常”并不意味着“必然”。一条线可以在包含一个足以让你的账户爆仓的跌幅的同时,仍能很好地追踪其趋势。请单独测量回撤。务必如此。

解读组合

模式合理的读数无法确定的内容
高读数,上升趋势历史遵循了相当一致的上升路径未来结果或可接受的风险
高读数,下降趋势持续积累亏损任何可用的东西
低读数,正收益通过非正规途径获利该方法存在缺陷
低读数,负收益无利可图且不稳定失败的原因
样本内表现高,样本外表现低历史数据的整洁性在未见数据中未能存续恶化的原因
在几个周期内表现相似在线性测试中表现相当稳定优势依然存在

第五行是值得关注的一行。在开发数据上根据此指标选择策略,然后发现该读数在你从未接触过的数据上崩溃,这是典型的过度拟合而非发现规律。

优化平滑度是有代价的

生成软件允许你通过此指标搜索候选对象,将其作为接受阈值,或针对现有候选对象进行优化。这三种方式都可行,但也同样带有风险。

在数千个生成的候选对象中进行筛选,并保留那些具有最整洁历史路径的对象,这是一个选择过程。当样本池足够大时,选择过程会偶然产生赢家,而一个在你的测试期间恰好产生线性结果的策略,其背后可能没有任何可重复的规律。

更糟糕的是,平滑度恰恰是曲线拟合结果倾向于展示的属性,因为高度拟合历史数据的策略在构建上就能完美地重现这些数据。

因此,请将其作为多个过滤器之一,而不是唯一目标。之后,样本外确认、蒙特卡洛压力测试、行走前分析以及在模拟账户上的前向测试仍然是必要的。

这在 EA Studio 中是如何运作的

首先声明:我与 Expert Advisor Studio 存在商业关系,并销售相关的课程。以下内容描述的是一种实现方式,而非获取该统计数据的唯一方法。

该读数出现在回测输出面板中,显示的指标可以通过设置菜单进行配置,因此你可以根据评估需求,将其更换为持仓次数或盈亏比。

它可以应用于三个地方:

  1. 生成器搜索方法: 不再按净余额对候选对象进行排名,而是按此读数进行排名。这样生成器会更倾向于选择历史路径更整洁的对象。
  2. 接受标准: 设置一个底线(例如 70),低于此值的候选对象将永远不会进入你的收藏。
  3. 优化目标: 先按净余额生成(这是大多数人的需求,因为结果最终比整洁度更重要),然后再针对线性度对存活下来的策略进行优化。

我个人收藏的读数跨度很大:一个候选对象的读数为 77.35,其他以该指标为优化目标的候选对象读数分别为 88.09、89.16 和 95.99。其中一个显示为 92.64,同时最大停滞时间为 13.5%。

我在原文中将 92.64 描述为“非常好”。但它是相对于什么而言呢?我从未发布过生成候选对象的读数分布,也从未测试过高分策略是否在样本外表现优于低分策略。在有人完成这项工作之前,请将这些数字视为工作流偏好,而非标准。

常见错误

  • 在没有方向感的情况下阅读: 这是最严重的错误,也是我之前的文章所鼓励的错误。
  • 在极小样本上过度信任: 十个观测值证明不了任何问题。
  • 假设它能限制回撤: 这是另一个指标,属于不同的问题。
  • 仅针对它进行优化: 这会导致选择出的策略仅具有一致性的假象。
  • 跨不同计算设置进行比较: 持仓数和日历时间读数是不可比的。
  • 忽略复利: 这会惩罚你真正想要的增长模式。
  • 将阈值视为已验证: 我的阈值并非如此,我也怀疑其他人的也不是。

实用检查清单

在让此统计数据影响决策之前:

  1. 确认平台使用的是哪种序列:余额还是净值。
  2. 确认横轴代表什么。
  3. 检查观测次数;如果低于几百次,请大幅降低其权重。
  4. 在进行任何操作前,先阅读拟合趋势的方向。
  5. 分别阅读最大回撤和停滞时间。
  6. 将样本内读数与样本外读数进行比较。
  7. 如果存在入金、出金和复利,请进行调整。
  8. 将任何阈值视为你个人的工作偏好。

常见问题解答

这与相关系数是一样的吗?

两者相关但有区别。对于简单的线性拟合,R平方等于该统计量的平方,在此过程中符号会被舍弃。该基础数值从负一到正一,既能告诉你方向,也能告诉你强度;而对其进行平方运算会将一切压缩到零到一的范围内,从而使方向完全消失。这种符号的丢失正是为什么下降的净值曲线仍可能获得高分的原因,也是为什么必须通过另一个独立的数值来读取方向。

那调整后的R平方呢?

调整后的版本会对那些未能显著改善拟合度的解释变量进行惩罚,这在多元回归中非常重要,否则研究人员可能会无休止地增加预测变量。对于单预测变量的净值曲线拟合,这种调整在实际操作中几乎没有区别,因此大多数交易平台报告的都是未调整后的数值。如果你进入更复杂的建模领域,了解这种区别是很有价值的,因为随着变量的累积,普通版本的数值会机械性地上升。

数值越高是否意味着风险越低?

并非直接相关,尽管两者经常同时出现。更平滑的历史路径通常包含较浅的回撤,因此这种关联是真实的,但这是一种趋势而非保证。即使是在一个长期的样本中,单次严重的资金回撤也可能存在于一个整体呈线性发展的路径中,而不会显著降低拟合统计量。风险值得拥有自己的衡量标准:最大回撤、最长停滞期以及最差的连亏序列,这些都能回答该指标无法回答的问题。

我可以在交易平台之外计算它吗? 

可以,非常容易。导出你的已平仓头寸历史记录,将运行余额放在一列,将头寸数量放在另一列,然后使用电子表格的 RSQ 函数或几行 Python 代码即可。自己动手计算有一个优势:你可以控制设置,从而精确知道是哪个序列和哪个轴产生了该数值。这种透明度比出现在一个计算方法不明的面板中的数字更有价值。

它与夏普比率(Sharpe ratio)相比如何?

这是完全不同的问题。夏普比率将平均超额回报与波动率联系起来,产生一个结合了方向和离散度的风险调整后表现数值。而 R平方仅描述线性模型的拟合程度,完全忽略了幅度。一种策略可能在其中一个指标上得分很高,而在另一个上得分很低。两者并不能互相替代,同时阅读这两个指标以及回撤数据,比仅看其中之一能提供更完整的图景。

我应该拒绝低于某个数值的策略吗?

只有当你已经确定了该阈值对你的意义时才应该这样做。当一致性对你的风险承受能力至关重要时,剔除不稳定的历史路径是合理的,因为忍受一条锯齿状的净值曲线确实比忍受一条平稳的曲线要难得多。但为了追求更平滑的边际收益而拒绝一个盈利但波动较大的策略,是在优化舒适度而非优化结果。决定好你优先考虑的是什么,并保持诚实。

披露: 作者与 Expert Advisor Studio 存在商业合作关系。本文内容仅供教育参考,不构成任何交易建议或购买软件的建议。历史统计数据仅描述过去的情况。

About the Author

Petko Aleksandrov

Chief Mentor & Founder

Founder of EA Academy and Algo Trading Space with over 100,000 students educated globally. Petko combines practical trading experience with rigorous testing methodology, setting new standards for transparency in the algorithmic trading industry.

View Profile

Related Posts

2026 年初学者最常犯的四大交易错误:先解决前四个
2026 年初学者最常犯的四大交易错误:先解决前四个

风险提示。 杠杆产品会对你的资本带来巨大风险。大多数零售客户在交易此类产品时都会亏损。以下内容均不构成个人建议,即使避免了这里描述的所有错误,你仍可能面临损失。 直接回答…

9/11/2026
如何在 2026 年扩大资管账户规模:在增加头寸前先计算回撤数学

简短回答: 扩大资管账户(funded account)意味着两种不同的含义,你需要明确你正在进行哪一种。本指南涵盖了头寸规模扩大(position-size scaling),即在你已持有的账户中增加风险,并认为决策应由你的回撤空间而非回报率来驱动。我们在 iFunds 上的 FX JetBot…

9/11/2026
如何在 2026 年扩大资管账户规模:在增加头寸前先计算回撤数学
  • Share

Comments

No comments yet. Be the first to comment!

Leave a Comment

Your email address will not be published. Required fields are marked with *