作 者:老余捞鱼
原创不易,转载请标明出处及原作者。

技术讨论不构成任何操作建议。不荐股、不卖课、不承诺收益。
市场有风险,请合法合规投资。
本文约 3300 字 | 预计阅读 8 分钟,后半是一处回撤口径的核对,建议先收藏
2008年,标普从最高点到最低点跌了50.8%。2022年又跌了18.2%。这两次,我原来的策略库里没有一条离场规则能真正照着执行。
难的地方拆开看是两处。一处是什么时候把股票换成现金,另一处是换成现金以后,这笔钱该怎么算。前者需要信号,后者需要口径。我想写这篇,是因为这两处其实都有现成答案,而现成答案里有一处是错的。
下面分两部分。前半部分讲规则怎么走、跑出来什么数、那笔现金值多少。分隔线之后,是我自己核对出来的三处问题。其中一处,会把这套东西最强的那个数字改小4个百分点。

一、规则四条,一分钟讲完
这套东西叫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%的回撤。扛得住,这条均线是白交手续费;扛不住,它是你唯一能睡着的原因。

三、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年再跌下来,回撤就从那个新高开始量。

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%。这一年它做对了。
三年三种结果,说明它不是稳定跑赢,是稳定地把波动削平。削平的代价是上涨年份跟不上,削平的好处是下跌年份少挨打。两件事都不会缺席。

观点总结
回到开头那两处。
什么时候离场,这一处解决了大半。规则明确,一个月一个动作,21年里30次,每次都有确定的日子可查。它不告诉你该不该买,只告诉你现在该不该在。
离场之后现金怎么算,这一处完全解决了,但只值0.46个点。别小看这半个点,它是最容易被漏掉的一步,漏了就会得出择时不划算的错误结论。
真正没解决的,是收益。21年4.83%对11.17%,这条均线把一半的收益拿去换了30个点的回撤。这笔交换划不划算,不取决于市场,取决于你账户里那笔钱能不能坐住25个月不动。我自己的打算是只把它用在组合里防守的那一半,进攻那一半不动。
还有一处要记住。这套东西最漂亮的那个数字,16.3%,是把起点掐在拐点前面17个月算出来的。把均线换成完整历史,它是20.6%。同一套规则,同一个市场。
今晚能做的一件事,打开自己的组合,把四档资产各自的10个月均线画出来。看看现在有几档在线上面。然后翻一遍过去五年,标出每一次四档全部掉下去的时间点,量一下那几段持续了多久。量完你会发现,难的不是规则,是那几段。
#GTAA #资产配置 #趋势跟踪 #均线择时 #回撤控制 #ETF组合 #量化回测 #现金管理 #Faber #再平衡 #夏普比率 #卡玛比率
Be First to Comment