Moyenne mobile exponentielle
Cinq relevés qui partent de 10 et montent d'un pas à chaque fois, lissés avec un facteur de 0,5, finissent sur une EMA de 13,0625 : les valeurs récentes comptent davantage et les anciennes s'effacent géométriquement. Vous obtenez tout le parcours lissé. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Série
- 10, 11, 12, 13, 14
- Facteur
- 0,5
- N
- 5
- Ema
- 10, 10,5, 11,25, 12,125, 13,0625
- Dernière EMA
- 13,0625
Une moyenne mobile exponentielle (EMA) est un lisseur récursif qui multiplie la dernière observation par un facteur de lissage α et la combine à l’EMA précédente avec le poids (1 − α). Contrairement à une moyenne mobile simple qui donne un poids égal à chaque point d’une fenêtre fixe et zéro hors de celle-ci, l’EMA retient toute l’historique avec une influence à décroissance géométrique, de sorte que les lectures récentes déplacent le résultat plus que les anciennes.
Ce qu’est une moyenne mobile exponentielle et en quoi elle diffère d’une moyenne simple
Partez de la moyenne mobile simple (SMA) : choisissez une longueur de fenêtre N, moyennez les N derniers points et faites glisser la fenêtre. Chaque point dans la fenêtre a le poids 1/N ; chaque point plus ancien que N a le poids zéro. Cette coupure nette est facile à expliquer, mais crée des sauts lorsqu’un grand pic entre ou sort de la fenêtre et ignore entièrement d’anciennes informations utiles.
La moyenne mobile exponentielle remplace la fenêtre rigide par un seul facteur de lissage α entre zéro et un. En déroulant la récurrence, le poids d’une observation k pas en arrière est α · (1 − α)^k, une série géométrique qui ne tombe jamais tout à fait à zéro et décroît vite lorsque α est grand. Lorsque α est petit, la trajectoire est lisse et très retardée ; lorsque α se rapproche de un, l’EMA épouse la dernière valeur.
Les opérateurs fixent souvent α = 2 / (N + 1) pour qu’une « EMA à N périodes » ait une demi-vie comparable à une SMA à N périodes, mais l’objet mathématique n’a besoin que de α. Les analystes utilisent des EMA sur les prix, volumes, flux de capteurs, métriques web et bruit résiduel car la mise à jour est O(1) par tick après l’initialisation, n’exige que l’état EMA précédent et n’anticipe pas l’avenir en ligne.
Une moyenne arithmétique simple de toute la série est une autre statistique : elle traite également la première et la dernière observation et n’est pas un filtre temporel. Cet outil est spécifiquement le filtre EMA récursif avec un α explicite, ni une moyenne à fenêtre glissante ni la moyenne et la variance d’une loi de probabilité exponentielle.
Cas d’usage
Lisseurs de prix et de rendements dans les carnets de trading
Quantitatifs et étudiants calculent des trajectoires EMA sur les cours de clôture avec un α explicite (ou α issu du span N) pour comparer retard, bruit et règles de croisement sans formules de tableur.
Métriques de capteurs et d’exploitation
Les ingénieurs lissent des flux de température, de latence ou de taux d’erreur avec un α réactif afin que les tableaux de bord mettent en évidence les changements de régime récents tout en amortissant les pics d’un seul échantillon.
Questions fréquentes
Quelle formule l’EMA utilise-t-elle ?
Un α plus élevé pondère davantage les points récents.
Comment convertir un span d’EMA à N périodes en α ?
Une convention courante est α = 2 / (N + 1). Passez l’α résultant comme factor ; cet outil n’accepte pas le span seul.
Quel facteur de lissage choisir ?
Les filtres courts et réactifs utilisent souvent des valeurs proches de 0,3 à 0,5, les filtres lents de tendance des valeurs proches de 0,05 à 0,1. Un facteur élevé suit de près la dernière valeur, un facteur faible donne une courbe plus lisse mais plus en retard.
Quelle différence entre une EMA et une moyenne mobile simple ?
La moyenne mobile simple donne le même poids à chaque point d'une fenêtre fixe et ignore les plus anciens, ce qui crée des sauts quand un pic entre ou sort. L'EMA garde tout l'historique avec des poids qui décroissent géométriquement.
Pourquoi la première EMA est-elle égale à la première valeur ?
Parce que le parcours doit bien commencer quelque part : le calculateur l'amorce avec votre première observation. À partir de la deuxième valeur, chaque pas mélange la nouvelle observation et l'EMA précédente.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/stat/exponential-moving-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"series":[10,11,12,13,14],"factor":0.5}'const res = await fetch("https://api.kit.forhosting.com/stat/exponential-moving-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"series": [
10,
11,
12,
13,
14
],
"factor": 0.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/exponential-moving-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"series": [
10,
11,
12,
13,
14
],
"factor": 0.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/exponential-moving-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"series":[10,11,12,13,14],"factor":0.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"series":[10,11,12,13,14],"factor":0.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/exponential-moving-average", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"series": [
10,
11,
12,
13,
14
],
"factor": 0.5
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.exponential_moving_average",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Ce calculateur prend une série chronologique de nombres finis et un facteur α dans l’intervalle semi-ouvert (0, 1], initialise la trajectoire avec la première observation, puis applique EMA_t = α · x_t + (1 − α) · EMA_{t−1} pour chaque indice ultérieur. La réponse renvoie le tableau EMA complet, le last_ema final, la longueur n de la série, le facteur utilisé et une chaîne de formule compacte. Les séries vides, les entrées non finies et les facteurs hors de (0, 1] échouent avec invalid_input afin que les appelants ne reçoivent jamais un NaN silencieux. L’arithmétique est entièrement déterministe, s’exécute gratuitement dans votre navigateur et est disponible via l’API à $0.002 par requête réussie, sans modèle de langage ni service externe de données de marché sur le chemin critique.
Ce qu’est une moyenne mobile exponentielle et en quoi elle diffère d’une moyenne simple
À chaque pas de temps, la nouvelle estimation est une combinaison convexe de la nouvelle observation et de l’estimation précédente : EMA_t vaut α fois x_t plus (1 − α) fois EMA_{t−1}.
Comment ce calculateur valide l’entrée et construit la trajectoire EMA
Appelez la capacité avec deux champs obligatoires : series (un tableau non vide de nombres finis en ordre chronologique, le plus ancien en premier) et factor (le coefficient de lissage α). La validation rejette un champ manquant, une série non tableau, une série vide, des listes plus longues que le maximum publié, toute entrée qui n’est pas un nombre fini et tout facteur qui n’est pas un nombre fini strictement supérieur à zéro et au plus égal à un. Le moteur accepte aussi les alias values, data, x et prices pour la série, et alpha, smoothing et smoothing_factor pour le facteur, afin que les scripts qui parlent déjà ainsi n’aient pas besoin d’une étape de renommage. Lorsque le facteur est hors plage, le message d’erreur le dit explicitement sous invalid_input, et les échecs de validation ne consomment pas le solde prépayé. Après validation, le noyau initialise EMA_0 avec la première valeur de la série, puis avance une seule fois : à chaque indice t il pose EMA_t = α · x_t + (1 − α) · EMA_{t−1}, arrondit les résultats intermédiaires à douze décimales pour un JSON stable entre runtimes et stocke la trajectoire complète. La réponse renvoie n, factor, series, ema, last_ema et formula afin que le code en aval puisse tracer la trajectoire, affirmer le niveau final ou recalculer des étapes intermédiaires sans renvoyer la requête.
Usage pratique, choix du facteur, tarification et livraison
Utilisez l’outil navigateur lorsque vous souhaitez une EMA immédiate pour vérifier un carnet de trading, lisser un capteur de laboratoire bruyant ou expliquer des poids géométriques en cours de statistique sans installer de paquet. Choisissez α selon la convention du domaine : les filtres courts et réactifs utilisent des valeurs proches de 0.3–0.5 ; les filtres de tendance lents, proches de 0.05–0.1 ; le mappage courant de span α = 2 / (N + 1) transforme une EMA à 9 périodes en α = 0.2 et une à 19 périodes en α = 0.1. Si vous stockez déjà le span N plutôt que α, convertissez une fois avant l’appel. Il n’y a ni modèle de langage, ni flux de marché externe, ni aléatoire, donc la capacité est sûre à figer dans des contrôles d’intégration continue et des supports de cours reproductibles. Utilisez l’API lorsqu’un script, une plateforme d’apprentissage, un banc de backtest ou un tableau de bord a besoin d’un JSON stable pour de nombreuses séries sous un seul contrat. Chaque requête réussie est un élément facturable à $0.002 ; une validation échouée ne consomme pas le solde. Les séries acceptées restent bornées pour les isolats Worker : jusqu’à cent mille points couvrent des tables de cours, des historiques de prix quotidiens et des extraits analytiques typiques tout en restant rapides. Les résultats sont entièrement déterministes : la même série et le même facteur produisent toujours le même tableau ema et le même last_ema. Branchez l’endpoint à des aides de graphiques, des tutoriels quantitatifs, des tableaux de contrôle qualité, des sandboxes d’entretien de code ou des étapes de prétraitement où vous préférez déjà une récurrence EMA en forme fermée à des lisseurs opaques qui cachent leur règle d’initialisation ou tronquent α en silence.
Cas d'intégration
Enseignement des filtres récursifs et des poids géométriques
Enseignants et correcteurs de devoirs montrent comment les poids EMA décroissent comme (1 − α)^k et vérifient les implémentations des élèves contre un last_ema golden stable.
Questions techniques
Comment calculer une moyenne mobile exponentielle avec cet outil ?
Envoyez un JSON avec series (tableau de nombres, le plus ancien en premier) et factor (α dans (0, 1]) à stat.exponential_moving_average. La réponse renvoie ema, last_ema, n, factor, series et formula.
Que se passe-t-il si le facteur de lissage est hors plage ?
La requête échoue avec invalid_input. α doit être un nombre fini strictement supérieur à 0 et au plus égal à 1 ; les valeurs hors de cette plage sont rejetées.
Le calculateur de moyenne mobile exponentielle est-il gratuit ?
L’outil navigateur s’exécute gratuitement sur votre appareil. Les appels API utilisent le solde prépayé KIT à $0.002 par élément réussi ; les échecs de validation ne sont pas facturés.