Equity Bond Exposure Management

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.

SMA ARatio

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


  1. 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.

  2. Thanks for sharing this, similar to Steve I also have request for an example of Absorption ratio calculation in spreadsheet, if possible. Thanks.

    1. 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


  3. 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.

    1. 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.


      for each day
      hist <- returns with N day lookback
      pca<- princomp(hist)
      aratio <- calculate_a_ratio (pca)


      Hope that helps,

  4. 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:

    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!

      1. 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!

  5. 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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s