Do ruído independente a ativos correlacionados
Um gerador de números aleatórios dá sorteios independentes. Os ativos são correlacionados, então simular uma carteira exige sorteios com a matriz de covariância certa Σ. A fatoração de Cholesky acha uma matriz triangular inferior L com LLᵀ=Σ; então, se z é um vetor de normais padrão independentes, Lz tem exatamente a covariância L I Lᵀ=Σ. No NumPy os sorteios chegam em linhas, então calcula-se z @ L.T para um array z de forma (n, d). scipy.linalg.cholesky(cov, lower=True) faz a fatoração e levanta um erro se a matriz não é definida positiva, o que é útil: é o alarme de que sua matriz de covariância tem um problema. Semeie o gerador com np.random.default_rng(seed) e o experimento é repetível.
Com o simulador calculam-se números de risco. O retorno simulado da carteira em cada sorteio é draws @ w, e o valor em risco de um dia no nível α é menos o quantil α desses retornos (np.quantile). Para sorteios normais deve concordar com a fórmula variância–covariância -(wᵀμ+z_α√(wᵀΣw)), e com doze ativos concorda: 2,07% por simulação e 2,08% pela fórmula, contra 2,33% pela história, porque os retornos reais têm caudas mais gordas que qualquer modelo normal. Matrizes de covariância estimadas também podem falhar: se a correlação de dois ativos for fixada num impossível 1,2, o menor autovalor fica negativo (cerca de -6×10⁻⁵) e o Cholesky recusa a matriz. O reparo padrão usa scipy.linalg.eigh: subir ao piso todo autovalor abaixo de um piso pequeno, reconstruir a matriz e simetrizá-la. O resultado é definido positivo e difere do original em apenas cerca de 3×10⁻⁵.
- Cholesky transforma ruído em correlação:
z @ L.Ttem covariânciacovquandocov = L @ L.T. - Simulação e fórmula devem concordar para sorteios normais: a diferença para a história é o custo das caudas gordas.
- Uma fatoração que falha é informação: repare uma matriz não definida positiva elevando seus autovalores pequenos ou negativos.
Lab: o que é avaliado
- O fator de Cholesky10 pts
- Sorteios correlacionados20 pts
- Valor em risco Monte Carlo25 pts
- O valor em risco paramétrico15 pts
- Reparar uma matriz de covariância15 pts
- O estudo dos doze ativos15 pts