marql

Un rayon vide n’est pas une demande nulle : comment les ruptures faussent la prévision d’une chaîne de magasins

Une caisse enregistre ce qui s’est vendu, pas ce que les clients voulaient. Une prévision entraînée sur les ventes des jours en rupture apprend le rayon au lieu du client, et la commande suivante vide le rayon plus tôt.

À retenir

  • Les ventes enregistrées sont le plus petit de deux nombres, la demande et le stock en rayon ; un jour où le rayon se vide, le reste de la demande ne laisse aucune trace.
  • Les prévisions entraînées sur ces ventes sous-estiment la demande, et l’erreur est la plus forte dans les catégories de frais qui tombent le plus souvent en rupture.
  • L’erreur s’auto-entretient : une prévision plus basse donne une commande plus petite, une rupture plus précoce et un historique encore plus bas.
  • Les chefs de magasin font la même erreur à la main quand ils réduisent une commande après une rupture.
  • Traitez les jours de rayon vide comme des données manquantes ou comme un plancher, et vérifiez que le stock théorique sur lequel repose le signalement est juste.

Une caisse enregistre ce qui s’est vendu, pas ce que les clients voulaient. Quand le yaourt manque à trois heures de l’après-midi, l’historique du jour s’arrête à ce qu’il y avait en rayon, et les clients venus le soir ne laissent aucune trace. Les statisticiens appellent ces données censurées. L’essentiel du réapprovisionnement des chaînes de magasins repose sur elles, et l’erreur qu’elles introduisent ne reste pas figée.

1. Les ventes, c’est la demande plafonnée par le stock

Notons D la demande du jour et I le stock disponible. La caisse voit y = min(D, I) : toute la demande un jour où le rayon tient, et exactement le stock un jour où il ne tient pas. La part perdue, D − y, n’est jamais enregistrée. Une moyenne des ventes sur 28 jours mélange donc deux sortes de jours, et ceux qui ont fini en rupture la tirent vers le bas. Il en va de même pour la dispersion des ventes, l’autre donnée d’entrée du stock de sécurité. Repérer ces jours est la première étape ; le guide des ruptures de stock montre comment les détecter dans les données de ventes et de stock.

2. Ce qu’une journée cache

La mesure publique la plus nette vient de FreshRetailNet-50K, un jeu de données publié en 2025 par l’épicier en ligne chinois Dingdong : les ventes horaires de 863 produits périssables sur 898 sites dans 18 villes, chaque heure étant marquée quand le produit était en rupture1. Ces sites sont de petits entrepôts de produits frais qui livrent en 30 minutes, que l’article appelle des magasins. Après le réassort de 6 h, les ruptures tombaient sous 2 % ; elles remontaient ensuite régulièrement jusqu’à 26 % à 20 h.

En vente à 6 h, après le réassort98Encore en vente à 20 h74

Sur 100 produits référencés par un site, arrondi d’après les taux de rupture horaires de FreshRetailNet-50K.

Un produit épuisé dans l’après-midi affiche quand même des ventes pour la journée, si bien qu’un rapport quotidien le compte comme disponible. Son historique est amputé de tout ce que la soirée aurait vendu. Sur l’ensemble du jeu de données, reconstituer la demande cachée a supprimé une sous-estimation systématique de 7,37 %1. Une étude de 2026 sur les mêmes données a détaillé la censure par catégorie2 :

Légumes-feuillesHeures-magasin en rupture31,2 %Erreur de prévision, entraînée sur les ventes42,8 %Erreur de prévision, tenant compte de la censure38,9 %Baisse des pertes simulée4,7 points
Poisson et fruits de merHeures-magasin en rupture27,6 %Erreur de prévision, entraînée sur les ventes41,5 %Erreur de prévision, tenant compte de la censure38,0 %Baisse des pertes simulée4,2 points
FruitsHeures-magasin en rupture21,4 %Erreur de prévision, entraînée sur les ventes39,4 %Erreur de prévision, tenant compte de la censure36,9 %Baisse des pertes simulée3,4 points
ViandeHeures-magasin en rupture19,8 %Erreur de prévision, entraînée sur les ventes38,3 %Erreur de prévision, tenant compte de la censure36,2 %Baisse des pertes simulée3,0 points
Légumes racinesHeures-magasin en rupture17,3 %Erreur de prévision, entraînée sur les ventes37,6 %Erreur de prévision, tenant compte de la censure35,8 %Baisse des pertes simulée2,6 points
Produits laitiersHeures-magasin en rupture8,9 %Erreur de prévision, entraînée sur les ventes35,2 %Erreur de prévision, tenant compte de la censure34,4 %Baisse des pertes simulée1,4 point
Yin, Zheng et Kong (2026) sur FreshRetailNet-50K. L’erreur de prévision est l’erreur absolue moyenne pondérée en pourcentage (WAPE) ; la baisse des pertes provient d’une simulation de réapprovisionnement.

La tendance est monotone : plus une catégorie tombe souvent en rupture, plus une prévision entraînée sur les ventes se trompe, et plus une prévision qui tient compte de la censure regagne de terrain. Les produits laitiers, qui se conservent longtemps et manquent rarement, bougent à peine.

3. Le modèle apprend le rayon

Tout modèle chargé de reproduire les ventes reproduit aussi leur plafond. Yin, Zheng et Kong le disent sans détour : « Tout modèle entraîné à reproduire les ventes sous-estime la demande d’environ huit pour cent »2. Quand ils ont masqué une plus grande part des heures de pointe, d’un dixième à la moitié, le biais d’un modèle performant entraîné sur les ventes est passé de −4,2 % à −21,1 %. Leur modèle traite une heure en rupture comme un plancher, et non comme la demande : la demande était au moins égale à ce qui s’est vendu. Dans leur simulation, commander à partir de ce modèle a fait baisser les pertes modélisées de 9,8 % à 6,4 %, tandis que la part de la demande servie passait de 92,9 % à 94,7 %2. Moins de pertes et une meilleure disponibilité en même temps, c’est la signature d’un biais corrigé ; un modèle qui se serait contenté de commander davantage aurait sacrifié l’une à l’autre.

4. La spirale

Avec le temps, le biais s’aggrave, car la prévision fixe la commande suivante et la commande fixe l’historique suivant :

  1. Le rayon se vide dans l’après-midiLes ventes s’arrêtent à ce qu’il contenait

  2. La journée entre dans l’historique comme une journée faibleLa demande du soir n’y figure pas

  3. La prévision apprend le chiffre plus bas

  4. La commande suivante est plus petite

  5. Le rayon se vide plus tôtet l’historique baisse encore

La spirale descendante d’une prévision entraînée sur des ventes censurées.

Pedregal, Trapero et Holgado de Frutos l’ont testé sur la série d’un produit du jeu de données M5, tiré des ventes de Walmart, en la censurant au niveau du stock qu’une politique de commande aurait détenu3. Avec un objectif de 70 %, une prévision classique par lissage exponentiel a suivi la demande pendant cinq semaines, jusqu’aux premières ruptures ; après une mauvaise semaine, « ETS ne se remet jamais de cette mauvaise prévision », car chaque commande trop faible produisait l’historique trop faible suivant. Leur variante Tobit, qui lit un jour en rupture comme une borne inférieure, a tenu le cap. Avec un objectif de 80 % de cycles de commande sans rupture :

Lissage exponentiel classique

Lissage exponentiel Tobit

Même série, même objectif

Erreur moyenne de prévision, unités par jour
−42,3
−6,6
Cycles sans rupture, réalisés
69,4 %
85,1 %
Ventes perdues sur la période de test, unités
10 817
4 349
Pedregal, Trapero et Holgado de Frutos, prépublication (2024) de l’article paru en 2025.

Les humains font de même. Dans une chaîne de supermarchés haut de gamme dont les chefs de magasin pouvaient modifier les propositions de commande du système pour les produits frais, une étude de 2026 a montré qu’après une rupture, les chefs de magasin étaient plus enclins à réduire la proposition, comme si le rayon vide avait prouvé que le produit se vend moins, et que ces réductions rendaient la rupture suivante plus probable4. Bloquer les corrections à la baisse qui suivaient une rupture a réduit ces ruptures auto-infligées pour un coût de stock raisonnable4.

5. Quand le signalement lui-même est faux

Repérer un rayon vide dans les données dépend du stock théorique, et celui-ci peut se tromper justement dans le sens qui le masque. Quand le système affiche des unités que le rayon n’a pas, les ventes s’arrêtent, rien ne déclenche de commande, et la journée ressemble à une journée sans demande plutôt qu’à une rupture. Dans une étude portant sur environ 24 000 produits dans 11 magasins d’un grand distributeur alimentaire européen, un inventaire complet a fait progresser les ventes de l’ensemble du magasin de 11 %, et toute cette hausse venait des produits dont le stock théorique dépassait ce qu’il y avait en rayon5. Sur ces produits, l’effet atteignait 2,67 fois la moyenne du magasin. Censure et erreurs de stock sont un même problème vu sous deux angles : dans les deux cas, un stock manquant passe pour une demande manquante.

6. Que faire des jours de rayon vide

  1. Signalez chaque jour magasin-produit clos sans stock, et chaque série de ventes nulles alors que le stock théorique affiche encore du stock.
  2. Excluez les jours signalés de la moyenne et de la dispersion des ventes, ou traitez-les comme un plancher, comme le font Tobit et les modèles similaires. Jamais comme un jour de demande nulle ou faible.
  3. Pour les produits frais, conservez l’heure à laquelle le rayon s’est vidé. Une journée en rupture dès 14 h a perdu bien plus qu’une journée en rupture à 20 h.
  4. Ne réduisez pas une commande parce que les ventes de la semaine passée étaient faibles si le rayon a été vide une partie du temps.
  5. Comptez les produits qui affichent du stock mais ont cessé de se vendre, pour que les signalements eux-mêmes soient fiables.

La moyenne corrigée alimente ensuite le point de commande et le stock de sécurité comme d’habitude.

7. Limites

FreshRetailNet-50K provient des sites de livraison d’un épicier en ligne en Chine, et non de magasins physiques, et l’article qui le présente est une prépublication. Le tableau par catégorie et les chiffres de pertes proviennent de simulations sur ces données, avec une demande reconstituée sous hypothèses. Les chiffres de la spirale viennent de la prépublication de l’article publié et reposent sur la série d’un seul produit. L’étude sur les chefs de magasin est citée d’après son résumé, et l’étude sur les inventaires porte sur un seul distributeur. Aucune ne mesure directement les ventes perdues d’une chaîne de magasins européenne, ce qu’aucune caisse ne permet de faire.

Comment marql traite les rayons vides

Dans Retail-Bench, la simulation ouverte construite par marql pour tester des politiques de réapprovisionnement, chaque estimateur lit une journée terminée rayon vide au niveau des journées sans rupture, qu’il s’agisse de la formule des manuels, de la règle appliquée à la main ou du moteur de marql6. La simulation connaît la demande réelle derrière chaque vente : elle peut donc mesurer ce que coûtent les rayons vides, ce qu’une vraie chaîne ne peut qu’estimer.

  1. Wang, Y., Gu, J., Long, L. et al. (2025). FreshRetailNet-50K: a stockout-annotated censored demand dataset for latent demand recovery and forecasting in fresh retail. arXiv:2505.16319, prépublication. arxiv.org
  2. Yin, C., Zheng, Y. and Kong, Z. (2026). Demand hidden by stockouts: censored demand recovery and green waste-reduction forecasting for sustainable fresh-food consumption under emerging-market urbanization. Sustainability, 18(15), 7642. doi.org
  3. Pedregal, D. J., Trapero, J. R. and Holgado de Frutos, E. (2025). Tobit exponential smoothing, towards an enhanced demand planning in the presence of censored data. International Journal of Production Research. Chiffres tirés de la prépublication, arXiv:2407.17920. doi.org
  4. Özdemir, B. and Tenhiälä, A. (2026). Discretion in automated supermarket replenishment: censorship bias and self-inflicted stockouts. Manufacturing & Service Operations Management. doi.org
  5. Rekik, Y., Oliva, R., Syntetos, A. and Glock, C. H. (2026). Inventory record inaccuracy in grocery retailing: impact of promotions and product perishability, and targeted effect of audits. Journal of Business Logistics. doi.org
  6. MARQL Retail-Bench (2026). Méthodologie, équation 2. retail-bench.marql.one

SujetsDemande censurée, Ventes perdues, Prévision de la demande, Réapprovisionnement des magasins

Écrit par

Maxim T.

CMO, marql

Suivez marql sur LinkedIn

Tous les articles

Retail

Stock de sécurité d’une chaîne de magasins : pourquoi un seul facteur ne convient pas à tous les fournisseurs

Beaucoup d’outils de réapprovisionnement dimensionnent le stock de sécurité avec un seul facteur pour tous les produits. Calculé pour trois profils de fournisseurs, le bon facteur varie d’un rapport de un à sept, et un fournisseur irrégulier double à lui seul le stock de sécurité.

Par Maxim T.

Retail

Point de commande d’une chaîne de magasins : pourquoi « 7 jours de couverture, compléter à 14 » fait perdre de l’argent

« Commander quand il ne reste qu’une semaine de stock, compléter à deux » : c’est ainsi que commandent beaucoup de chaînes. Cette règle ignore les trois facteurs qui décident du moment où un rayon se vide. Une année simulée dans quatre chaînes montre ce que cela coûte, et une formule courte corrige l’essentiel.

Par Maxim T.

Retail

L’IA pour réapprovisionner les magasins : ce que l’algorithme doit décider, ce qui revient à l’acheteur, et comment savoir si cela aide

Le réapprovisionnement automatique existe depuis des années dans les supermarchés, et les acheteurs modifient encore une grande partie de ses commandes. Des études de terrain récentes montrent lesquelles de ces modifications aident, lesquelles provoquent la rupture suivante, et ce qu’un agent IA de réapprovisionnement doit prouver avant de recevoir plus de droits.

Par Maxim T.

Blog

Questions fréquentes

Une demande qu’on ne peut pas observer entièrement parce que le produit est tombé en rupture. Les ventes enregistrées égalent la demande les jours où le rayon tient et le stock disponible les jours où il se vide ; la différence est perdue et n’apparaît jamais dans les données.

Une prévision entraînée sur les ventes apprend la limite de stock comme si c’était la demande. Les jours épuisés tôt tirent la moyenne et la dispersion vers le bas : la prévision et la commande suivantes sont plus petites, ce qui rend la rupture suivante plus probable.

Oui, ou les traiter comme un plancher. Les exclure est la solution simple pour une moyenne mobile ; des modèles comme le lissage exponentiel Tobit lisent un jour en rupture comme une borne inférieure de la demande au lieu de l’écarter.

Servez-vous du stock théorique : un jour clos à stock nul est censuré. Signalez aussi les longues séries de ventes nulles sur des produits qui se vendent d’habitude alors que le stock théorique affiche du stock, car il s’agit souvent de stock fantôme.

Non. Dans des simulations publiées, une prévision tenant compte de la censure a à la fois réduit les pertes et amélioré la disponibilité, parce qu’elle déplace le stock vers les produits et les heures qui manquaient au lieu d’augmenter toutes les commandes.

Prêt à voir
les euros qu'il a trouvés ?

Nous connectons vos caisses, vos stocks et votre comptabilité en une journée. Accès en lecture seule, aucun remplacement de caisse, 200 €/mois par point de vente et moins à mesure que vous grandissez.

0
Remplacement du stack
1
Un chat. Toute l'entreprise.