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.
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).
- 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.
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