# How to properly annualize portfolio volatility

I have a portfolio consisting of several assets and I'm using daily data to calculate various portfolio metrics, including historical returns and volatility. In order to compare portfolio performance to other performance metrics I'd like to annualize both returns and volatility.

With returns, it seems pretty simple, I annualize each asset return and then do:

weights.T @ annualized_returns


where:
weights - a list of assets weights in a portfolio.

I'd like to use the same approach for volatility: $$\begin{equation} \sigma_{p}=\sqrt{\mathbf{w}^{\mathbf{T}} \boldsymbol{\Sigma} \mathbf{w}} \end{equation}$$

covariance_matrix = returns_series.cov()
np.sqrt(weights.T @ covariance_matrix @ weights)*np.sqrt(252)


So I'm calculating portfolio daily volatility and then annualizing it by multiplying it by square root of number of trading days in a year.

Will this approach work to properly annualize portfolio volatility?

• briefly, yes. The variance of independent returns is additive, thus the units of portfolio variance are "per time". The units of volatility are then "per square root time". So to convert $x$ in units of "per square root day" to units of "per square root year", you multiply by $\sqrt{252}$. – steveo'america Mar 30 at 16:57
• @steveo'america Well, my original thought was to "annualize" the covariance matrix by covariance_matrix = returns_series.cov()*np.sqrt(252) and then just np.sqrt(weights.T @ covariance_matrix @ weights) but that gave me lower portfolio volatility than the example in the OP and I wasn't sure why, hence the question. – ruslaniv Mar 31 at 5:26
• Right, well a 'covariance' is like a variance, so it has units of "per time". To annualize it you have to multiply by $252$, not the square root. You would then get the right answer. – steveo'america Mar 31 at 16:57
• @steveo'america Great catch, thank you! If you would post your comments as an answer, I would accept it. – ruslaniv Apr 1 at 7:06