I did a post last October (here) looking at varying allocation between stocks/bonds and at the end I hinted towards a tactical overly between the two asset classes. Six months later, I finally found a decent overlay I feel may hold value.
In a paper called “Principal Components as a Measure of Systemic Risk” (SSRN), Kritzman Et al. presented a method for identifying “fragile” market states. To do this, he constructed the Absorption Ratio. Here is the equation:
The numerator sigma represents the variance of the ith eigenvector, while the denominator one equals the variance of the jth asset. In the paper, n = 1/5 the total number of assets (N). The interpretation is simple, the higher the ratio, the more “fragile” the market state. The intuition behind this ratio is that when its high, it implies that risk is very concentrated. On the other hand, when it is low, risk is dispersed and spread out. Think weak and strong. Following is the raw AR through time of the DJ 30 Components.
As you can see, the ratio spikes during the tech bubble and the recent financial crisis. How would it look like when used as a filter? Below are two pictures comparing the signals generated by 200 day sma and standardized AR.
Pretty good at the timing in my opinion. In line with the paper, I reconstructed the strategy that switches between stocks(DIA) and bonds (VBMFX). When the AR is between 1 and -1, we will split 50/50. When its above 1, we are in love with bonds and when its below -1, we are in love with stocks. Simple. Results:
And here is the code: (I know its messy, didn’t have a lot of time! :)
Note: There is survivorship bias. I used the current day DJ30.
Thanks for reading
Enjoy the blog, and am interested in the Absorption ratio.
I was wondering if you might possibly have an example of
its calculation in an Excel spreadsheet.
Thanks for sharing this, similar to Steve I also have request for an example of Absorption ratio calculation in spreadsheet, if possible. Thanks.
Hey guys,
To my knowledge, excel doesnt have a built in PCA function. I suggest you guys look into add on XLstat, but I personally don’t use excel other than simple data formatting and quick charting
Cheers,
MG
Is there any chance that there is some look ahead bias here ? i.,e does the princomp calculation use the entire dataset at a point in time ?
I havent looked into the princomp, but just thought I will bring it up.
Look ahead bias shouldn’t be a problem as I looped through each day as oppose to doing PCA on the entire batch of return data.
Pseudo-code
for each day
hist <- returns with N day lookback
pca<- princomp(hist)
aratio <- calculate_a_ratio (pca)
…
..
.
Hope that helps,
Mike
perfect !
Love your post! Thank you for sharing
Are you also going to reproduce the follow-up paper:
Regime Shifts: Implications for Dynamic Strategies by Mark Kritzman:
http://www.statestreet.com/wps/wcm/connect/a3c597004e65ffd19c00fe2a1fc2916b/FAJ_MJ12_Kritzman_Page_Turkington+(2).pdf?MOD=AJPERES
I loved it, in fact it is one of the best papers I have read for a long time! Because of all the details given in the paper (even matlab code!) it should be doable… and it will be well worth the effort!
Hi vonjd,
Thanks for the kind words. The paper you referenced was already replicated by Quantivity. If you are interested he provides code and everything here:
http://quantivity.wordpress.com/2012/11/09/multi-asset-market-regimes/
M
Well, yes and no: quantivity started with a first post on it but has not managed to complete the replication as of yet 😦 (btw: I am the “astute reader” mentioned 😉
Another thing: Running your code gives me two errors:
Error in which(dia[, 1] > dia[, 2]) : object ‘dia’ not found
Error in `[.xts`(x, i, which.i = TRUE) : object ‘period.ends’ not found
Can you help?
Thank you and keep up the good work!
I am not able to find it can you please shareit with me at akshaysharma0197@gmail.com
Hello, just one question: how would you introduce a 500 day rolling window as Kritzman et al 2011 did in his paper to calculate the absorption ratio and how would you store each daily calculated AR that can you extract later preferable in Excel plotted in a column for each day calculated? Thank you, V