σμ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 Hidden Markov Models›Module 3 · Les régimes de marché›Sujet 3.4·~1 h 40 minAvancé

Projet final : un détecteur de régimes haussier baissier et de crise sur données d'indice

Position dans le parcoursModule 3 sur 3 · Sujet 4 sur 4
3.4 Projet final : un détecteur de régimes haussier baissier et de crise sur données d'indice
—Score du lab— / 100XP total—Série—

Un détecteur de régimes que vous construisez vous-même

Dans ce projet de synthèse, vous construisez un modèle de Markov caché avec seulement NumPy et vous le lancez sur vingt ans de SPY. Le modèle dit que chaque jour le marché est dans l'un de trois régimes cachés, calme, normal ou orageux, que vous ne voyez jamais. Chaque régime a son rendement et sa volatilité typiques, et le régime de demain ne dépend que de celui d'aujourd'hui par une matrice de transition A. La passe avant transforme les rendements en une probabilité pour chaque régime chaque jour. Une passe arrière ajoute ce que disent les jours suivants. Viterbi trouve le chemin unique le plus probable. Baum-Welch répète ces étapes pour apprendre les nombres des régimes à partir des données.

αₜ=((αₜ₋₁A)·Bₜ)/cₜ, βₜ=(A (Bₜ₊₁·βₜ₊₁))/(cₜ₊₁), γₜ=(αₜ·βₜ)/(Σ(αₜ·βₜ)), log L=Σₜlog cₜ

Tout est mis à l'échelle. Diviser les nombres de la passe avant de chaque jour par leur somme cₜ évite qu'ils tombent à zéro sur des milliers de jours, et la somme des log cₜ est exactement la log-vraisemblance. Viterbi travaille en logarithmes pour la même raison. À l'étape de Baum-Welch, les probabilités lissées γ servent de poids : la moyenne et la volatilité de chaque régime sont la moyenne pondérée et l'écart pondéré des rendements, et les comptages de transitions viennent de la probabilité de passer de i à j chaque jour. Chaque tour ne peut qu'augmenter la log-vraisemblance, ce qui est un bon test de votre code. Dans la dernière fonction, vous utilisez les régimes ajustés pour trader : un signal prévoit la probabilité de crise à partir de la veille (honnête), l'autre la lit dans les probabilités lissées (avec regard en avant).

Ce que disent les vraies donnéesSur les 5 404 rendements de SPY depuis 2005, quarante tours à partir d'un départ grossier trouvent trois régimes aux volatilités annuelles d'environ 8%, 19% et 51%. Leurs moyennes annuelles sont d'environ +30%, -1% et -73%, et chaque régime est très collant : il reste en place environ 96% à 97% des jours. La log-vraisemblance passe d'environ 17 544 à 17 803. Le long du chemin de Viterbi, le marché passe environ 52% des jours dans le régime calme, 41% dans le normal et 6% dans celui de crise. Rester investi seulement tant que la probabilité de crise est sous un demi donne un ratio de Sharpe annuel de 0,52 pour acheter-et-conserver, 0,66 pour le signal filtré honnête et 1,12 pour le lissé. Ce dernier écart est le piège du regard en avant à l'œuvre.
  • Mettez chaque pas à l'échelle : divisez par la somme du jour et additionnez les logarithmes, sinon des milliers de jours tombent à zéro.
  • Vérifiez par force brute : sur quelques jours, listez tous les chemins d'états et comparez. La log-vraisemblance ne doit jamais baisser d'un tour à l'autre.
  • Seulement des signaux honnêtes : prévoyez demain à partir des probabilités filtrées d'aujourd'hui. Les probabilités lissées flattent le backtest.
Simplifications à retenirLes rendements dans un régime sont traités comme normaux et indépendants, ce qui ignore les queues épaisses. Le nombre de régimes est fixé à trois. Le modèle est ajusté une seule fois sur tout l'échantillon, donc même le signal filtré honnête utilise des nombres appris à partir du futur. Un test strict réajuste sur le seul passé et ajoute des coûts de transaction. Le seuil d'un demi n'est pas optimisé.

Lab : ce qui est noté

  • Probabilités d'émission10 pts
  • L'algorithme avant20 pts
  • L'algorithme arrière10 pts
  • Le lissage5 pts
  • Le décodage de Viterbi15 pts
  • L'ajustement de Baum-Welch25 pts
  • L'étude de régimes15 pts
Explorateur · lab-hm-10
▾ lab-hm-10
▾ data
…
bash · dans le navigateur
learner@quantcraft:~/lab-hm-10$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

Tout le contenu de lab-hm-10 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