Une validation croisée qui respecte l'horloge
La validation croisée réutilise les données : elle les coupe en plis, teste sur un pli et entraîne sur le reste. Pour des lignes indépendantes cela marche, mais les étiquettes financières se chevauchent dans le temps. Si l'étiquette de la ligne est le rendement de à , sa fenêtre est . Un pli de test qui couvre les lignes à a des étiquettes qui couvrent . Toute ligne d'entraînement dont la fenêtre touche cet intervalle, c'est-à-dire , partage des rendements avec les étiquettes de test. Garder de telles lignes laisse le modèle voir une partie de la réponse.
La purge retire les lignes d'entraînement qui se chevauchent. L'embargo retire encore lignes après le pli de test, car les rendements sont autocorrélés et la volatilité se regroupe : les premières lignes après un bloc de test portent encore de l'information sur lui. Dans un schéma walk-forward, l'entraînement vient seulement avant le test, et la même idée devient une marge : entraîner sur les lignes jusqu'à , donc une marge de (plus ). TimeSeriesSplit de scikit-learn a un argument gap pour cela. Sur le panel mensuel d'actions avec , le coefficient d'information walk-forward vaut sans embargo et avec mois d'embargo : le nettoyage change peu car le chevauchement est court, mais on ne peut pas le savoir sans le faire.
- Purger, puis mettre un embargo : retirer les lignes d'entraînement dont les étiquettes touchent celles du test, puis quelques-unes de plus après le test.
- Une marge en walk-forward : entraîner seulement sur des lignes situées au moins avant le test.
- Faites-le même si cela change peu : une évaluation propre coûte quelques lignes, une fuite peut coûter une stratégie.
Lab : ce qui est noté
- Lignes purgées avant le pli10 pts
- Lignes purgées après le pli15 pts
- La taille d'entraînement qui reste15 pts
- Un pli walk-forward avec marge10 pts
- Quelles lignes sont purgées10 pts
- Un découpage purgé10 pts
- Associer le vocabulaire15 pts
- Pourquoi aussi un embargo15 pts