σμ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 statsmodels›Módulo 2 · Modelos de séries temporais›Tópico 2.4·~1 hAvançado

Modelos de espaço de estados e filtro de Kalman

Posição no roteiroMódulo 2 de 3 · Tópico 4 de 5
2.4 Modelos de espaço de estados e filtro de Kalman
—Nota do lab— / 100XP total—Sequência—

Acompanhar o que não se vê

Um modelo de espaço de estados separa o que é real do que é medido. Um estado oculto μt\mu_tμt​, como o verdadeiro nível de volatilidade, se move por conta própria, e o que se observa é esse estado mais ruído. No modelo de nível local yt=μt+εty_t=\mu_t+\varepsilon_tyt​=μt​+εt​ com εt∼N(0,r)\varepsilon_t\sim N(0,r)εt​∼N(0,r) e μt=μt−1+ηt\mu_t=\mu_{t-1}+\eta_tμt​=μt−1​+ηt​ com ηt∼N(0,q)\eta_t\sim N(0,q)ηt​∼N(0,q). A variância de medida rrr diz quão ruidosa é uma leitura e a variância de nível qqq diz quão rápido a verdade deriva. No statsmodels a classe UnobservedComponents(y, 'llevel') ajusta esse modelo e estima qqq e rrr por máxima verossimilhança, então não é preciso adivinhá-las.

O filtro de Kalman transforma cada nova leitura em uma crença atualizada, em dois passos. Prever: a média fica e a incerteza cresce, P−=P+qP^{-}=P+qP−=P+q. Atualizar: o ganho K=P−/(P−+r)K=P^{-}/(P^{-}+r)K=P−/(P−+r) diz quanto da surpresa y−ay-ay−a acreditar, a nova média é a+K(y−a)a+K(y-a)a+K(y−a) e a nova incerteza (1−K)P−(1-K)P^{-}(1−K)P−. Quando uma leitura falta, faz-se só o passo de previsão. O filtro usa os dados até hoje, enquanto o suavizador olha para trás a partir de toda a amostra para dar a melhor estimativa de cada estado passado.

P−=P+q,K=P−P−+r,a′=a+K(y−a),P′=(1−K)P−P^{-}=P+q,\qquad K=\frac{P^{-}}{P^{-}+r},\qquad a'=a+K(y-a),\qquad P'=(1-K)P^{-}P−=P+q,K=P−+rP−​,a′=a+K(y−a),P′=(1−K)P−(1)
Três meses à mãoComecemos com a crença a=10a=10a=10, P=4P=4P=4 e tomemos q=1q=1q=1, r=5r=5r=5. Mês um: P−=5P^{-}=5P−=5, K=5/10=0,5K=5/10=0{,}5K=5/10=0,5, e uma leitura 121212 dá a=10+0,5⋅2=11a=10+0{,}5\cdot2=11a=10+0,5⋅2=11 e P=0,5⋅5=2,5P=0{,}5\cdot5=2{,}5P=0,5⋅5=2,5. Mês dois: P−=3,5P^{-}=3{,}5P−=3,5, K=3,5/8,5=0,4118K=3{,}5/8{,}5=0{,}4118K=3,5/8,5=0,4118, uma leitura 999 dá surpresa −2-2−2, então a=11−0,4118⋅2=10,18a=11-0{,}4118\cdot2=10{,}18a=11−0,4118⋅2=10,18 e P=0,5882⋅3,5=2,06P=0{,}5882\cdot3{,}5=2{,}06P=0,5882⋅3,5=2,06. O mês três não tem leitura: só o passo de previsão roda, então aaa fica em 10,1810{,}1810,18 e PPP cresce para 2,06+1=3,062{,}06+1=3{,}062,06+1=3,06. Em dados reais, tome o log da volatilidade realizada anualizada do SPY para cada um dos 259259259 meses desde fevereiro de 2005. A máxima verossimilhança dá r^=0,0889\hat r=0{,}0889r^=0,0889 e q^=0,0449\hat q=0{,}0449q^​=0,0449, então q/r=0,50q/r=0{,}50q/r=0,50, e o ganho estacionário é K=0,50K=0{,}50K=0,50: cada novo mês move a estimativa de volatilidade até a metade do caminho para a última leitura. É exatamente um ARIMA(0,1,1) com coeficiente de média móvel −0,498=−(1−K)-0{,}498=-(1-K)−0,498=−(1−K) e a mesma log-verossimilhança −151,09-151{,}09−151,09. No fim da amostra o nível filtrado é 12,4%12{,}4\%12,4% anualizado contra uma última leitura de 11,7%11{,}7\%11,7%, com erro-padrão de 0,210{,}210,21 em logs, ou seja, uma banda de 95 % de cerca de 8%8\%8% a 19%19\%19%.
Filtrado ou suavizadoUse a estimativa filtrada para tudo o que você poderia saber na época, como uma regra de negociação ou um backtest. A estimativa suavizada usa dados futuros e serve apenas para descrever o passado.

Lab: o que é avaliado

  • A variância prevista10 pts
  • O ganho de Kalman15 pts
  • A média atualizada15 pts
  • A variância atualizada10 pts
  • O ganho do mês seguinte15 pts
  • Uma leitura ausente10 pts
  • A razão sinal-ruído25 pts
0/ 7 respondidas
Tarefas
1Resposta numérica10 ptsSem resposta

A crença tem variância P=4P=4P=4 e a variância de nível é q=1q=1q=1. Quanto vale a variância prevista P−=P+qP^{-}=P+qP−=P+q?

pp=pp =pp=aceito: ± 0.01
2Resposta numérica15 ptsSem resposta

Com P−=5P^{-}=5P−=5 e variância de medida r=5r=5r=5, quanto vale o ganho K=P−/(P−+r)K=P^{-}/(P^{-}+r)K=P−/(P−+r)? Dê uma casa decimal.

k=k =k=aceito: ± 0.01
3Resposta numérica15 ptsSem resposta

A média da crença é a=10a=10a=10, o ganho K=0,5K=0{,}5K=0,5 e a leitura y=12y=12y=12. Quanto vale a nova média a+K(y−a)a+K(y-a)a+K(y−a)?

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

Com P−=5P^{-}=5P−=5 e K=0,5K=0{,}5K=0,5, quanto vale a nova variância (1−K)P−(1-K)P^{-}(1−K)P−? Dê uma casa decimal.

p=p =p=aceito: ± 0.02
5Resposta numérica15 ptsSem resposta

A variância agora é P=2,5P=2{,}5P=2,5 com q=1q=1q=1, r=5r=5r=5. Quanto vale o próximo ganho K=(P+q)/(P+q+r)K=(P+q)/(P+q+r)K=(P+q)/(P+q+r)? Dê três casas decimais.

k=k =k=aceito: ± 0.003
6Escolha10 ptsSem resposta

Em um mês sem leitura, o que faz o filtro de Kalman?

7Explicar com palavras25 ptsSem resposta

Para a volatilidade do SPY a razão ajustada é q/r=0,50q/r=0{,}50q/r=0,50 e o ganho K=0,50K=0{,}50K=0,50. Em uma ou duas frases, explique o que um q/rq/rq/r muito menor faria à estimativa filtrada.

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