Dixième et dernier module du challenge #100JoursDeML. Ventes, trafic, consommation, cours de bourse : une énorme partie des données d'entreprise sont des séries temporelles — des observations ordonnées dans le temps, où l'ordre change tout : on ne peut plus mélanger les lignes, et la validation croisée classique devient interdite. Chaque leçon est détaillée ci-dessous avec sa vidéo.
📥 La checklist offerte du challenge
Recevez le PDF avec les 100 leçons à cocher et suivez votre progression jour après jour.
Leçon 1 — Les 5 notions indispensables
Le vocabulaire de base : une série se décompose en tendance (l'évolution de long terme), saisonnalité (les motifs qui se répètent à période fixe — le pic des ventes de décembre), cycles (les fluctuations sans période fixe) et bruit (l'aléa résiduel). S'y ajoutent la fréquence d'observation (horaire, journalière, mensuelle) et l'horizon de prévision. Bien décomposer une série, c'est déjà la moitié de l'analyse.
Leçon 2 — Comprendre la stationnarité
Une série est stationnaire quand ses propriétés statistiques — moyenne, variance, autocorrélations — sont stables dans le temps. C'est l'hypothèse de base de la plupart des modèles. On la vérifie avec le test de Dickey-Fuller augmenté (ADF), dont l'hypothèse nulle est la non-stationnarité (présence d'une racine unitaire). Pour rendre une série stationnaire, l'outil principal est la différenciation : travailler sur les variations plutôt que sur les niveaux.
from statsmodels.tsa.stattools import adfuller
stat, p_value, *_ = adfuller(serie)
print(f"p-value ADF : {p_value:.4f}") # > 0.05 → non stationnaire
serie_diff = serie.diff().dropna() # différenciation d'ordre 1
⚠️ Point important : modéliser une série non stationnaire sans la transformer, c'est le meilleur moyen d'obtenir de très belles prédictions… complètement fausses. C'est aussi la source des régressions fallacieuses — deux séries qui montent ensemble sans aucun lien réel.
Leçon 3 — Comprendre le modèle ARIMA en 10 minutes
ARIMA(p, d, q) combine trois ingrédients : une partie autorégressive AR(p) — la série dépend de ses p valeurs passées —, une différenciation d'ordre d pour atteindre la stationnarité, et une moyenne mobile MA(q) — la série dépend aussi des q erreurs de prévision passées. Les fonctions d'autocorrélation (ACF) et d'autocorrélation partielle (PACF) mesurent la mémoire de la série et guident le choix des ordres p et q, selon la méthodologie classique de Box-Jenkins : identification, estimation, diagnostic.
Leçon 4 — ARIMA en pratique avec Python
Guide complet avec statsmodels : visualiser et tester la stationnarité, différencier, lire ACF/PACF, ajuster l'ARIMA, vérifier les diagnostics (les résidus doivent ressembler à du bruit blanc), puis produire des prévisions avec leurs intervalles de confiance — une prévision sans incertitude chiffrée ne vaut rien.
from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(serie, order=(1, 1, 1)).fit()
print(model.summary())
previsions = model.get_forecast(steps=12)
print(previsions.predicted_mean) # les prévisions
print(previsions.conf_int()) # leurs intervalles de confiance
Leçon 5 — Le modèle VAR expliqué simplement
Quand plusieurs séries s'influencent mutuellement (prix et demande, taux et inflation), le modèle VAR (vectoriel autorégressif) les modélise ensemble : chaque série dépend de son propre passé et du passé des autres. C'est l'outil de référence de la macroéconomie, qui permet aussi d'étudier la causalité de Granger — le passé d'une série améliore-t-il la prévision d'une autre ?
Leçon 6 — Construire un modèle VAR en Python
Tutoriel pas à pas : vérifier la stationnarité de chaque série, choisir le nombre de retards par les critères d'information (AIC, BIC), estimer, puis interpréter avec les fonctions de réponse impulsionnelle — comment un choc sur une série se propage aux autres au fil du temps.
Leçon 7 — Le modèle VECM en 10 minutes
Deux séries non stationnaires peuvent partager une relation d'équilibre de long terme : on dit qu'elles sont cointégrées (le test de Johansen le vérifie). Le VECM (modèle vectoriel à correction d'erreur) exploite cette propriété : il ajoute au VAR un terme de correction d'erreur qui ramène les séries vers leur équilibre quand elles s'en écartent — typique des paires prix spot/prix futures.
Leçon 8 — Le VECM en pratique avec Python
Mise en œuvre complète : test de cointégration de Johansen, estimation du VECM, lecture des relations de long terme et des vitesses d'ajustement, et prévision.
Leçon 9 — Tout savoir sur les modèles de séries temporelles
La leçon de synthèse : l'arbre de décision complet pour choisir son modèle — une série ou plusieurs ? stationnaire ou non ? cointégration ou pas ? — d'AR à VECM, avec les cas d'usage types de chacun.
Leçon 10 — Comprendre ARCH et GARCH
Les modèles vus jusqu'ici prédisent le niveau d'une série. Les modèles ARCH et GARCH modélisent sa volatilité — la variance des rendements, qui varie dans le temps et se regroupe en épisodes calmes et agités (le volatility clustering, signature des marchés financiers). ARCH fait dépendre la variance des chocs passés ; GARCH y ajoute la variance passée elle-même. C'est l'outil standard de la gestion des risques.
Leçon 11 — GARCH en pratique : Apple et le CAC 40
Cas réel de bout en bout : récupérer les cours, calculer les rendements (les variations relatives — c'est eux qu'on modélise, jamais les prix bruts), vérifier le clustering de volatilité, ajuster un GARCH et interpréter les prévisions de volatilité sur les actions Apple et l'indice CAC 40.
from arch import arch_model
rendements = 100 * prix.pct_change().dropna() # on modélise les rendements
garch = arch_model(rendements, vol="GARCH", p=1, q=1).fit(disp="off")
print(garch.summary())
volatilite_prevue = garch.forecast(horizon=5).variance
💡 À retenir : modéliser la volatilité d'une action, oui ; prédire son cours pour s'enrichir, non — c'est le mythe numéro un que démontait Guillaume Durand, CDO de LCL, dans l'épisode du podcast.
Leçon 12 — Ouverture : le machine learning sur données non structurées
Dernier horizon du challenge : comment aborder le texte, les images, l'audio et la vidéo — les données non structurées, qui exigent de les transformer en représentations numériques avant toute modélisation. C'est la porte d'entrée vers le deep learning, à explorer avec le challenge 30 Jours de Deep Learning.
Félicitations : si vous êtes arrivé ici en codant chaque module, vous avez un portfolio complet et des bases plus solides que la majorité des candidats data scientist. Retour au guide du challenge.
Références
- Box & Jenkins (1970), Time Series Analysis: Forecasting and Control — la bible d'ARIMA
- Dickey & Fuller (1979), « Distribution of the estimators for autoregressive time series with a unit root », JASA
- Sims (1980), « Macroeconomics and reality », Econometrica — le VAR (prix Nobel 2011) · Johansen (1991), cointégration, Econometrica
- Engle (1982), ARCH (prix Nobel 2003) · Bollerslev (1986), GARCH, Journal of Econometrics
- Documentation statsmodels : séries temporelles · bibliothèque arch




