Construire et lire une moyenne mobile dans Power BI

Proposé par André Meyer-Roussilhon

17 novembre 2020

Dax

Restez informé, abonnez-vous à la newsletter (2 fois / mois)

9 + 3 =

Note : l’ensemble des exemples proposés sont basés sur le cours de l’or entre le 17/11/19 et le 16/11/20, téléchargé à partir de Yahoo ! Finance

La moyenne mobile, généralités

Une moyenne mobile sert à « lisser » une série de valeurs exprimées chronologiquement afin d’éliminer les fluctuations les moins significatives (elle filtre le « bruit excessif »). On la dit « mobile » car son calcul est actualisé à chaque période (jour par exemple).

La moyenne mobile est utilisée pour déterminer les tendances et l’inertie d’un phénomène.

Elle est notamment utilisée en bourse (calculs financiers) ou dans le domaine immobilier. Les moyennes mobiles les plus couramment utilisées dans le domaine financier sont la moyenne à 30 séances (mm30), 50 séances (mm50) et 200 séances (mm200). Ces indicateurs sont des outils techniques d’analyse.

Dans l’exemple ci-dessous, la tendance globale est difficile à déchiffrer :

J’ai souligné l’évolution avec une moyenne mobile à 3 jours (MMS3)

On ne voit pas les grandes tendances, et on est limité à des lectures parcellaires. En revanche, si vous ajoutez une moyenne mobile à 30 jours (MMS30, en orange), la situation s’éclaire :

On lit beaucoup mieux l’évolution globale positive de cet indice, et la légère rechute en octobre / novembre

Exemple de lecture d’une moyenne mobile

On lit généralement les moyennes mobiles de 2 façons :

  • En comparant les croisements entre les moyennes mobiles et les cours. Lorsque les cours dépassent la ligne de moyenne mobile à la hausse, on identifie un signal d’achat, et inversement (si la ligne des cours dépasse celle de la moyenne mobile à la baisse, on se trouve face à un signal de vente) ; on voit notamment que l’été 2020 a été une période de fort achat suivi à la rentrée d’un cycle baissier
  • On peut aussi croiser plusieurs moyennes mobiles entre elles, par exemple une moyenne à court terme et une moyenne long terme. Si la moyenne court terme se trouve au dessus de la moyenne long terme et que leur écart s’accroît, on identifie un signal d’achat et inversement. Si les deux moyennes se superposent on se trouve face à un « range ».

La moyenne mobile dans Power BI

La moyenne mobile dans Power BI est un sujet particulièrement intéressant : l’idée centrale, c’est – dans le contexte de filtre défini par l’intervalle (mettons, le jour), de créer la « vue » couvrant toute la période (de J-30 à J pour une moyenne mobile à 30 jours) pour pouvoir en faire la moyenne. C’est donc un pur exercice de modification du contexte de filtre.

L’utilisation de variables dans la formule permet d’éclaircir considérablement la lecture, et de jouer sur le moment où est calculée la variable.

Voici par exemple la formule d’une moyenne mobile à 30 jours :

Remarquez l’utilisation de la variable longueur (il suffit de changer ce paramètre pour passer à une moyenne à 50 ou 200 jours).

La variable ref me donne la valeur de l’index du jour, et me permet de calculer la période, c’est-à-dire la « vue » sur laquelle je base le calcul de la moyenne. Cette variable (periode) est en effet une table (FILTER). Le nombre de ligne de la table est déterminé par la différence entre ref (le jour présent dans le contexte de filtre) et la longueur ; ainsi, si je suis sur la ligne du 30 novembre, la période va du 1er au 30 novembre.

Enfin, une fois la « vue » créée, AVERAGEX calcule la moyenne en parcourant chaque ligne de la table periode.

La moyenne mobile simple (MMS)

Il existe deux ou trois types de moyennes mobiles.

La MMS d’une série statistique est une moyenne ordinaire. Ainsi, pour une moyenne mobile sur 30 jours, on calcule la somme des cours de clôture des 30 dernières séances boursières, puis on divise cette somme par 30. Cette moyenne est recalculée chaque jour sur les 30 dernières séances.

On différencie la MMS centrée et la MMS non centrée : si l’on prend un intervalle de 3 jours, la première calcule la moyenne avec les valeurs J-1, J, et J+1 ; la seconde avec J-2, J-1 et J. La mms non centrée sert souvent à établir des prévisions pour J+1.

Les exemples ci-dessus sont des moyennes mobiles non-centrées.

Moyenne mobile pondérée (MMP) ou exponentielle (MME)

Note : j’ai trouvé plusieurs définitions de la MME, qui est soit assimilée à la MMP, soit calculée selon une méthode propre (spécifiquement au domaine financier). Je fais le choix d’une définition large, où les deux moyennes sont identiques. Les experts du trading ne m’en voudront pas !

Cette moyenne a pour particularité d’affecter une pondération plus importante aux périodes les plus récentes. Ainsi pour une moyenne mobile à 30 jours, le cours le plus récent sera multiplié par 30, celui de la veille par 29, le précédent par 28, etc. Le tout est divisé par la somme des coefficients afin que le dernier cours ait une importance 30 fois supérieure au cours éloigné de 30 jours.

La MME est réputée plus juste, notamment parce qu’elle réagit de manière plus sensible aux tendances les plus récentes. Regardez par exemple la courbe ci-dessous (MMS en bleu, MME en orange) :

La MME (en orange) réagit beaucoup plus vite aux variations du cours de l’or

La MACD

La Moving Average Convergence Divergence est un outil très répandu dans le trading.  Elle repose sur la différence entre la MME12 et la MME26 (appelée MACD rapide), la MME9 de la MACD rapide (appelée ligne de signal), et l’histogramme montrant la différence entre la MACD Rapide et la ligne de signal. (Vous me suivez toujours ???). Ces intervalles peuvent être plus rapprochés.

Voici à quoi ressemble le graphique final :

Ce qui est intéressant, du point de vue de la lecture de cette courbe, c’est qu’à chaque fois que la ligne bleue coupe et dépasse la ligne rouge (histogramme bleu), c’est un signal d’achat, et qu’à l’inverse si la ligne rouge coupe et dépasse la bleue (histogramme rouge), c’est un signal de vente. On retrouve d’ailleurs un fort pic d’achat début juillet / mi-août, suivi d’une période (un peu plus chaotique) de vente à la rentrée, mais de manière plus tassé (des achats également).

La MACD est en effet l’un des outils d’analyse et de stratégie dans le domaine boursier.

Mise en œuvre dans Power BI

J’explique ici les différentes mesures créées.

Je me suis servi d’un fichier CSV reprenant le cours de l’or sur un an. Lors de l’import du fichier, j’ai supprimé les lignes vides, mais plus important, j’ai ajouté un index : chaque jour a donc un « numéro ». Notez que je n’ai pas créé de table du temps supplémentaire. Enfin je termine par la création de ma mesure : le cours de clôture défini par

cours_clot = SUM(prix_or_1an[Clôture]))

J’ai déjà évoqué la MMS :

L’élégance de la formule, c’est qu’il suffit de changer la seule variable longueur pour modifier la portée du calcul.

Remarquez simplement ici que j’ajoute un test (IF (COUNTROWS(periode) = longueur , …) pour ne faire le calcul qu’à partir du moment où il y a effectivement 30 jours dans la « vue », et éviter de calculer la moyenne mobile sur moins de 30 jours – ceci concerne le début du graphique :

La MME est plus complexe à formuler, à cause de la pondération. J’ai trouvé une solution en intégrant une variable à l’intérieur de la fonction itérative (SUMX car AVERAGEX ne sait pas faire un calcul pondéré) :

La base de la formule est la même que pour la MMS, mais le numérateur et le dénominateur sont calculés de manière spécifique, pour obtenir la moyenne pondérée (ou exponentielle). Remarquez la pondération, calculée à l’intérieur de la fonction itérative (SUMX) : cela signifie qu’à chaque ligne de la « vue » periode, une nouvelle pondération est déterminée.

Le dénominateur est la somme de toutes les pondérations, calculée à partir de l’index et de la longueur.

Enfin pour ce qui concerne la MACD, voici ce que je vous propose. La MACD rapide est une simple soustraction :

macd rapide = [mme12] - [mme26]

Le MME9 est une MME dont le numérateur est déterminé par la MACD rapide :

Enfin l’histogramme est une simple différence :

histo = [macd rapide] - [mme9 ligne de signal]

Pour réaliser le graphique, je me sers d’une mise en forme conditionnelle sur l’histogramme :

Utilisez fx de Couleur par défaut pour accéder à la mise en forme conditionnelle :

Articles associés :

Créer un graphique à base zéro pour suivre l’évolution

Créer un graphique à base zéro pour suivre l’évolution

Dans un graphique à base zéro, le premier point sert de référence (le point zéro), et tous les autres sont calculés en pourcentage de variation par rapport à cette référence. Ce type de graphique est utilisé par exemple dans le domaine financier, pour suivre l’évolution du cours d’une action – mais il peut servir pour suivre l’évolution de tout type de donnée.
Le graphique est intimidant, mais sa réalisation est en fait très facile, et repose sur des formules DAX étonnamment simples.

Délai entre deux dates, week-end et jours fériés

Délai entre deux dates, week-end et jours fériés

Une table du temps qui calcule automatiquement les jours fériés ? Vous en rêviez, daxone.fr vous l’offre ! Et j’en profite pour vous donner la méthode pour calculer le nombre de jours écoulés entre deux dates, en excluant les dimanches et les jours fériés (je suis sûr que ça va vous servir)

SUMMARIZECOLUMNS : la super-fonction du DAX

SUMMARIZECOLUMNS : la super-fonction du DAX

Vous ne connaissez peut-être pas cette fonction, et c’est pourtant celle que Power BI utilise le plus fréquemment pour répondre à vos demandes : il suffit de regarder le code généré par Power BI pour afficher votre visuel pour s’en convaincre.
Avec SUMMARIZECOLUMNS , la création d’une table issue de données provenant de différentes autres tables du modèle, incluant de nouveaux indicateurs, et filtrée sur des données précises, devient un jeu d’enfant.