Attempt to replicate Wouter Keller's Hybrid Asset Allocation: Dual and Canary Momentum with Rising Yields/Inflation: Hybrid Asset Allocation (HAA) by Wouter J. Keller, Jan Willem Keuning :: SSRN. Always appreciate Keller's willingness to share his ideas openly.
Results in the back test are not as good as in the paper. One known difference is trading 30 minutes after the open the next day instead of at the close on the last day of each month. Trading on the next day's open seems more feasible in practice.
Please share any thoughts you might have on why results aren't as good as the paper; or any ideas on how to improve this strategy.
Tristan F
One correction is to replace offensive assets with cash if their momentum values are negative. See bolded section in the rules below. Results are still not as good as the paper, mainly because we get caught in the March 2020 pandemic crash. I think I'm still missing something…
Jam
Tristan F Curious if you made any more progress? Attached is my attempt. I also got caught in the Covid dip. Any ideas?
Tristan F
Hi jam ,
Apologies for the late reply. I have not made any progress on this and appreciate you taking a look at it. Usually QC results line up well with Wouter Keller's published results, but not in this case.
Jack Pizza
Michael Lu
Has anyone tried combining Hybrid Asset Allocation and Bold Asset Allocation in a single portfolio to see how the combined strategy performs? I am attempting to do it but am too much of a novice to get the code right.
Jack Pizza
with our chatgpt friend I ran this algo through it, ran kellers verbatim rules, and chatgpt said it's implemented exactly, after i gave it a look over manually also….so seems it's implemented correctly.
The issue is either a data issue on quantconnect which is a known glaring issue, not sure if they've done much to fix it.
or like i mentioned before all these researchers use monthly data for their stats so on a monthly DD basis it looks good, on a daily totally breaks down.
But given the massive discrepancy would assume it's bad data possibly for TIPs
Will Hampson
One issue is your safe universe only includes BIL when it should just be whatever the best performer is in the defensive universe as i understand it.
self.safe = ['BIL'] should be self.safe = ['BIL','IEF'] which is just self.selD = ['BIL', 'IEF']
IEF performed very strongly during COVID because of the sharp drop in interest rates. Not having that as an option would have been a big performance loss.
I also don't follow what you're doing here:
# Determine number of canary securities with negative momentum
n_canary = np.sum((mom_avg[self.selP]<0)*1)/len(self.selP)
# % equity offensive
pct_in = 1-n_canary
# cash return
pct_safe = 0
the canary universe only has 1 item and always 1 item.
There are some other issues in the code as well regarding the calculation of the momentum as well as the weights.
Will Hampson
Also you can't simply use the prices of fixed income ETF's to get their total return which is what the momentum is meant to be based upon. Instead you need to incorporate the income they are paying out through out the period. This is a vital difference in the effectiveness of the crash protection the strategy uses.
Tristan F
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!