Source code for yabte.utilities.portopt.inverse_volatility

r"""Calculate portfolio weights by inverting variance.

That is,

.. math::

   w = \frac{\sigma^{-1}}{1'\sigma^{-1}}

where :math:`\sigma^2 = diag(\Sigma)`.
"""

import numpy as np


[docs]def inverse_volatility(cov: np.ndarray) -> np.ndarray: """Calculate weights using inverse variance.""" sigma_inv = np.sqrt(np.diag(cov)) ** -1 return sigma_inv / (np.ones_like(sigma_inv) @ sigma_inv)