σμ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 AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • 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 AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Parcours statsmodels›Module 2 · Modèles de séries temporelles›Sujet 2.7·~55 minAvancé

Un modèle à niveau local pour une volatilité bruitée

Position dans le parcoursModule 2 sur 3 · Sujet 7 sur 9
2.7 Un modèle à niveau local pour une volatilité bruitée
—Score du lab— / 100XP total—Série—

Un niveau caché derrière des mesures bruitées

Un modèle espace-état a un état caché qui évolue dans le temps et des observations bruitées de cet état. Le plus simple, le modèle à niveau local, est yₜ=μₜ+eₜ avec eₜ (variance σ²ₑ), et μₜ=μₜ₋₁+hₜ avec hₜ (variance σ²ₕ) : le niveau μₜ est une marche aléatoire et chaque mesure ajoute un bruit indépendant. UnobservedComponents(y, level='llevel').fit(disp=False) estime σ²ₑ (nommé sigma2.irregular) et σ²ₕ (sigma2.level) par maximum de vraisemblance. Le rapport q=σ²ₕ/σ²ₑ est le rapport signal sur bruit : un petit q signifie un niveau lent et beaucoup de bruit à moyenner. Pour la log-volatilité mensuelle de SPY sur 258 mois, σ̂²ₑ=0,089 et σ̂²ₕ=0,045, donc q=0,50.

Le filtre de Kalman estime le niveau en deux temps chaque mois : prédire μ̂_(t|t-1)=μ̂_(t-1|t-1), puis corriger par la surprise, μ̂_(t|t)=μ̂_(t|t-1)+Kₜ (yₜ-μ̂_(t|t-1)). Après un démarrage, le gain se stabilise à K=P/(P+1) avec P=1/2(q+√(q²+4q)), et le filtre est alors exactement une moyenne mobile exponentielle de poids K : ici K=0,502, et pd.Series(y).ewm(alpha=K, adjust=False).mean() reproduit le niveau filtré à 7×10⁻¹⁰ près. Le même modèle est un ARIMA(0,1,1) de coefficient de moyenne mobile -(1-K)=-0,498 : les deux ont un AIC de 290,526. Le niveau filtré res.filtered_state[0] n'utilise que les données jusqu'à t. Le niveau lissé res.smoothed_state[0] utilise tout l'échantillon : coupez les données au mois 200 avec les mêmes paramètres, le niveau filtré ne change pas du tout, tandis que le niveau lissé bouge de 0,116. Un lisseur sert à regarder en arrière, jamais de signal. La prévision du niveau est plate à -2,09 et son intervalle à 95 % s'élargit de ±0,83 à ±1,61.

  • Bruit plus niveau : le rapport signal sur bruit q fixe de combien chaque nouvelle observation déplace l'estimation.
  • Le filtre est une EWMA et le modèle à niveau local est un ARIMA(0,1,1) : trois noms pour une idée.
  • Le filtré utilise le passé, le lissé le futur : ne tradez jamais sur une série lissée.

Lab : ce qui est noté

  • L'ajustement du niveau local10 pts
  • Les deux variances10 pts
  • Niveaux filtré et lissé5 pts
  • Le gain stationnaire15 pts
  • Le filtre comme EWMA15 pts
  • Regarde-t-il en avant ?20 pts
  • Un ARIMA déguisé10 pts
  • L'étude de la volatilité15 pts
Explorateur · lab-sx-18
▾ lab-sx-18
▾ data
…
bash · dans le navigateur
learner@quantcraft:~/lab-sx-18$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

Tout le contenu de lab-sx-18 revient aux fichiers de départ et le terminal est vidé. Votre solution actuelle sera perdue : cette action est irréversible.

Sera réinitialisé
  • main.py → code de départ
  • Historique du terminal et sortie des tests
  • Modifications non soumises
Sera conservé
  • Meilleur score du lab
  • Votre XP et votre série
  • Progression du cours et notes

Connectez-vous pour exécuter votre code.

Tous les cours sont gratuits à lire. Créez un compte ou connectez-vous pour exécuter du code, lancer les tests et soumettre ce lab.

  • IDE dans le navigateur avec terminal bash — rien à installer
  • Correction instantanée, XP et votre place dans le parcours
Créer un compteSe connecter
OU
Continuer avec GitHub