Suivre ce qu'on ne voit pas
Un modèle d'espace d'état sépare ce qui est réel de ce qui est mesuré. Un état caché μt, comme le vrai niveau de volatilité, évolue de lui-même, et ce qu'on observe est cet état plus du bruit. Dans le modèle à niveau local yt=μt+εt avec εt∼N(0,r) et μt=μt−1+ηt avec ηt∼N(0,q). La variance de mesure r dit à quel point une lecture est bruitée et la variance de niveau q dit à quelle vitesse la vérité dérive. Dans statsmodels la classe UnobservedComponents(y, 'llevel') ajuste ce modèle et estime q et r par maximum de vraisemblance : inutile de les deviner.
Le filtre de Kalman transforme chaque nouvelle lecture en une croyance mise à jour, en deux étapes. Prédire : la moyenne reste et l'incertitude grandit, P−=P+q. Mettre à jour : le gain K=P−/(P−+r) dit quelle part de la surprise y−a croire, la nouvelle moyenne est a+K(y−a) et la nouvelle incertitude (1−K)P−. Quand une lecture manque, on ne fait que l'étape de prédiction. Le filtre utilise les données jusqu'à aujourd'hui, tandis que le lisseur regarde en arrière depuis tout l'échantillon pour donner la meilleure estimation de chaque état passé.
P−=P+q,K=P−+rP−,a′=a+K(y−a),P′=(1−K)P−(1) Trois mois à la mainPartons d'une croyance
a=10,
P=4 avec
q=1,
r=5. Mois un :
P−=5,
K=5/10=0,5, et une lecture
12 donne
a=10+0,5⋅2=11 et
P=0,5⋅5=2,5. Mois deux :
P−=3,5,
K=3,5/8,5=0,4118, une lecture
9 donne une surprise
−2, donc
a=11−0,4118⋅2=10,18 et
P=0,5882⋅3,5=2,06. Le mois trois n'a pas de lecture : seule l'étape de prédiction tourne, donc
a reste
10,18 et
P monte à
2,06+1=3,06. Sur données réelles, prenons le log de la volatilité réalisée annualisée de SPY pour chacun des
259 mois depuis février 2005. Le maximum de vraisemblance donne
r^=0,0889 et
q^=0,0449, donc
q/r=0,50, et le gain stationnaire est
K=0,50 : chaque nouveau mois déplace l'estimation de volatilité à mi-chemin de la dernière lecture. C'est exactement un ARIMA(0,1,1) de coefficient de moyenne mobile
−0,498=−(1−K) et de même log-vraisemblance
−151,09. En fin d'échantillon le niveau filtré est de
12,4% annualisé contre une dernière lecture de
11,7%, avec une erreur standard de
0,21 en logs, donc une bande à 95 % d'environ
8% à
19%.
Filtré ou lisséUtilisez l'estimation filtrée pour tout ce que vous auriez pu savoir à l'époque, comme une règle de trading ou un backtest. L'estimation lissée utilise des données futures et ne sert qu'à décrire le passé.
Lab : ce qui est noté
- La variance prédite10 pts
- Le gain de Kalman15 pts
- La moyenne mise à jour15 pts
- La variance mise à jour10 pts
- Le gain du mois suivant15 pts
- Une lecture manquante10 pts
- Le rapport signal sur bruit25 pts