Risk Parity: Equal Risk Contribution Portfolios
Module: Fintech AI | Difficulty: Advanced
Risk Contribution
Risk Parity Condition
All-Weather Portfolio
Leveraged Risk Parity
import numpy as np
from scipy.optimize import minimize
class RiskParity:
def __init__(self, cov_matrix):
self.cov = cov_matrix
def solve(self):
n = len(self.cov)
def objective(w):
portfolio_vol = np.sqrt(w @ self.cov @ w)
risk_contributions = w * (self.cov @ w) / portfolio_vol
target = portfolio_vol / n
return np.sum((risk_contributions - target)**2)
constraints = [{'type': 'eq', 'fun': lambda w: np.sum(w) - 1}]
w0 = np.ones(n) / n
result = minimize(objective, w0, constraints=constraints, method='SLSQP')
return result.x
Research Insight: Risk parity is attractive because it diversifies across risk factors, not just asset classes. The key insight is that traditional 60/40 portfolios are dominated by equity risk. Risk parity achieves better risk-adjusted returns by equalizing risk contributions.