σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyRoadmapsRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
RoadmapsRoteiros
AO
+1,2 mil alunos
Entrar
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyRoadmapsRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
RoadmapsRoteiros
AO
+1,2 mil alunos
Entrar
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Roteiro de SciPy›Módulo 3 · Matrizes, sinais e estrutura›Tópico 3.1·~45 minIntermediário

O essencial da álgebra linear no scipy.linalg

Posição no roteiroMódulo 3 de 3 · Tópico 1 de 5
3.1 O essencial da álgebra linear no scipy.linalg
—Nota do lab— / 100XP total—Sequência—

As matrizes, a engrenagem das carteiras

Um problema de carteiras é um problema de matrizes. A matriz de covariância Σ\SigmaΣ guarda as variâncias e os co-movimentos dos ativos, e quase toda tarefa pede algo feito com ela. scipy.linalg.solve(A, b) resolve Ax=bA\mathbf x=\mathbf bAx=b para a incógnita x\mathbf xx. Não se deve calcular a inversa inv(A) e multiplicar: a resolução direta faz menos trabalho e perde menos precisão. A fatoração de Cholesky, linalg.cholesky(S, lower=True), divide uma matriz de covariância em Σ=LL⊤\Sigma=LL^{\top}Σ=LL⊤, em que LLL é triangular inferior, isto é, com zeros acima da diagonal. Se z\mathbf zz é um vetor de números normais padrão independentes, então LzL\mathbf zLz tem covariância Σ\SigmaΣ, e é assim que se simulam retornos correlacionados.

Os autovalores de Σ\SigmaΣ dizem quantas fontes independentes de risco existem de fato. linalg.eigvalsh(S) os devolve para uma matriz simétrica, do menor ao maior. Para dois ativos com correlação ρ\rhoρ, a matriz de correlação tem autovalores 1+ρ1+\rho1+ρ e 1−ρ1-\rho1−ρ, então ativos muito correlacionados têm um autovalor grande e um minúsculo. A razão entre o maior e o menor é o número de condição. Um número de condição grande significa que a matriz é quase singular, isto é, quase impossível de inverter, e uma pequena mudança nos dados pode mexer muito na resposta. Otimizadores que tomam a inversa de Σ\SigmaΣ são sensíveis exatamente a isso.

Ax=b ⇒ x=solve(A,b),Σ=LL⊤,r=Lz,κ(Σ)=λmax⁡λmin⁡A\mathbf x=\mathbf b\ \Rightarrow\ \mathbf x=\text{solve}(A,\mathbf b),\qquad \Sigma=LL^{\top},\quad \mathbf r=L\mathbf z,\qquad \kappa(\Sigma)=\frac{\lambda_{\max}}{\lambda_{\min}}Ax=b ⇒ x=solve(A,b),Σ=LL⊤,r=Lz,κ(Σ)=λmin​λmax​​(1)
Dois ativos à mãoTome Σ=(4223)\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}Σ=(42​23​). Seu fator de Cholesky é L=(2012)L=\begin{pmatrix}2&0\\1&\sqrt2\end{pmatrix}L=(21​02​​), porque LL⊤LL^{\top}LL⊤ dá 444, 222, 222 e 1+2=31+2=31+2=3. Para sorteios independentes z=(1;1)z=(1;1)z=(1;1), o sorteio correlacionado é Lz=(2; 1+2)=(2; 2,414)Lz=(2;\,1+\sqrt2)=(2;\,2{,}414)Lz=(2;1+2​)=(2;2,414). Para resolver (2113)x=(35)\begin{pmatrix}2&1\\1&3\end{pmatrix}\mathbf x=\begin{pmatrix}3\\5\end{pmatrix}(21​13​)x=(35​), elimina-se e acha-se x=(0,8; 1,4)\mathbf x=(0{,}8;\,1{,}4)x=(0,8;1,4). Uma matriz de correlação com ρ=0,9\rho=0{,}9ρ=0,9 tem autovalores 1,91{,}91,9 e 0,10{,}10,1, então o primeiro fator carrega 1,9/2=95%1{,}9/2=95\%1,9/2=95% da variância total. Uma matriz com autovalores 111 e 333 tem número de condição 333. Em dados reais, SPY, QQQ e TLT em 5 4045\,4045404 dias têm correlação de 0,920{,}920,92 entre SPY e QQQ e de cerca de −0,3-0{,}3−0,3 entre cada um e o TLT. A matriz de correlação tem autovalores 0,080{,}080,08, 0,860{,}860,86 e 2,062{,}062,06, então um fator carrega 69%69\%69% da variância, e o número de condição é 262626.
  • Resolver, não inverter: solve(A, b) é mais rápido e preciso que inv(A) @ b.
  • Cholesky cria correlação: multiplique normais independentes por LLL para obter retornos com covariância Σ\SigmaΣ.
  • Vigie o número de condição: ativos muito correlacionados deixam Σ\SigmaΣ quase singular e as soluções instáveis.

Lab: o que é avaliado

  • O fator de Cholesky20 pts
  • Resolver um sistema10 pts
  • Um número de condição10 pts
  • A parcela de variância de um fator10 pts
  • Para que serve cada rotina15 pts
  • Simular retornos correlacionados10 pts
  • Por que não inverter25 pts
0/ 7 respondidas
Tarefas
1Matriz · vetor20 ptsSem resposta

Ache a matriz triangular inferior LLL com LL⊤=Σ=(4223)LL^{\top}=\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}LL⊤=Σ=(42​23​). Informe LLL (use 1,41421{,}41421,4142 para 2\sqrt22​).

L=L =L=
2Resposta numérica10 ptsSem resposta

Resolva 2x1+x2=32x_1+x_2=32x1​+x2​=3 e x1+3x2=5x_1+3x_2=5x1​+3x2​=5. Quanto vale x2x_2x2​? Dê uma casa decimal.

x=x =x=aceito: ± 0.02
3Resposta numérica10 ptsSem resposta

Uma matriz simétrica tem autovalores 111 e 333. Qual é seu número de condição, o maior autovalor dividido pelo menor?

k=k =k=aceito: ± 0.01
4Resposta numérica10 ptsSem resposta

Dois ativos com correlação 0,90{,}90,9 têm autovalores da matriz de correlação 1,91{,}91,9 e 0,10{,}10,1. Que percentual da variância total o primeiro fator carrega?

s=s =s=aceito: ± 0.5
5Associar15 ptsSem resposta

Associe cada rotina do scipy.linalg à sua tarefa no trabalho com carteiras.

Escolha o par de cada item da esquerda.

solve
cholesky
eigvalsh
lstsq
6Ordenar os passos10 ptsSem resposta

Coloque em ordem os passos para simular retornos diários correlacionados.

Arraste para reordenar, ou foque um item, Espaço para levantá-lo, setas para movê-lo e Espaço para soltá-lo.

  1. 1Conferir se a covariância amostral está perto do alvo
  2. 2Multiplicar os sorteios normais por L
  3. 3Estimar a matriz de covariância a partir do histórico
  4. 4Sortear números normais padrão independentes
  5. 5Fatorá-la com Cholesky
7Explicar com palavras25 ptsSem resposta

Em uma ou duas frases, explique por que solve(A, b) é preferido a inv(A) @ b e do que avisa um número de condição grande.

Modo matemáticaEntrada por teclado ou LaTeXTarefa 1 de 7 · Ctrl ⏎ para verificar

Entre para executar o seu código.

Todas as aulas são gratuitas para ler. Crie uma conta ou entre para executar código, rodar os testes e enviar este lab.

  • IDE no navegador com terminal bash — nada para instalar
  • Correção instantânea, XP e o seu lugar no roteiro
Criar uma contaEntrar
OU
Continuar com o GitHub