Skip to content

February 18, 2020

38

Adaptive Risk Parity 投资策略:动态调整UPRO和TMF的比例

作者: physixfan

这几天我还在继续研读Bogleheads论坛上HEDGEFUNDIE的著名帖子,我在《一个简单但有效的投资策略:40% UPRO + 60% TMF》中介绍过这个帖子的内容。如果你还没有读过那篇文章,请先读完再看此文。在众多回帖中,几个人提出了对这个策略的改进版本。

在原始的策略中,之所以建议 UPRO 和 TMF 的比例是40%/60%,其理由是 Risk Parity 的概念,即想让这两部分对整个策略的volatility的贡献相等。原始策略的作者计算了过去40年间这两个标的的平均volatility,以此得到了40%/60%的比例。而改进版策略的思想是,Risk Parity 实际上应该动态的用更短期的volatility来计算,而非使用一个固定的长时间的数字。一个具体的建议是,每个月rebalance一次,rebalance时使用的比例根据过去20天二者的volatility来动态调整。(为什么是20天?因为大家使用的工具 Portfolio Visualizer 好像最短的时间就是20天吧😂。)

之所以这个改进版策略有一定道理,是因为在金融市场上存在的 Volatility Clustering 现象,即 “large changes tend to be followed by large changes, of either sign, and small changes tend to be followed by small changes”。(这个现象意味着金融市场的曲线不是随机游走。)有意思的是,这一现象最初的发现者是 Mandelbrot,没错,就是那个经常伴随着分形图案出现的数学家。

让我们来用过去的数据看看这个改进版策略实际效果到底如何。在 Portfolio Visualizer 中,我对比了一下这两个策略(时间段为2010-2019,没办法,数据没法追溯到更早的时间)。下图中 Timing Portfolio 是改进版策略,40UPRO60TMF是原始策略。

可以看到,改进版策略在这段时间内的确回报率更高,波动更小,Sharpe Ratio 和 Sortino Ratio 也更高。

有一点concern是,改进版策略在这段时间段内 US Market Correlation 更高。而众所周知这段时间美股是表现非常好的一段时间,到底金融危机来了之后会如何。为此我专门看了一下2018年到现在的数据(2018年是美股表现很差的一段时间)。

注意这段时间改进版策略的 US Market Correlation 已经比原始策略更低了。2018年12月是近期美股表现最差的一个月,注意改进版策略的表现在此月是不错的。具体看一下,按照改进版策略,2018年12月时候,UPRO/TMF的比例是26.87%/73.13%。如此低的股票比例正是它在大跌时刻仍然表现不错的原因,而之所以那个月UPRO比例如此之低,就是因为在那前面的一小段时间美股的volatility已经很高了。

个人认为这个改进版比原始版的确更科学一点,基本决定以后rebalance的时候都动态调整比例而不是固定40%/60%了。

很期待下次美股崩盘时候这个改进版策略的表现!


P.S. 每个月计算新的比例,我是用的 Portfolio Visualizer,大家也可以直接点击这个链接:

然后点击底部的 “Timing Periods”,翻到最后底部即可看到最新的比例应该是多少。

【2020.2 更新】很不幸 2020.2 开始 Portfolio Visualizer 已经不免费开放 risk parity 比例计算功能了。网友Brian在Github上贡献了一份开源代码帮助大家计算,有需要的朋友们请到这里查看代码:

有了新的比例之后,去M1Finance上面点一下即可一键rebalance。


我在雪球开了个组合记录一下这个策略的实际表现,大家感兴趣的话可以来这里看:


友情提醒:此策略rebalance频率高的话,可能会产生很高的税,因此此策略不太适合在 taxable account 里操作,更适合在 tax advantage account (401k, Roth IRA 等) 里操作。

Read more from Investment
38 Comments Post a comment
  1. Roy
    Aug 5 2019

    可以具体讲解一下怎么计算得到新比例吗,不是很懂technical details。

    Reply
    • Aug 21 2019

      Portfolio Visualizer 是个很好用的工具,文章里有个链接,指向的就是这个策略的数据。可以翻到 “Timing Periods” 里面最下方 里面有它计算出来的数字。

      Reply
      • harry
        Aug 22 2019

        有个疑问,像这样每个月rebalance,不是会造成很多次的short term capital gain吗?那交的税是不是会多很多

      • Sep 8 2019

        在这回复一下税的问题吧.. 建议用 Roth IRA 玩这个策略,否则确实会有很多税。。。

      • Will
        Jan 7 2020

        P大,想问下我如果一开始买入这个组合的资金比较少,之后可以靠每月买入更多的相应份额手动达到rebalance的效果吗?这样做单纯是为了避免capital gain tax,长期这么做会有什么弊端吗?
        我现在是NRA要30%的tax,再熬一两年就是RA可以short term的tax可以降低到10%左右,但想现在就开始投资这个策略,您有什么建议吗?

      • Jan 8 2020

        可以通过新的资金达到不卖出就rebalance的效果。长期看 也许最终会有一天这里面的资金会增涨到你新入的钱不足以rebalance吧😂

      • harry
        Sep 14 2019

        查了一下Roth IRA
        in 2019, Roth IRAs allow for contributions of up to $6,000 per year — or $7,000 if you’re 50 or older — and you can use it in addition to a 401(k). (Those limits are up from $5,500 and $6,500 in 2018.)
        每年6000感觉太少了。。。我觉得这个动态策略蛮不错准备投不少钱。。。

  2. hunwing
    Sep 1 2019

    你會在每月底行一次portfoliovisualizer, 看看UPRO 和TMF 的新比例再更改自己M1finance 的比例嗎?

    Reply
    • Sep 8 2019

      如果要用这个动态调整版本 就需要这样每个月找一天看一下然后调整比例

      Reply
  3. Kevin
    Sep 12 2019

    请教下用哪个allocation weights 比较好呢 ? Inverse volatility 还是 minimum variance? 多谢! O(∩_∩)O

    Reply
    • Dec 23 2019

      有一个选项直接就是 risk parity 呀

      Reply
  4. Nicole
    Sep 29 2019

    好文,文中指出:2018年12月时候,UPRO/TMF的比例是26.87%/73.13%。那2018年12月初调整的时候是根据11月的volatility, 72.4%TMF+27.6UPRO调整呢,还是根据12月份的预测26.87%UPRO/73.13%TMF调整呢?因为有几个月差距挺大的。多谢

    Reply
    • Dec 23 2019

      按我的理解,要用的是最新的数字(即你的例子里的12月的数字)

      Reply
  5. Solomon
    Jan 2 2020

    雪球还更新吗?

    Reply
    • Jan 5 2020

      目前还在更新 直到我哪天不感兴趣了或者忘了为止吧😂

      Reply
  6. 碌碌无为
    Jan 16 2020

    话说楼主的雪球上的仓位否UPRO和TMF弄反了?Portfoliovisualizer里面最近(2020/1/14)的比例是39.85%TMF和60.15%UPRO

    Reply
    • Jan 18 2020

      我在雪球上有俩组合 一个是每月根据risk parity调整的 一个是固定40/60的 你是不是看成另外一个了?

      Reply
  7. boson
    Jan 31 2020

    Portfolio Visualizer要收费了,以后怎么搞?

    Reply
    • Feb 5 2020

      嗯?哪里说要收费的呀… 如果真收费了 可以再找个别的免费数据源然后自己稍微写点代码算…

      Reply
      • Stock
        Feb 5 2020

        确实我这边也显示看不了最新的数据了显示需要sign in

        https://tinyurl.com/v55jxms

      • Feb 13 2020

        那就sign in一下吧。注册个用户不要钱的~

      • Sheng
        Feb 5 2020

        有免费账户呀,sign in之后就能看到最新数据了

      • K
        Feb 11 2020

        他家注册账户不免费,你一注册给你几天试用

  8. D
    Feb 2 2020

    我看到楼主在雪球上的两个组合里,实际上是60/40那个收益率比动态调整的那个收益率更高(53.9% vs. 17.3%),这是为什么呢?这是说明60/40这个组合更好吗?

    Reply
    • Feb 5 2020

      这俩组合开始的时间不一样😅 Adaptive那个是我过了几个月后才开始搞的 期间有一段很大的涨幅就没在那个组合的记录里…

      Reply
  9. Will
    Feb 5 2020

    p大,porfolio visualizer现在timing period最底下不每天更新根据inverse volatility计算所得的分配比例了,而是仅有每个月的。比如现在是刚二月,那里显示50/50的比例,我很纳闷他这个比例是根据啥算出来的,到底是历史还是预测,是针对哪个时间段的volatility。我如果今天做调整是按照这个吗还是应该自己找到volatility的数据算一下。

    Reply
  10. Brian
    Feb 16 2020

    我写了一点代码来计算inverse votatility 欢迎大家使用和指正
    https://github.com/linzebing/inverse_volatility_caculation

    p大是否愿意把这篇文章的Link放在Readme里面?如果可以的话我很乐意加进去。

    Reply
    • Feb 18 2020

      好啊

      Reply
    • hkhappy
      Feb 20 2020

      感謝!!

      Reply
    • yuanyuan
      Feb 22 2020

      谢谢Brian! 不过inverse volatility和risk parity是一回事嘛?

      Reply
      • Feb 23 2020

        不一样 不过看Portfolio Visualizer的结果的话 如果只有2个标的结果是一样的 3个或以上标的结果就不一样了。Risk Parity 的计算更麻烦一些..

    • Feb 25 2020

      我借用你的函数,用rolling模拟了一下最近10年的投资(每天按照前一天的比例来调整)得出来每天的balance。然后再用同样的方法算这个balance每天的volatility,和SPY的volatility一起plot出来,好像还是比SPY的volatility高一些(大概1.3倍)请问大牛们这是expected的吗?

      Reply
      • Feb 25 2020

        UPRO/TMF是3倍杠杆呀 volatility比SPY高不是很正常吗

      • Feb 25 2020

        谢谢大神回答,那可能我的理解有些偏差,所以从结果看这个策略的风险是比SPY高的。但是在40/60比例原帖里面提到 “此策略在40年间的最大回撤只有 -49.22%,而同期标普500指数的最大回撤可是有 -50.97% 呢!此策略在表现最差的一年回报率为 -21.06%,而同期标普500指数最差的一年回报率则为 -37%!” 感觉此策略应该波动率比SPY小才对,不知道是我理解错了还是我做的回测有问题。

      • Feb 25 2020

        刚刚又仔细看了下原帖,这是expected的,不好意思没认真阅读哈

Trackbacks & Pingbacks

  1. 一个简单但有效的投资策略:40% UPRO + 60% TMF - 宇宙的心弦
  2. 我的2019年投资回顾 - 宇宙的心弦

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments