“The greatest shortcoming of the human race is our inability to understand the exponential function.”
Albert Allen Bartlett
Nous avons vu dans l’article des moyennes mobiles simples (ou arithmétiques) que leur utilisation était fortement impactée par le lag : en effet, la moyenne étant une forme de lissage des cours, au moment où nous pensions voir un signal, il s’avérait que le cours avait déjà bougé suffisamment pour ronger une bonne partie de nos bénéfices potentiels.
Et en fin d’article, je vous annonçais qu’il y avait des possibilités de réduction de l’impact du lag, en donnant plus de force aux cours récents par rapport aux cours plus anciens. Et c’est ce que nous allons voir dans cette article. L’idée étant de pondérer les moyennes, c’est-à-dire donner un poids différent à chacune des composantes de calcul de la moyenne mobile. Il y a plusieurs méthodes pour ça, mais nous verrons les principales : les moyennes mobiles pondérées et exponentielles.
Prérequis
Cet article est plutôt théorique, la partie backtest sera faite à part. Les prérequis sont simplement :
- Connaitre le principe des moyennes mobiles arithmétiques (simple) : Analyse Technique niveau 0 : la moyenne mobile simple
- Etant donné que j’ai du utiliser le calcul matriciel dans Excel dans la feuille de travail, il faut connaitre ce procédé : Créer une formule matricielle
- Les bases sur les suites arithmétiques car on va les utiliser dans un petit calcul que je ne détaillerais pas : Suites arithmétiques
- Idem pour les suites géométriques : Suites géométriques
Vous trouverez ici le fichier de travail pour cet article. Je me suis basé sur une année de données journalières du CAC40, prises depuis Yahoo Finance : WeightedMovingAverage
Moyenne mobile pondérée
La pondération simple est la manière la plus simple de donner une importance différente à chaque composante de la moyenne. Il suffit de donner un poids arbitraire (ou pas) à un élément de la liste.
C’est exactement comme à l’école (après le collège) où certaines matières avaient un plus gros coefficient que d’autres. Le calcul de la moyenne était :
Moyenne (élève) = pour toute matière i, Somme ( Coeff ( i ) * Somme ( Notes ( i ) ) / Somme ( Nbre_Notes ( i ) * Coeff ( i ) )
Illustration :
- Maths : coefficient 3, notes = 12, 16, 15
- Philo : coefficient 1 (oui c’est une classe scientifique :)), notes : 8, 13
- Moyenne = ((3 * (12 + 16 + 15)) + (1 * (8 + 13))) / ((3 * 3) + (1 * 2)) = 13,63
Dans l’illustration, le coefficient est arbitraire et déterminée par la classe de l’élève et la gestion académique. Mais pour nous, dans le cadre de cours financiers, le coefficient va tout simplement être la position du cours utilisé.
Pour une période de 3, à J-3, le coefficient sera de 1. A J-2, ce sera 2, à J-1, ce sera 3… La formule est donc :
MoyenneMobilePondérée = pour i allant de 0 à T – 1, avec T la période, Somme ( ( i + 1 ) * Cours ( J – T – i ) ) / SommePondérations
avec SommePondérations = ( T * ( T + 1 ) / 2 ) car c’est la somme des éléments d’une suite arithmétique de raison 1 de T éléments
Nous avons donc pour une moyenne mobile pondérée de période 50 :
Pour générer ce graphe à partir d’Excel, il faut utiliser une formule matricielle pour pouvoir associer un coefficient à chaque élément d’un tableau lors d’une somme. Ce calcul est fait dans l’onglet “CHART” du fichier de travail.
Avec une image toute seule comme ça, ce n’est pas évident de tirer des conclusions. Voyons donc la suite, la moyenne mobile exponentielle, considérée comme la “reine” des moyennes mobiles, ou en tout cas la plus pertinente.
Moyenne mobile exponentielle
Le principe de la moyenne mobile exponentielle est légèrement différent que celui des autres moyennes mobiles vues jusqu’à présent.
Ce n’est pas une moyenne calculée en faisant une somme, que l’on divise, comme une moyenne traditionnelle, mais elle est définie par récurrence :
pour un jour i donné, MoyenneMobileExponentielle ( i ) = a * Cours ( i ) + ( 1 – a ) * MoyenneMobileExponentielle ( i – 1 )
On appelle a le facteur de lissage, qui est compris entre 0 et 1. Et selon où on place a sur le curseur, on donnera plus ou moins d’importance au cours actuel par rapport au passé.
Comme toute suite par récurrence, il faut l’initialiser. Par convention, on prend la valeur du premier cours. Vous pouvez utiliser une autre valeur (comme une moyenne simple de quelques valeurs par exemple), mais vous risquez d’avoir des différences avec les logiciels de calcul.
On dit que la moyenne mobile est exponentielle, car avec un facteur de lissage compris entre 0 et 1, le poids d’un jour donné décroit exponentiellement plus on recule dans le temps. La démonstration est assez simple, il suffit de développer la suite pour voir apparaître un facteur de décroissance inférieur à 1, ce qui donne une décroissance exponentielle :
Facteur de lissage
On a parlé du facteur de lissage, mais on ne l’a pas encore défini. D’ailleurs, c’est lui qui défini de quelle moyenne on parle. Par exemple, la formule de moyenne mobile lissée est la même, mais c’est le facteur de lissage qui va changer. Pour la moyenne mobile exponentielle, le facteur de lissage est :
a = 2 / ( T + 1 ) avec T la période
Cette valeur a été choisie empiriquement, avec des travaux essentiellement issus du traitement du signal, et permet de faire correspondre le passé à environ 86% de la moyenne. Ce qui nous donne avec le même jeu de données que pour la moyenne mobile pondérée :
Hum, cela semble assez proche de la précédente. Avoir une comparaison sur un graphique unique serait bien utile :
Première chose que l’on voit, c’est que les moyennes mobiles pondérées et exponentielles croisent le cours en avance par rapport à la moyenne mobile simple. Du coup j’ai envie de dire mission accomplie !
En revanche, il est plus compliqué de repérer laquelle est la plus pertinente entre la pondérée et l’exponentielle. La première semble capter un peu mieux les gros mouvements.
Je pense qu’on va devoir faire quelques backtest bientôt pour vérifier tout ça 🙂
PS : dans le GoingStrikerBot il est possible de faire le calcul d’indicateur, dont les moyennes mobiles simples, pondérése, et arithmétiques.
Il y a un module IndicatorComputer :
Ping :Moyennes mobiles pondérées et exponentielles : les backtests – AutoQuant
Ping :Analyse technique + volatilité = Average True Range – AutoQuant
Ping :La mesure de la Force : le Relative Strength Index - AutoQuant