Using Implied Volatility for Portfolio Optimization

Discussion in 'Trading' started by pelman08, Jan 23, 2020.

  1. Decompose the covar matrix into a corr matrix and a vol vector. Discard the vol vector (or use it as an input to your own estimated vol vector) and replace it with your own IV-dominated estimated vol vector. Then shrink the corr matrix, estimated vol vector, and the mean vector separately. Shrink the estimated vol and mean vectors towards their global and sector/factor means. Shrink the mean vector by much more than you think you should. Then combine the shrunken corr matrix and shrunken estimated vol vector to get your estimated covar matrix. Fit tangency portfolio using the [now shrunken] estimated covar matrix and the very-shrunken mean vector.

    If you've done it right, it will almost certainly beat the naive equal-weight 1/n portfolio and even the min-variance portfolio. The only red flag that I see is that using implied vol implies a short lookback period (max expiry in my options database is 20221216). MV-optimal portfolios using recent covar and means are usually mean-vector dominated and tend to resemble standard 12-minus-1 momentum portfolios, which could be disastrous if the market turns or rotates out of current leaders.
     
    #11     Jan 24, 2020
    .sigma likes this.
  2. Check the world economy well, since managing your investment portfolio when an end of the economic cycle is coming can be a bad idea. I read that there are experts who recommend rebalancing the distribution of your assets, buying treasure bonds, focusing on raw materials, commodities or real estate investment, the really important thing is to learn how to manage risk.
     
    #12     Feb 5, 2020
  3. ironchef

    ironchef

    I failed the MATLAB course. :(

    However, I am getting quite good at programming in VBA and am doing all my computations using VBA. Can I do it using VBA Excel?
     
    #13     Mar 9, 2021
  4. Sure, try translating the R code below into VBA for a simple way to calculate the tangency (max Sharpe) portfolio directly from your array of returns (each column is the returns of a single stock):

    Code:
    maxSharpePortfolio <- function(X)
    { ones <- rep(1,nrow(X))
      lmod <- lm(ones ~ -1 + X)
      retur(coef(lmod) / sum(coef(lmod)))
    }
    
    X is your matrix (or range or array) of stock returns or log returns
    ones is a vector (or single dimensional array) or ones the same length as you X array has rows.
    lm is the R version of excel's linest, which returns the the coefficints (your portfolio weights) directly. Note that the intercept for the regression has to be zero (third argument to linest).

    Once you've got the code above translated and working, I'll post code for a direct fit of the minimum variance portfolio. Then the equal risk contribution portfolio.

    Good luck with the translation.
     
    #14     Mar 10, 2021