如何从交易日志计算盈亏比

盈亏比等于总盈利除以总亏损。公式只需几秒,真正重要的是交易如何记录和分组,因为这决定了结果数字是否有意义。

如何从交易日志计算盈亏比

最近更新:

简而言之。 盈亏比(profit factor)等于总盈利除以总亏损:把每笔盈利交易的利润加起来,把每笔亏损交易的亏损作为正数加起来,然后用第一个和除以第二个和。公式本身几秒钟就能算完。真正决定结果数字是否有意义的,是在做除法之前交易如何被记录和分组,因为被排除的保本交易、遗漏的手续费或样本过小,都可能在底层策略没有任何变化的情况下改变结果。

盈亏比高于 1.0,表示一个系统在所统计的交易中赚的比亏的多;低于 1.0 则相反。数字本身很简单。要得到真正反映策略、而不是数据拼凑方式产物的盈亏比,交易日志中的原始交易记录就成了决定性因素。

一句话说明盈亏比衡量什么

盈亏比比较一组交易中赢得的总金额与输掉的总金额,回答的问题比它有时被认为的要窄:每亏一美元,有多少美元赚回来。它不涉及胜率,也就是策略有多常正确,也不涉及任何单笔交易相对于所承担风险的大小;关于它与这些其他数字如何配合,参见什么是盈亏比和为什么不看 R 倍数胜率会骗人。本指南只聚焦于机制:从真实的交易记录中取出两个和,并正确地相除。

公式以及两边各算什么

盈亏比等于总盈利除以总亏损,其中总盈利是所有以正数平仓的交易的金额结果之和,总亏损是所有以负数平仓的交易的金额结果之和,除法时取正数。一个总盈利为 700、总亏损为 350 的策略,盈亏比正好是 2.0,这符合 Babypips 的 Forexpedia 等处使用的标准定义。两个和里不应放入其他任何东西:不含未平仓头寸,不含正在单独评估的另一策略或账户的交易,也不含对某笔交易"本来应该赚多少"的粗略估计。

第 1 步:取出原始交易记录,而不是汇总

计算需要每笔已平仓交易的实现盈亏金额,而不是平均值,不是胜率百分比,也不是账户净值曲线。能为每笔交易记录入场、出场和实现结果的交易日志是数据来源;只显示某段时期净值变化的券商对账单,事后无法再拆回到单笔交易的结果。取出所测量时间窗口内的完整列表,每笔已平仓交易一行。

第 2 步:把每笔交易归入一个类别

每笔已平仓交易归入三类之一:盈利(结果为正)、亏损(结果为负)或保本(为零,或接近零到手续费使正负号变得模糊)。盈利和亏损的交易没有歧义。保本交易是大多数计算错误的起点,因为它们不向任何一个和中添加金额,却仍然影响比率该如何结合交易笔数来解读;一个 40 笔盈利、10 笔亏损、50 笔保本的策略,与一个 40 笔盈利、10 笔亏损、完全没有保本的策略,实际情况不同,即使盈亏比数字完全相同。

重要提示。 把保本交易排除在计算之外是正确的,因为它们对任何一个和都没有贡献,但把它们完全排除在交易笔数之外,就歪曲了策略实际产生明确结果的频率。应把盈亏比与总交易笔数和胜率一起报告,而不是作为单独的一个数字。

第 3 步:分别汇总总盈利和总亏损,绝不要相互抵消

最常见的机械性错误,是先把每笔交易的亏损从盈利中扣除再求和,这会得到一个净盈亏数字,而它无法再还原为总额盈亏比。总盈利只是盈利交易之和;总亏损只是亏损交易之和,各自独立相加。一个交易者有 10 笔各盈利 50 的交易和 5 笔各亏损 40 的交易,总盈利为 500,总亏损为 200,盈亏比为 2.5,而不是基于 300 净结果的某种计算。

来自真实交易记录的计算示例

交易分组 交易笔数 总金额结果
盈利交易 7 +560
亏损交易 3 -280
保本交易 2 0

总盈利为 560,总亏损为 280(取正数),所以盈亏比是 560 除以 280,等于 2.0。两笔保本交易对任何一个和都没有贡献,但完整的情况是:共 12 笔已平仓交易,有明确结果的交易中胜率为 58%,盈亏比为 2.0,这三个数字放在一起,比任何一个单独说明的信息都更多。

柱状图:对比示例交易日志中的总盈利与总亏损,得出盈亏比 2.0

数字在哪里悄悄被扭曲

有几个错误会在策略实际交易方式毫无变化的情况下扭曲盈亏比。在每笔交易的结果中漏掉交易手续费和佣金,会抬高总盈利、低估总亏损,因为成本对盈利和亏损交易都适用,却更明显地缩小净盈利的部分。把不相关的策略或时间周期的交易混入同一个计算,会把两种不同的优势混成一个有误导性的数字。样本太少,不足约 20 到 30 笔已平仓交易时,一笔异常大的盈利或亏损就可能主导比率,而更大的样本会将其平滑。对未平仓、未实现的头寸而不是已平仓的交易计算盈亏比,是把一个快照与一个已完成的结果混在一起,价格每次变动,这个数字都会改变,尽管交易本身并没有真正了结。

分段计算:按策略、按品种、按时间窗口

对整个账户历史计算的单一盈亏比,混合了交易者运行过的每一个策略,这会掩盖一个事实:某一种方法可能承担了全部结果,而另一种在底下悄悄亏钱。对每个策略标签、每个品种,或每个账户(如果交易不止一个)分别运行同样的两个和的计算,可以分离出交易的哪些部分真正产生了优势。同样的逻辑适用于时间窗口:每当一批新交易平仓就重新计算一次滚动的 30 天或 90 天盈亏比,比起把好月份与近期平均在一起的单一全部时期数字,能更快发现策略偏离其历史优势。

这也是手动电子表格方法在实践中往往失效的地方,因为每次重新计算都要按策略标签或滚动窗口重新筛选并重新汇总总盈利和总亏损,繁琐到大多数交易者检查的频率远低于策略实际结果变化的频率。入场时对每笔交易记录的字段,例如策略标签或形态类型,才使事后的这种分段成为可能;只记录金额结果而没有其他背景的交易记录,日后无法再拆分成有意义的分组。

计算出来之后如何解读结果

盈亏比范围 通常表示 信任它之前要检查什么
低于 1.0 样本中亏损超过盈利 确认连续亏损不是一两笔异常交易造成的
1.0 到 1.5 边际盈利,优势微薄 查看交易笔数;15 笔交易上的微薄优势与 150 笔上的不同
1.5 到 2.0 对大多数策略来说是扎实可用的优势 核实手续费和保本交易的处理是否一致
高于 2.0 在所测样本上是强劲的结果 非常小样本上的较大数字需要额外审视,而不只是认可

盈亏比能很好地回答一个问题,却对其他几个问题只字不提,所以将它与胜率和核心业绩指标配对,而不是孤立解读,才能避免这个数字单独误导人。

本文仅供教育目的,不构成财务或投资建议。交易存在重大亏损风险,任何策略的过往业绩均不代表未来结果。

用电子表格手动计算盈亏比,在交易笔数增加或需要对数十笔已平仓头寸核对手续费之前都行得通。BitStat 交易日志自动记录每笔已平仓交易,并在新交易进来时正确保持总盈利和总亏损分开,所以随着日志增长,数字始终准确,而不必每次检查时都从头重建。

常见问题,一一解答

常见问题

盈亏比的公式是什么?
盈亏比等于总盈利除以总亏损。总盈利是每笔盈利交易金额结果之和,总亏损是每笔亏损交易金额结果之和,除法时取正数。
保本交易算入盈亏比的计算吗?
保本交易对总盈利和总亏损都没有贡献,所以从两个和中排除是正确的。它们仍应计入总交易笔数,并与盈亏比一起报告,因为保本交易很多的策略,其实际情况与没有保本交易的策略不同。
为什么对每笔交易先用盈利减去亏损会得出错误的答案?
先对每笔交易做净额抵消再求和,得到的是净盈亏数字,而不是总盈利和总亏损,而净数字无法还原为准确的盈亏比。盈利和亏损必须从一开始就分别求和。
需要多少笔交易才能得到可靠的盈亏比?
没有严格的界限,但少于大约 20 到 30 笔已平仓交易时,一笔异常大的盈利或亏损可能主导比率,而更大的样本会将其平滑。小样本上的盈亏比应视为初步结果,而不是定论。
计算中是否应包含手续费和佣金?
应该。若在每笔交易结果中漏掉交易成本,会抬高总盈利、低估总亏损,因为手续费对盈利和亏损交易都适用,却更明显地缩小净盈利。
盈亏比应该按策略计算还是按整个账户计算?
如果运行不止一个策略,两者都应该。单一的账户整体数字可能掩盖一个盈利策略在承担另一个亏钱策略的结果,所以按策略标签分别计算盈亏比,可以分离出真正的优势来自哪里。