Lisser une série bruitée et trouver son rythme
Un filtre transforme une série en une autre en mélangeant chaque valeur avec ses voisines. Une moyenne mobile sur jours est le filtre le plus simple : chaque sortie est la moyenne des dernières entrées, donc le bruit diminue mais la sortie prend aussi du retard. Une moyenne mobile exponentielle (MME) donne plus de poids aux jours récents : , où est le poids de lissage. signal.lfilter(b, a, x) exécute un tel filtre sur une série, en n'utilisant que des valeurs passées et présentes. Le retard moyen d'une MME est jours, et celui d'une moyenne mobile sur jours est jours, donc une moyenne de 19 jours et une MME avec ont toutes deux environ 9 jours de retard.
La seconde tâche est la recherche de cycles. signal.periodogram(x) répartit la variance d'une série par fréquences, mesurées en cycles par jour. Un pic à la fréquence signale un motif répété de période jours. Avec une observation par jour, on ne voit que les fréquences jusqu'à cycle par jour, la limite de Nyquist, car un cycle plus rapide ne se distingue pas d'un cycle plus lent. Un avertissement compte énormément en trading. signal.filtfilt fait passer le filtre en avant puis en arrière, ce qui supprime le retard, mais chaque sortie utilise alors des valeurs futures. Un signal construit avec filtfilt paraît parfait dans un backtest et ne peut pas être tradé, car les données de demain ne sont pas disponibles aujourd'hui. N'utilisez que des filtres causaux comme lfilter pour tout ce que vous comptez trader.
- Lisser coûte du retard : une fenêtre plus longue ou un plus petit retire plus de bruit et retarde davantage le signal.
- Des périodes à partir des pics : un pic du périodogramme à la fréquence signifie un cycle de jours, jusqu'à une limite de 0,5 cycle par jour.
- Seulement des filtres causaux pour trader :
filtfiltutilise le futur, donc il sert à l'analyse, jamais à un signal réel.
Lab : ce qui est noté
- Un pas de MME10 pts
- Une moyenne mobile10 pts
- Le poids pour une fenêtre10 pts
- Une période à partir d'une fréquence10 pts
- Le retard d'une MME10 pts
- Ce que fait chaque routine15 pts
- Pourquoi filtfilt ne peut pas être tradé35 pts