交易系统 XtradingTime

Excel 做资金曲线:四步公式链,以及中途入金会把回撤算小多少

Excel 做资金曲线:四步公式链,以及中途入金会把回撤算小多少
本文目录(7 节)

资金曲线这张图,多数人画出来的版本有两个问题:最大回撤用最高权益减最低权益算,算大好几倍;中途往账户里转过钱,曲线上出现一个台阶,后面的回撤全被低估。这篇给完整的四步公式链,全部可以直接粘贴,并且用一份六笔数据的验算把三种算法的差距摆出来。

列位沿用Excel 统计交易的公式怎么写那一套,两篇用的是同一张表,公式可以直接叠加上去,不需要重建。

一、四步公式链

前提:A 到 H 列是手工录入区,G 列是每笔的净盈亏(已扣掉手续费和税),Q1 单元格填初始资金。数据从第 2 行开始,公式按填到第 201 行写。

第一步,G 列,逐笔盈亏。 这一列是整条链的地基,手工填,必须填净额。填毛利算出来的曲线一定比真实的好看,因为交易成本被藏在了小数点后面。A 股一次买卖的往返成本按 0.102% 估算(印花税 0.05% 单边、双边佣金、过户费 0.001% 双边),高频交易的人这一项会吃掉大半利润。交割单里的费用怎么拆出来,见怎么导出券商交割单做统计

第二步,J 列,累计权益。 J2 写下面这条,然后下拉到第 201 行:

=$Q$1+SUM($G$2:G2)

$G$2:G2 这个写法是关键:起点锚死、终点不锚,下拉之后会变成 $G$2:G3$G$2:G4。两个都锚死或者都不锚,算出来的都不是累计。

第三步,K 列,滚动峰值。 K2 写这条并下拉:

=MAX($Q$1,$J$2:J2)

它算的是「截至这一笔为止,权益曾经到过的最高点」。公式里带上 $Q$1 是因为第一笔如果就亏钱,此前的最高点是初始资金本身。

第四步,L 列和 M 列,回撤。 L2 和 M2 各写一条并下拉:

L2  =K2-J2
M2  =IFERROR(L2/K2,0)

L 是回撤金额,M 是回撤比例(把 M 列设成百分比格式)。最大回撤取的是这一列的最大值,不是最小值

=MAX(M2:M201)

这四步用到的函数只有 SUMMAXIFIFERROR,所有版本的 Excel 和 WPS 都支持,不需要动态数组,也不需要新函数。

资金曲线四步公式链的数据流示意图,从左到右四个方块串成一条链:G列逐笔净盈亏、J列累计权益(标注公式 =$Q$1+SUM($G$2:G2) 并用箭头标出起点锚死终点不锚)、K列滚动峰值(标注 =MAX($Q$1,$J$2:J2),旁注「这是全文最关键的一行」)、L与M列回撤;链条下方另画一条打叉的错误路径,写着「用最高权益减最低权益」,旁边标注「最低点出现在最高点之前时,这个算法会把回撤放大数倍」

二、为什么必须用滚动最大值

回撤的定义是「从曾经的高点跌下来了多少」,而「曾经」这两个字决定了峰值必须是截至当前的滚动值,不是整段历史的全局最高。

用整段历史的最高权益减最低权益,只有在最低点出现在最高点之后时才碰巧对。只要最低点出现在最高点之前,这个算法就会把两段互不相干的行情硬拼成一次回撤。 具体差距看下一节的验算。

三、中途入金出金,会把回撤算小

这是资金曲线特有的一个坑,上面四步解决不了。

你往账户里转了一笔钱,J 列的权益立刻跳上去,K 列的滚动峰值跟着被抬高。问题在于这笔钱不是你赚来的,但它参与了后面所有回撤的计算。结果是回撤期间入金会掩盖回撤,入金之后的回撤会被低估。

解法是改用单位净值法:把账户看成一只基金,入金等于申购,出金等于赎回,这两个动作不产生收益,只改变份额。在原表右侧扩展六列:

R 列,现金流。 手工填,入金为正,出金为负,没有就填 0。

S 列,期初权益。 S2 和 S3 写法不同,S2 单独一条,S3 往下拉:

S2  =$Q$1
S3  =J2

T 列,本期收益率。 T2 写这条并下拉:

=IFERROR(G2/(S2+R2),0)

分母是「期初权益加上本期现金流」,这一步把入金从收益里剔除掉。

U 列,单位净值。 U2 和 U3 写法不同:

U2  =1*(1+T2)
U3  =U2*(1+T3)

U3 往下拉。起始净值定为 1。

V 列,净值的滚动峰值。 V2 写这条并下拉:

=MAX(1,$U$2:U2)

W 列,净值口径的回撤比例。 W2 写这条并下拉,设成百分比格式:

=IFERROR(1-U2/V2,0)

真实的最大回撤取 =MAX(W2:W201)。画曲线时用 U 列(单位净值)而不是 J 列(账户权益),这样曲线反映的是你的能力,不是你的转账记录。

四、一份六笔数据的验算

下面这组数据可以直接抄进表里核对,初始资金 100000,第 4 笔之前入金 100000。

现金流 R净盈亏 G权益 J期初 S收益率 T净值 U峰值 V净值回撤 W
10+30001030001000003.000%1.03001.03000.00%
20−800095000103000−7.767%0.95001.03007.77%
30−60008900095000−6.316%0.89001.030013.59%
4+100000+5000194000890002.646%0.91351.030011.31%
50−9000185000194000−4.639%0.87121.030015.42%
60+120001970001850006.486%0.92771.03009.93%

三种算法算出三个数:

算法最大回撤说明
净值口径滚动最大值(正确)15.42%出现在第 5 笔
权益口径滚动最大值13.59%第 4 笔入金把峰值抬到 194000,第 5 笔的回撤只算出 4.64%
最高权益减最低权益54.82%把 197000 和 89000 这两个毫不相干的时点拼在一起

第二行是这篇要强调的重点。 第 5 笔的时候,你的交易能力实际上已经把净值从 1.03 打到 0.8712,这是全程最深的一次回撤;但账户权益因为刚入了 10 万,看起来只从 194000 掉到 185000,跌了 4.64%。你会觉得自己扛住了,实际上你正在最深的坑里。 用回撤触发减仓或停手的人,这个偏差会让你错过全部的风控信号,三档阈值(8% 减半、15% 停手、25% 停用)见账户回撤到多少该停手

五、画图的四个设置

设置一,选折线图,X 轴用笔数不用日期。 交易记录的时间间隔不均匀,用日期轴会让你在没交易的那段时间看到一条长长的平线,视觉上被拉伸。想看时间维度就单独做一张按月汇总的图。

设置二,纵轴不要从 0 开始。 Excel 默认会把纵轴起点设在 0,一条从 10 万涨到 12 万的曲线会被压成一条几乎水平的线。手动把纵轴下限设成接近你的最低净值。

设置三,加一张水下图。 用 W 列做一张单独的折线图或面积图,纵轴反向(或者用 =-W2 生成一列负数)。这张图比资金曲线更有诊断价值,因为它把「你有多少时间处在亏损状态」直接画出来了。曲线长时间贴在水下的人,问题通常不在胜率上。

设置四,空行不用管。 公式拖到 201 行,没填数据的行在 SUM 里按 0 算,不会污染统计。唯一的副作用是权益列在空行上显示成初始资金,看着别扭但数值不受影响。

资金曲线图与水下回撤图的上下对照示意,上半部分是一条起伏的单位净值折线,标出三个滚动峰值点并用虚线水平延伸;下半部分是与之对齐的水下图,面积向下填充,三段水下区间的深度分别对应上图三次回撤,最深的一段用红色标出并标注「15.42%,发生在入金之后,权益曲线上完全看不出来」

六、四个让曲线骗人的坑

坑一,G 列填的是毛利。 费用不扣,整条曲线系统性上偏,交易越频繁偏得越多。

坑二,只统计了平仓单,忽略未了结持仓。 浮亏挂着不平,曲线上就是一条漂亮的平线。判断方法:把当前持仓按最新价的浮动盈亏也加一行进去,看曲线形状变了多少。

坑三,样本不足 50 笔就下结论。 20 笔算出来的最大回撤基本没有参考价值,你还没走到自己策略的坏运气区间。样本量的推导见回测样本量要多少

坑四,用历史最大回撤当成未来的上限。 历史回撤只是已经发生过的那一次,不是极限。想知道更坏的情况长什么样,需要做随机重排,方法见蒙特卡洛怎么验证系统

写在最后

资金曲线的价值不在于它好不好看,在于它能不能告诉你「现在处在什么位置」。用错口径的曲线会在你最该减仓的时候告诉你一切正常,这比没有曲线更危险。

四步公式链加上单位净值那六列,一次设好就能长期用。真正需要每天做的只有一件事:把 G 列的净盈亏和 R 列的现金流填上。想让这张表进一步回答「哪套打法在赚钱」,就按策略分组做几张同样的曲线,做法见从交易记录里找问题

3秒免费测一下你的”管不住手指数”:journal.xtradingtime.com(记住 3316,就能找到我们)

本文内容仅供教育和参考用途,不构成任何投资建议。交易有风险,入市须谨慎。

微信搜一搜 Tom讲交易

在微信里搜「Tom讲交易」即可关注,每周更新交易教学

推荐课程

合约陪跑实战训练营

不只教方法,更带你实盘执行。从仓位管理到止损止盈,手把手纠正你的交易习惯,建立可复制的盈利系统。

相关图解

一张图看完这件事,适合存下来随时翻

相关文章

交易系统

Excel 统计交易的公式怎么写:可直接粘贴的十四条,含用滚动最大值算的真回撤

网上流传的交易统计表有一个共同的错,最大回撤用最高权益减最低权益。只要最低点出现在最高点之前,这个算法就会把回撤算大一倍以上。本文给出一套固定列位的表格结构和十四条可以直接粘贴的公式,覆盖胜率、盈亏比、期望值、利润因子、用滚动最大值算的真回撤、最长连亏和当前连亏,每条都说清数据在哪几列、公式放哪个单元格、算出来是什么,并附一份五笔假数据的完整验算和旧版 Excel 与 WPS 的替代写法。

交易系统

券商交割单导出到能用,中间有五步:字段对照表和三类必须自己补的数据

交割单导出来只是流水,不是交易记录。它按成交笔数记账,一笔分三次成交就是三行;它没有开仓平仓的配对关系,也没有你当初打算止损在哪。这篇给出导出时的三条限制、一张交割单字段对照表、手续费列怎么拆成佣金印花税过户费、用先进先出把流水配成交易的方法,以及导入统计表之前必须剔除的六类非交易行。

交易系统

用WPS表格做A股每日复盘:自动抓行情,附完整字段和公式

手把手教你在WPS表格里建一张A股复盘表:用「数据-股票」数据类型和FIELDVALUE函数自动抓收盘价和涨跌幅,省掉手抄行情的重复劳动,再配一套逼你回答「为什么」的决策字段。文中说清楚哪些是WPS原生能力、哪些需要装第三方函数库,以及自动抓数在什么情况下会失效。

量化交易

用 Excel 做最简回测:十二列公式跑通一套系统,以及它做不到的三件事

Excel 能做回测,前提是你接受它的边界。这篇给出一个十二列的完整框架,信号、持仓状态、入场价、出场价、R 倍数、累计 R 全部用公式自动算,可以直接粘贴,没有循环引用也不需要宏。同时说清楚 Excel 回测做不到的三件事:盘中触发顺序、滑点与流动性建模、多品种共享资金,以及出现哪四个信号时必须换工具。

交易系统

交易日志记了半年怎么挖出问题:按六个维度切分,哪个维度的期望值差异最大就先改哪个

半年的交易日志本身不产生结论,把它按六个维度切开才会。六个维度是规则、时段、品种、持仓时长、入场后早期浮盈、连亏位置,每个维度把样本分成几组分别算期望值,组间差异最大的那个维度就是你的问题所在。这篇给六个维度的切法、判定阈值、每个维度问题成立时的改法,以及切分时最容易犯的样本量错误:任何一组不足 20 笔,那次切分的结论不成立。

交易系统

全职交易员一天的作息怎么排:五个时段,盘中只占其中一段

全职之后时间从紧缺变成过剩,而过剩比紧缺更难处理。A股连续竞价四小时共 240 分钟,按每天两笔、每笔决策加执行十分钟计,真正在做事的只有 20 分钟,剩下 220 分钟全是等待。这篇给全职交易者的五时段安排,三个可测的验收数(起床时间一周标准差、盘中计划外交易占比、复盘完成率),以及全职特有的三个风险:时间过剩、社交隔离和作息漂移。

觉得有用?关注公众号

扫码或在微信里搜「Tom讲交易」,每周更新交易教学文章

扫码关注 Tom讲交易,或微信搜一搜 Tom讲交易

配套免费工具

交易规则卡片

打开