Skip to content

均线择时最危险的,不是参数,是起点|GTAA实测:同一规则,回撤差4个点

作 者:老余捞鱼

原创不易,转载请标明出处及原作者。

技术讨论不构成任何操作建议。不荐股、不卖课、不承诺收益。
市场有风险,请合法合规投资。

本文约 3300 字 | 预计阅读 8 分钟,后半是一处回撤口径的核对,建议先收藏

2008年,标普从最高点到最低点跌了50.8%。2022年又跌了18.2%。这两次,我原来的策略库里没有一条离场规则能真正照着执行。

难的地方拆开看是两处。一处是什么时候把股票换成现金,另一处是换成现金以后,这笔钱该怎么算。前者需要信号,后者需要口径。我想写这篇,是因为这两处其实都有现成答案,而现成答案里有一处是错的。

下面分两部分。前半部分讲规则怎么走、跑出来什么数、那笔现金值多少。分隔线之后,是我自己核对出来的三处问题。其中一处,会把这套东西最强的那个数字改小4个百分点。

橙线是择时版,灰线是全程持有,下半部分是回撤。表头里的负16.3%,第六节我再回来讲。


一、规则四条,一分钟讲完

这套东西叫GTAA,全球战术资产配置,2007年前后由Mebane Faber写出来。名字听起来唬人,规则却简单到能背下来。

第一步,选四档,每档25%。美股用SPY,海外股票用EFA,债券用AGG,房地产信托用VNQ。四档等权,加起来正好100%。

第二步,每档单独看。月末收盘价高于自己最近10个月的均价,就拿着这25%;低于就退出来,这25%变成现金。四档各看各的,互不干扰。

第三步,月末定,下个月执行。这个月最后一个交易日收盘之后算一遍,决定下个月拿什么。

第四步,中途不看不动。月中怎么晃都不管,等下一个月末再说。

四条讲完。它不判断贵不贵,不看基本面,只回答一件事:这个资产现在还在不在自己的10个月均线上面。

我一开始觉得太糙。10个月均线是个很钝的东西,慢、滞后,横盘里还会来回翻。说实话,钝到这种程度,我第一版是当笑话看的。

但它钝得可执行。你不需要在盘中做任何决定,一个月只有一个动作要做。

二、先看结果,收益回撤一起被砍

跑完先看好的一面。

组合累计年化最大回撤年化÷回撤
SPY全程持有823%11.17%50.78%0.220
四档等权,不择时324%7.12%45.62%0.156
GTAA,现金零息146%4.38%21.59%0.203
GTAA,现金计息170%4.83%20.61%0.235

最大回撤那一列,是这套东西的全部卖点。全程持有掉50.78%,四档等权也掉45.62%,加了一条均线之后掉20.61%。少掉的那30个百分点,就是很多人愿意为它付的价钱。

代价在第二列。21年下来,择时版累计170%,四档等权324%,全程持有823%。同一段时间,同一批资产,只多了一条规则,收益少了一半。

这里有个反直觉的地方。四档等权用12.71%的波动换到7.12%的年化,择时版用8.37%的波动只换到4.83%。波动降了三成,收益降了三成二,两头一起降,等于白忙。

真正拉开差距的是最后一列。年化除以最大回撤,择时版0.235,全程持有0.220,四档等权0.156。择时版赢,但只赢一点点。

我觉得这一点点才是全部问题所在。它值不值,取决于你能不能扛住50%的回撤。扛得住,这条均线是白交手续费;扛不住,它是你唯一能睡着的原因。

2005年10月到2026年10月。上半是对数轴净值,下半是距最高点。橙线的坑浅,但整条线一直在下面。

三、0.46个点,是最容易漏的一步

表里最后两行的差别只有一件事:在场外的那笔钱要不要算利息。不算利息,年化4.38%;按13周国库券算,年化4.83%。差0.46个百分点,累计下来是146%对170%,24个点。

这件事看起来小,实际是最容易漏的一步。写回测的时候,现金仓位经常被当成一个零收益的占位符。代码跑得通,曲线也画得出来,数字就是偏低。你那份回测里,场外这笔钱是按0算的吗?

我这21年里,平均27.3%的仓位在场外,同期13周国库券平均1.79%。粗算一下,27.3%乘1.79%是0.49个点,跟实测的0.46差不多。差的三个基点来自现金进出的时点,不是一直满打满算。

国内的人要换一个参照。货币基金、国债逆回购、券商现金理财,都可以当那个零钱生息的口子。年化2%上下,跟这份数据里1.79%的平均水平接近。真正要记住的不是具体收益率,是别把它当成0。当成0,你就是在给自己造一个更差的策略。再拿这个更差的策略去证明择时不划算。

四、月末那一步,差一天就全变

月末这个说法,落到代码上要拆成两件事:月末是哪个交易日,信号什么时候生效。

日历上的月末经常不是交易日。2018年6月30日是周六。如果直接拿日历月末当索引,再去对齐日线,这个标签的落点就不定了。要么落到前面最近的交易日,要么被推到后面。两种落法的滞后不一样。规则说的是月末收盘后决定、下个月开始执行。滞后必须恒定,不能这一月两天、下一月零天。

写法是把日历月末落到它之前最近的那个真实交易日,再整体后移一期。代码十来行。

def monthly_signal(close, n=10):
    idx = close.index
    m = close.resample("ME").last()
    cal = m.index
    pos = idx.searchsorted(cal, side="right")
    m.index = idx[pos - 1]
    sma = m.rolling(n).mean()
    return (m > sma).astype(float)

w = monthly_signal(close) * 0.25
daily = w.reindex(close.index, method="ffill")
w_daily = daily.shift(1).fillna(0.0)

第五行那个searchsorted减一,做的就是落交易日。最后一行shift(1)是纪律,本月收盘之后才知道的事,只能管下一根。

均线策略在回测里最常见的作弊方式,不是参数调得多细。是用当天收盘价算了信号,又用当天收盘价成交。少一次shift,收益能凭空多出好几个点,曲线看起来毫无破绽。

我用的是月末数据,标签本身就是交易日,这一步不会错。换成日线,这两行是必须的。

五、27%的时间在场外,一次平均待5个月

回撤数字是纸面的,待在场外是体感。21年里这套规则一共离场30次,平均一次4.9个月,中位3个月。最长的一次25个月,从2007年7月一直到2009年7月。

25个月是什么概念?两年多,账户里一半以上是现金,看着市场从崩到反弹,一分钱没赚。而且那两年你会不断听到见底了、这次不一样、机会来了。

平均数会骗人。30次里有一半在3个月以内结束,看起来还好;可尾部那几次是12个月、14个月、25个月。我把这30条一条条摊开看的时候,2020年那一段最扎眼。三月离场,十一月才回,中间八个月指数在往上走。2015年6月到2016年5月,12个月;2018年2月到2019年3月,14个月;2022年2月到2023年1月,12个月。这几段都是真实的熊市,也正是这条规则最该起作用的时候。

我的判断是这样。这套东西能不能用,不看它能不能降回撤,看你能不能坐住那25个月。坐不住的,回测再漂亮,实盘第二个月就会手动回去。

平均每年信号翻转7次。听起来不多,但每一次都要求你在月末做决定,而且这个决定多半是反人性的。涨得好好的时候退出来,跌得最惨的时候还不敢进。

六、16.3%是算小的,实际20.6%

先说结果。取2007年4月到2026年10月这一段,同一套规则,我跑出年化4.38%。平均31.6%的时间空仓,最大回撤16.32%。

开篇那张图右上角有三个数,我看了好几遍才认全。夏普0.56、最大回撤负16.3%、年化4.7%。16.3%对得上。空仓那一项我是31.6%,图上写31.0%,也算贴近。年化差0.3个点,差在债券那档拿AGG替了BND,还有成本模型。

然后我改了一件事,别的都不动。

原来那段数据是从2007年4月开始算均线的。均线要10个月,所以2007年4月到2008年1月这10个月里,四档全部没有信号,全部空仓。现在把均线改用2005年以来的完整历史去算,这10个月就有信号了,会正常持仓。

同一段价格,同一套规则,只改这一处。最大回撤从16.32%变成20.61%,年化从4.38%变成3.93%,年化除以回撤从0.268掉到0.191。

原因很朴素。回撤是从最高点往下算的。头10个月不持仓,等于把最高点钉在起点上。后面再怎么跌,都是从那条平线开始量,百分比自然小。而一旦这10个月正常持仓,账户会在2007年10月先创一个新高。2008年再跌下来,回撤就从那个新高开始量。

两条线用同一段价格,唯一差别是均线在窗口内重算还是用完整历史。蓝色竖带就是头10个月的空仓。

0.191对0.220。改完这一处,这套东西最强的那个指标,就比不过一直拿着不动了。

均线要10个月,任何从某一天开始回测的人都会撞上这个空档。差别只在于样本起点是不是刚好压在拐点前面。2007年4月这个起点,离雷曼还有17个月,是最容易把回撤数字压小的一种起点。

所以看到最大回撤16%这类数,第一件事是问起点。起点往前挪两年,同一套规则同一个市场,回撤能差4个百分点。再往前挪,数还会动,我也不敢说20.6%就是终点。

七、四个资产,其实是三重股票

四档等权听起来分散,我一开始也这么以为。实际算一下月收益的相关系数,SPY和EFA是0.86,SPY和VNQ是0.73,SPY和AGG只有0.24。

也就是说,四档里三档是一回事。美股、海外股、房地产信托,本质都是股票风险,只是地域和行业不同。真正能对冲的只有AGG那一张债。

这个结构在2008年看得出来。那一年择时版跌17.51%,全程持有跌36.79%。跌得少,不是因为分散得好,是因为那条均线把仓位换成了现金。分散在这里帮的忙很有限。

2020年更值得看。那一年择时版跌7.88%,全程持有涨18.33%。三月那一波它离场了,十一月底才回来,那段离场期正好盖住整波反弹。

2022年反过来,择时版跌3.53%,全程持有跌18.18%。这一年它做对了。

三年三种结果,说明它不是稳定跑赢,是稳定地把波动削平。削平的代价是上涨年份跟不上,削平的好处是下跌年份少挨打。两件事都不会缺席。

灰柱全程持有,橙柱择时版,蓝线是当年平均现金占比。2008和2022蓝线很高,2020也高,但那年是白躲。


观点总结

回到开头那两处。

什么时候离场,这一处解决了大半。规则明确,一个月一个动作,21年里30次,每次都有确定的日子可查。它不告诉你该不该买,只告诉你现在该不该在。

离场之后现金怎么算,这一处完全解决了,但只值0.46个点。别小看这半个点,它是最容易被漏掉的一步,漏了就会得出择时不划算的错误结论。

真正没解决的,是收益。21年4.83%对11.17%,这条均线把一半的收益拿去换了30个点的回撤。这笔交换划不划算,不取决于市场,取决于你账户里那笔钱能不能坐住25个月不动。我自己的打算是只把它用在组合里防守的那一半,进攻那一半不动。

还有一处要记住。这套东西最漂亮的那个数字,16.3%,是把起点掐在拐点前面17个月算出来的。把均线换成完整历史,它是20.6%。同一套规则,同一个市场。

今晚能做的一件事,打开自己的组合,把四档资产各自的10个月均线画出来。看看现在有几档在线上面。然后翻一遍过去五年,标出每一次四档全部掉下去的时间点,量一下那几段持续了多久。量完你会发现,难的不是规则,是那几段。


#GTAA #资产配置 #趋势跟踪 #均线择时 #回撤控制 #ETF组合 #量化回测 #现金管理 #Faber #再平衡 #夏普比率 #卡玛比率

Published inAI&Invest专栏

Be First to Comment

    发表回复