risk_contributionΒΆ
Defined in fynance.portfolio.attribution
- risk_contribution(w, sigma, pct=True)[source]
Risk contribution of each asset to portfolio variance.
Absolute risk contribution: \(RC_i = w_i \cdot MR_i\), where \(MR_i\) is the marginal risk. When \(pct=True\), normalize by portfolio volatility so contributions sum to 1 (percentage).
- Parameters:
- warray_like
Portfolio weights, shape
(N,)or(N, 1).- sigmaarray_like
Symmetric
(N, N)covariance matrix.- pctbool, optional
If True (default), return percentage contributions that sum to 1. If False, return absolute contributions that sum to portfolio volatility.
- Returns:
- np.ndarray
Risk contribution per asset, shape
(N,). If portfolio volatility is zero, returns zeros.
Examples
>>> import numpy as np >>> w = np.array([0.5, 0.5]) >>> sigma = np.array([[0.04, 0.0], [0.0, 0.01]]) >>> rc_pct = risk_contribution(w, sigma, pct=True) >>> np.allclose(rc_pct, [0.8, 0.2]) True