00:00 Introduction
02:49 Demande, prix et profit
09:35 Prix concurrentiels
15:23 Besoins vs envies
20:09 L’histoire jusqu’à présent
23:36 Orientations pour aujourd’hui
25:17 L’unité de besoin
31:03 Voitures et pièces (récapitulatif)
33:41 Renseignements concurrentiels
36:03 Résoudre l’alignement (1/4)
39:26 Résoudre l’alignement (2/4)
43:07 Résoudre l’alignement (3/4)
46:38 Résoudre l’alignement (4/4)
56:21 Gamme de produits
59:43 Pièces non contraintes
01:02:44 Contrôle de la marge
01:06:54 Classements d’affichage
01:08:29 Ajustement fin des poids
01:12:45 Ajustement fin des compatibilités (1/2)
01:19:14 Ajustement fin des compatibilités (2/2)
01:30:41 Contre-ingérence (1/2)
01:35:25 Contre-ingérence (2/2)
01:40:49 Surstocks et ruptures de stock
01:45:45 Conditions d’expédition
01:47:58 Conclusion
01:50:33 6.2 Optimisation des prix pour le marché de l’après-vente automobile - Questions ?

Description

L’équilibre entre l’offre et la demande dépend en grande partie des prix. Ainsi, l’optimisation des prix relève en grande partie de la supply chain. Nous présenterons une série de techniques pour optimiser les prix d’une entreprise fictive de l’après-vente automobile. À travers cet exemple, nous verrons le danger associé à des raisonnements abstraits qui ne tiennent pas compte du contexte approprié. Savoir ce qui doit être optimisé est plus important que les détails de l’optimisation elle-même.

Transcription complète

Slide 1

Bienvenue dans cette série de conférences sur la supply chain. Je suis Joannes Vermorel et aujourd’hui je vais présenter l’optimisation des prix pour le marché de l’après-vente automobile. Les prix sont un aspect fondamental de la supply chain. En effet, on ne peut pas réfléchir à l’adéquation d’un certain volume d’approvisionnement ou d’un certain volume d’inventaire sans tenir compte de la question des prix, car les prix ont un impact significatif sur la demande. Cependant, la plupart des livres sur la supply chain et donc la plupart des logiciels de supply chain ignorent complètement les prix. Même lorsque les prix sont discutés ou modélisés, cela se fait généralement de manière naïve et interprète souvent mal la situation.

La tarification est un processus hautement dépendant du domaine. Les prix sont avant tout un message envoyé par une entreprise au marché dans son ensemble - aux clients, mais aussi aux fournisseurs et aux concurrents. Les détails de l’analyse des prix dépendent fortement de l’entreprise concernée. Bien que l’approche des prix en termes généraux, comme le font les microéconomistes, puisse être intellectuellement attrayante, elle peut aussi être trompeuse. Ces approches peuvent ne pas être suffisamment précises pour soutenir la production de stratégies de tarification de qualité professionnelle.

Cette conférence se concentre sur l’optimisation des prix pour une entreprise de l’après-vente automobile. Nous revisiterons Stuttgart, une entreprise fictive introduite dans le troisième chapitre de cette série de conférences. Nous nous concentrerons exclusivement sur le segment de la vente au détail en ligne de Stuttgart qui distribue des pièces de voiture. L’objectif de cette conférence est de comprendre ce que la tarification implique une fois que nous dépassons les platitudes et comment aborder la tarification avec une mentalité axée sur le monde réel. Bien que nous considérions une verticalité étroite - les pièces de rechange pour l’après-vente automobile - la ligne de pensée, la mentalité et l’attitude adoptées dans cette conférence pour poursuivre des stratégies de tarification supérieures seraient essentiellement les mêmes lors de la considération de verticalités totalement différentes.

Slide 2

La demande diminue lorsque le prix augmente. C’est un schéma économique universel. L’existence même de produits qui contredisent ce schéma reste difficile à prouver. Ces produits sont appelés biens de Veblen. Cependant, en 15 ans chez Lokad, même en traitant avec des marques de luxe, je n’ai jamais eu accès à une preuve tangible de l’existence de tels produits. Ce schéma universel est illustré par la courbe à gauche de l’écran, généralement appelée courbe de demande. Lorsqu’un marché se fixe un prix, par exemple le prix d’une pièce de rechange pour voiture, ce marché génère un certain volume de demande et, espérons-le, un certain volume de profit également pour les acteurs qui répondent à cette demande.

En ce qui concerne les pièces de rechange automobiles, ces pièces ne sont certainement pas des biens de Veblen. La demande diminue lorsque le prix augmente. Cependant, comme les gens n’ont pas beaucoup le choix d’acheter des pièces de voiture, du moins s’ils veulent continuer à conduire leur voiture, on peut s’attendre à ce que la demande soit relativement inélastique. Un prix plus élevé ou plus bas pour vos plaquettes de frein ne modifie pas vraiment votre décision d’acheter de nouvelles plaquettes de frein. En effet, la plupart des gens préféreraient acheter de nouvelles plaquettes de frein, même s’ils doivent payer le double du prix habituel, plutôt que de cesser d’utiliser leur véhicule complètement.

Pour Stuttgart, identifier le meilleur prix pour chaque pièce est crucial pour de nombreuses raisons. Explorons les deux raisons les plus évidentes. Tout d’abord, Stuttgart souhaite maximiser ses profits, ce qui n’est pas trivial car non seulement la demande varie avec le prix, mais le coût varie également avec le volume. Stuttgart doit être capable de répondre à la demande qu’elle générera à l’avenir, ce qui est encore plus complexe, car les stocks doivent être sécurisés plusieurs jours à l’avance, voire plusieurs semaines à l’avance, en raison des contraintes de délai de livraison.

Sur la base de cette exposition limitée, certains manuels et même certains logiciels d’entreprise procèdent avec la courbe illustrée à droite. Cette courbe illustre conceptuellement le volume de profit attendu pour chaque prix. Étant donné que la demande diminue lorsque le prix augmente et que le coût unitaire diminue lorsque le volume augmente, cette courbe devrait présenter un point de profit optimal qui maximise le profit. Une fois ce point optimal identifié, ajuster l’approvisionnement en stocks est présenté comme une question d’orchestration simple. En effet, le point optimal fournit non seulement un prix mais aussi un volume de demande.

Slide 3

Cependant, cette perspective est profondément erronée. Le problème n’a rien à voir avec la difficulté de quantifier l’élasticité. Ma proposition n’est pas que la courbe à gauche est incorrecte ; elle est fondamentalement correcte. Mon argument est que le passage de la courbe à gauche à la courbe à droite est incorrect. En fait, ce saut est tellement erroné qu’il sert de sorte de test de dépistage. Tout éditeur de logiciels ou manuel de tarification qui présente la tarification de cette manière démontre un degré dangereux d’illettrisme économique, surtout s’il présente l’évaluation de l’élasticité comme le défi central associé à cette perspective. Ce n’est même pas proche d’être le cas. Faire confiance à une supply chain réelle à un tel fournisseur ou expert invite à la douleur et à la misère. S’il y a une chose dont votre supply chain n’a pas besoin, c’est une interprétation erronée de la microéconomie mal comprise à grande échelle.

Dans cette série de conférences, il s’agit d’une autre instance de rationalisme naïf ou de scientisme, qui s’est avéré être une menace significative pour les supply chains modernes. Le raisonnement économique abstrait est puissant car il couvre une gamme déconcertante de situations. Cependant, le raisonnement abstrait est également susceptible de grosses erreurs d’interprétation. Des erreurs intellectuelles majeures qui ne sont pas immédiatement apparentes peuvent se produire lorsque l’on pense en termes très généraux.

Pour comprendre pourquoi le passage de la courbe à gauche à la courbe à droite est incorrect, nous devons examiner de plus près ce qui se passe réellement dans une supply chain réelle. Cette conférence se concentre sur les pièces de rechange automobiles. Nous réexaminerons la tarification du point de vue de Stuttgart, une entreprise fictive de supply chain introduite dans le troisième chapitre de cette série de conférences. Nous ne revisiterons pas les détails de cette entreprise. Si vous n’avez pas encore regardé la conférence 3.4, je vous invite à le faire après cette conférence.

Aujourd’hui, nous examinons le segment de vente au détail en ligne de Stuttgart, une division de commerce électronique qui vend des pièces de voiture. Nous explorons les moyens les plus appropriés pour Stuttgart de déterminer ses prix et de les réviser à tout moment. Cette tâche doit être effectuée pour chaque pièce vendue par Stuttgart.

Slide 4

Stuttgart n’est pas seul sur ce marché. Dans chaque pays européen où Stuttgart opère, il existe une demi-douzaine de concurrents notables. Cette courte liste d’entreprises, y compris Stuttgart, représente la majorité de la part de marché en ligne des pièces de rechange automobiles. Alors que Stuttgart vend exclusivement certaines pièces, pour la plupart des pièces vendues, il y a au moins un concurrent notable vendant exactement la même pièce. Ce fait a des implications significatives pour l’optimisation des prix de Stuttgart.

Prenons en compte ce qui se passe si, pour une pièce donnée, Stuttgart décide de fixer le prix de cette pièce un euro en dessous du prix proposé par un concurrent vendant la même pièce. Concevablement, cela rendra Stuttgart plus compétitif et l’aidera à capturer des parts de marché. Mais pas si vite. Le concurrent surveille tous les prix fixés par Stuttgart. En effet, le marché de l’après-vente automobile est un marché très concurrentiel. Tout le monde dispose d’outils de veille concurrentielle. Stuttgart collecte tous les prix de ses concurrents notables quotidiennement, et les concurrents font de même. Ainsi, si Stuttgart décide de fixer le prix d’une pièce un euro en dessous du prix proposé par un concurrent, on peut supposer en toute sécurité que dans un jour ou deux, le concurrent aura baissé son prix en représailles, annulant ainsi le mouvement de prix de Stuttgart.

Bien que Stuttgart soit une entreprise fictive, ce comportement concurrentiel décrit ici n’est pas du tout fictif dans le marché de l’après-vente automobile. Les concurrents alignent agressivement leurs prix. Si Stuttgart essaie de manière répétée de baisser ses prix, cela conduira à une guerre des prix algorithmique, laissant les deux entreprises avec peu ou pas de marge à la fin de la guerre.

Prenons en compte ce qui se passe si, pour une pièce donnée, Stuttgart décide de fixer le prix de cette pièce un euro au-dessus du prix proposé par un concurrent. En supposant que tout le reste reste identique à part le prix, Stuttgart n’est tout simplement plus compétitif. Ainsi, bien que la base de clients de Stuttgart ne quitte pas immédiatement pour le concurrent (car ils pourraient ne pas être conscients de la différence de prix ou rester fidèles à Stuttgart), avec le temps, la part de marché de Stuttgart est garantie de s’effriter.

Il existe des sites de comparaison de prix disponibles en Europe pour les pièces de voiture. Bien que les clients ne comparent pas les prix à chaque fois qu’ils ont besoin d’une nouvelle pièce pour leur voiture, la plupart des clients réexamineront leurs options de temps en temps. Il n’est pas une solution viable pour Stuttgart d’être systématiquement découvert comme le revendeur le plus cher.

Ainsi, nous avons vu que Stuttgart ne peut pas avoir un prix inférieur à la concurrence, car cela déclenche une guerre des prix. De même, Stuttgart ne peut pas avoir un prix supérieur à la concurrence, car cela garantit l’érosion de sa part de marché avec le temps. La seule option qui reste à Stuttgart est de chercher un alignement des prix. Ce n’est pas une déclaration théorique - l’alignement des prix est le principal moteur des véritables entreprises de commerce électronique vendant des pièces de voiture en Europe.

La courbe de profit intellectuellement attrayante que nous avons introduite précédemment, où les entreprises pourraient supposément choisir le profit optimal, est totalement fausse pour la plupart. Stuttgart n’a même pas le choix en ce qui concerne ses prix. Dans une large mesure, à moins qu’il n’y ait un ingrédient secret impliqué, l’alignement des prix est la seule option pour Stuttgart.

Les marchés libres sont une bête étrange, comme Engels l’a dit dans sa correspondance de 1819 : “La volonté de chaque individu est entravée par tout le monde, et ce qui en émerge est quelque chose que personne n’a voulu.” Nous verrons par la suite que Stuttgart conserve néanmoins une certaine marge de manœuvre résiduelle pour fixer ses prix. Cependant, la proposition principale reste la suivante : l’optimisation des prix pour Stuttgart est avant tout un problème fortement contraint, qui n’a rien en commun avec une perspective de maximisation naïve basée sur une courbe de demande.

L’élasticité-prix de la demande est un concept qui a du sens pour un marché dans son ensemble, mais généralement pas autant pour quelque chose d’aussi localisé qu’un numéro de pièce.

Slide 45

L’idée selon laquelle la tarification peut être abordée comme un simple problème de maximisation des profits en exploitant la courbe de demande est fausse - ou du moins, elle est fausse dans le cas de Stuttgart.

En effet, on pourrait soutenir que Stuttgart appartient à un marché de besoins, et la perspective des courbes de profit fonctionnerait toujours si nous considérions un marché de désirs. En marketing, c’est une distinction classique de séparer les marchés de désirs des marchés de besoins. Un marché de désirs est généralement caractérisé par des offres où les clients peuvent renoncer à leur consommation sans subir de conséquences négatives. Dans les marchés de désirs, les offres réussies ont tendance à être fortement attachées à la marque du vendeur, et la marque elle-même est le moteur qui génère la demande en premier lieu. Par exemple, la mode est l’archétype des marchés de désirs. Si vous voulez un sac Louis Vuitton, alors ce sac ne peut être acheté que chez Louis Vuitton. Bien qu’il existe des centaines de vendeurs qui vendent des sacs fonctionnellement équivalents, ils ne seront pas un sac Louis Vuitton. Si vous renoncez à acheter un sac Louis Vuitton, alors rien de grave ne vous arrivera.

Un marché de besoins est généralement caractérisé par des offres où les clients ne peuvent pas renoncer à leur consommation sans subir de mauvaises conséquences. Dans les marchés de besoins, les marques ne sont pas des moteurs de demande ; elles sont plutôt des moteurs de choix. Les marques guident les clients dans le choix de qui consommer une fois que le besoin de consommation se présente. Par exemple, l’alimentation et les besoins de base sont l’archétype des marchés de besoins. Même si les pièces de voiture ne sont pas strictement nécessaires pour survivre, de nombreuses personnes dépendent d’un véhicule pour gagner de l’argent, et elles ne peuvent donc pas renoncer de manière réaliste à l’entretien adéquat de leur véhicule, car le coût pour elles du manque d’entretien dépasserait largement le coût de l’entretien lui-même.

Bien que le marché de l’après-vente automobile soit fermement campé dans le marché des besoins, il existe des nuances. Il y a des composants comme les enjoliveurs qui sont plus des désirs que des besoins. Plus généralement, tous les accessoires sont plus des désirs que des besoins. Néanmoins, pour Stuttgart, les besoins sont à l’origine de la grande majorité de la demande.

La critique que je propose ici à l’égard de la courbe de profit pour la tarification se généralise à presque toutes les situations sur les marchés des besoins. Stuttgart n’est pas un cas isolé en étant fortement contrainte au niveau des prix par ses concurrents ; cette situation est presque omniprésente sur les marchés des besoins. Cet argument ne réfute pas la viabilité de la courbe de profit lorsqu’on considère les marchés des désirs.

En effet, on pourrait faire valoir en contre-argument que sur un marché des désirs, si le vendeur a le monopole de sa propre marque, alors ce vendeur devrait être libre de choisir le prix qui maximise son profit, ce qui nous ramène à la perspective de la courbe de profit pour la tarification. Une fois de plus, cet contre-argument démontre les dangers du raisonnement économique abstrait en supply chain.

Sur un marché des désirs, la perspective de la courbe de profit est également erronée, bien que pour un ensemble de raisons totalement différentes. Les détails de cette démonstration dépassent le cadre de la présente conférence, car cela nécessiterait une autre conférence à part entière. Cependant, comme exercice laissé à l’audience, je suggère simplement de jeter un coup d’œil à la liste des sacs et de leurs prix affichés sur le site web de commerce électronique de Louis Vuitton. La raison pour laquelle la perspective de la courbe de profit est inappropriée devrait devenir évidente d’elle-même. Sinon, eh bien, il est fort probable que nous reviendrons sur ce cas dans une conférence ultérieure.

Slide 6

Cette série de conférences est destinée, entre autres, à la formation des Supply Chain Scientists chez Lokad. Cependant, j’espère également que ces conférences pourront intéresser un public beaucoup plus large de praticiens de la supply chain. J’essaie de maintenir ces conférences quelque peu indépendantes, mais j’utiliserai quelques concepts techniques qui ont été introduits dans les conférences précédentes. Je ne passerai pas trop de temps à réintroduire ces concepts. Si vous n’avez pas regardé les conférences précédentes, n’hésitez pas à les consulter par la suite.

Dans le premier chapitre de cette série, nous avons exploré pourquoi les supply chains doivent devenir programmatiques. Il est très souhaitable de mettre une recette numérique en production en raison de la complexité croissante des supply chains. L’automatisation est plus pressante que jamais et il y a un impératif financier de faire de la pratique de la supply chain une entreprise capitaliste.

Dans le deuxième chapitre, nous avons consacré du temps aux méthodologies. Les supply chains sont des systèmes concurrentiels et cette combinaison défait les méthodologies naïves. Nous avons vu que cette combinaison défait également les modèles qui interprètent ou caractérisent mal la microéconomie.

Le troisième chapitre a passé en revue les problèmes rencontrés dans les supply chains, en mettant de côté les solutions. Nous avons présenté Stuttgart comme l’une des personas de la supply chain. Ce chapitre a tenté de caractériser les classes de problèmes de prise de décision qui doivent être résolus et a montré que des perspectives simplistes, comme choisir la bonne quantité de stock, ne correspondent pas aux situations du monde réel. Il y a invariablement une profondeur dans la forme des décisions à prendre.

Le quatrième chapitre a passé en revue les éléments nécessaires pour comprendre les pratiques modernes de la supply chain, où les éléments logiciels sont omniprésents. Ces éléments sont fondamentaux pour comprendre le contexte plus large dans lequel la supply chain numérique opère.

Les chapitres cinq et six sont consacrés à la modélisation prédictive et à la prise de décision, respectivement. Ces chapitres rassemblent des techniques qui fonctionnent bien entre les mains des supply chain scientists aujourd’hui. Le sixième chapitre se concentre sur la tarification, un type de décision qui doit être prise parmi tant d’autres.

Enfin, le septième chapitre est consacré à l’exécution d’une initiative de supply chain quantitative et couvre la perspective organisationnelle.

Slide 7

La conférence d’aujourd’hui sera divisée en deux grandes parties. Tout d’abord, nous discuterons de la manière d’aborder l’alignement concurrentiel des prix pour Stuttgart. L’alignement des prix avec ceux des concurrents doit être abordé du point de vue du client en raison de la structure unique du marché des pièces détachées automobiles. Bien que l’alignement concurrentiel soit très complexe, il bénéficie d’une solution relativement simple que nous examinerons en détail.

Deuxièmement, bien que l’alignement concurrentiel soit la force dominante, ce n’est pas la seule. Stuttgart peut avoir besoin ou vouloir s’écarter sélectivement de cet alignement. Cependant, les avantages de ces écarts doivent l’emporter sur les risques. La qualité de l’alignement dépend de la qualité des données utilisées pour le construire, nous introduirons donc une technique d’apprentissage auto-supervisé pour affiner le graphe des compatibilités mécaniques.

Enfin, nous aborderons une courte série de préoccupations liées à la tarification. Ces préoccupations ne sont peut-être pas strictement liées à la tarification, mais en pratique, elles sont mieux traitées conjointement avec les prix.

Slide 8

Stuttgart doit apposer une étiquette de prix sur chaque pièce qu’il vend, mais cela ne signifie pas que l’analyse des prix doit principalement être effectuée au niveau du numéro de pièce. La tarification est avant tout un moyen de communiquer avec les clients.

Prenons un moment pour réfléchir à la façon dont les clients perçoivent les prix proposés par Stuttgart. Comme nous le verrons, la distinction en apparence subtile qui existe entre l’étiquette de prix et la perception de l’étiquette de prix n’est en réalité pas du tout subtile.

Lorsqu’un client commence à chercher une nouvelle pièce de voiture, généralement une pièce consommable comme des plaquettes de frein, il est peu probable qu’il connaisse le numéro de pièce spécifique dont il a besoin. Il peut y avoir quelques passionnés d’automobile qui ont une connaissance approfondie du sujet, au point d’avoir un numéro de pièce spécifique en tête, mais ils sont une petite minorité. La plupart des gens savent seulement qu’ils ont besoin de changer leurs plaquettes de frein, mais ils ne connaissent pas le numéro de pièce exact.

Cette situation conduit à une autre préoccupation sérieuse : la compatibilité mécanique. Il existe des milliers de références de plaquettes de frein disponibles sur le marché, cependant, pour un véhicule donné, il n’y a généralement que quelques dizaines de références compatibles. Ainsi, la compatibilité mécanique ne peut pas être laissée au hasard.

Stuttgart, comme tous ses concurrents, est parfaitement conscient de ce problème. Lorsqu’un visiteur se rend sur le site e-commerce de Stuttgart, il est invité à spécifier le modèle de sa voiture, puis le site filtre immédiatement les pièces qui ne sont pas mécaniquement compatibles avec le véhicule spécifié. Les sites des concurrents suivent le même schéma de conception : d’abord choisir le véhicule, puis choisir la pièce.

Lorsqu’un client cherche à comparer deux fournisseurs, il compare généralement les offres, pas les numéros de pièce. Un client se rendrait sur le site de Stuttgart, identifierait le coût des plaquettes de frein compatibles, puis répéterait le processus sur le site d’un concurrent. Le client pourrait identifier le numéro de pièce des plaquettes de frein sur le site de Stuttgart, puis rechercher exactement le même numéro de pièce sur le site du concurrent, mais en pratique, les gens le font rarement.

Stuttgart et ses concurrents conçoivent soigneusement leurs assortiments afin de pouvoir servir presque tous les véhicules avec une fraction des numéros de pièces automobiles disponibles. En conséquence, ils ont généralement entre 100 000 et 200 000 numéros de pièces répertoriés sur leurs sites web, et seulement 10 000 à 20 000 numéros de pièces réellement en stock.

En ce qui concerne notre préoccupation initiale concernant les prix, il est clair que l’analyse des prix devrait être principalement menée non pas à travers le prisme des numéros de pièces, mais à travers l’unité de besoin. Dans le contexte du marché de l’automobile, une unité de besoin est caractérisée par le type de pièce qui a besoin d’être remplacée et le modèle de voiture qui nécessite le remplacement.

Cependant, cette perspective de l’unité de besoin présente une complication technique immédiate. Stuttgart ne peut pas se fier à des correspondances de prix un à un entre les numéros de pièces pour aligner ses prix sur ceux de ses concurrents. Ainsi, l’alignement des prix n’est pas aussi évident qu’il pourrait sembler à première vue, surtout lorsque l’on reconnaît les contraintes auxquelles Stuttgart est soumis de la part de ses concurrents.

Slide 9

Comme nous l’avons déjà vu dans la leçon 3.4, le problème de compatibilité mécanique entre les voitures et les pièces est résolu en Europe, ainsi que dans d’autres grandes régions du monde, grâce à l’existence de sociétés spécialisées. Ces sociétés vendent des ensembles de données de compatibilité mécanique, composés de trois listes : une liste de modèles de voitures, une liste de pièces de voiture et une liste de compatibilités entre les voitures et les pièces. Cette structure d’ensemble de données est techniquement connue sous le nom de graphe biparti.

En Europe, ces ensembles de données comprennent généralement plus de 100 000 véhicules, plus d’un million de pièces et plus de 100 millions d’arêtes reliant les voitures aux pièces. La maintenance de ces ensembles de données est intensive en main-d’œuvre, ce qui explique pourquoi des sociétés spécialisées existent pour vendre ces ensembles de données. Stuttgart, comme ses concurrents, achète un abonnement auprès de l’une de ces sociétés spécialisées pour accéder à des versions actualisées de ces ensembles de données. Les abonnements sont nécessaires car, même si l’industrie automobile est mature, de nouvelles voitures et pièces sont continuellement introduites. Pour rester étroitement alignés sur le paysage automobile, ces ensembles de données doivent être actualisés au moins trimestriellement.

Stuttgart, et ses concurrents, utilisent cet ensemble de données pour soutenir le mécanisme de sélection des véhicules sur leurs sites de commerce électronique. Une fois qu’un client a sélectionné un véhicule, seules les pièces qui sont prouvément compatibles avec le véhicule choisi, selon l’ensemble de données de compatibilité, sont affichées. Cet ensemble de données de compatibilité est également fondamental pour notre analyse des prix. Grâce à cet ensemble de données, Stuttgart peut évaluer le point de prix proposé pour chaque unité de besoin.

Slide 10

Le dernier ingrédient manquant important pour construire la stratégie d’alignement concurrentiel de Stuttgart est le renseignement concurrentiel. En Europe, comme dans toutes les grandes régions économiques, il existe des spécialistes du renseignement concurrentiel - des entreprises qui fournissent des services de collecte de prix. Ces entreprises extraient quotidiennement les prix de Stuttgart et de ses concurrents. Bien qu’une entreprise comme Stuttgart puisse tenter de limiter l’extraction automatisée de ses prix, cette entreprise est en grande partie vaine pour plusieurs raisons :

Tout d’abord, Stuttgart, tout comme ses concurrents, souhaite être convivial pour les robots. Les bots les plus importants sont les moteurs de recherche, Google détenant légèrement plus de 90% de part de marché à partir de 2023. Ce n’est pas le seul moteur de recherche, cependant, et bien qu’il soit possible d’identifier Googlebot, le principal crawler de Google, il est difficile d’en faire de même pour tous les autres crawlers qui représentent encore environ 10% du trafic.

Deuxièmement, les spécialistes du renseignement concurrentiel sont devenus des experts au cours de la dernière décennie pour se faire passer pour un trafic internet résidentiel normal. Ces services prétendent avoir accès à des millions d’adresses IP résidentielles, ce qu’ils parviennent à réaliser en partenariat avec des applications, en utilisant les connexions internet des utilisateurs réguliers et en s’associant à des fournisseurs de services internet (ISP) qui peuvent leur prêter des adresses IP.

Nous supposons donc que Stuttgart bénéficie d’une liste de prix de haute qualité de ses concurrents notables. Ces prix sont extraits au niveau du numéro de pièce et mis à jour quotidiennement. Cette supposition n’est pas spéculative ; c’est l’état actuel du marché européen.

Slide 11

Nous avons maintenant rassemblé tous les éléments dont Stuttgart a besoin pour calculer des prix alignés - des prix qui correspondent à ceux de ses concurrents lorsqu’ils sont considérés du point de vue d’une unité de besoin.

À l’écran, nous avons le pseudocode du problème de satisfaction de contraintes que nous voulons résoudre. Nous énumérons simplement toutes les unités de besoin, c’est-à-dire toutes les combinaisons de types de pièces et de modèles de voitures. Pour chaque unité de besoin, nous déclarons que le prix le plus compétitif proposé par Stuttgart doit être égal au prix le plus compétitif proposé par un concurrent.

Examinons rapidement le nombre de variables et de contraintes. Stuttgart peut fixer une étiquette de prix pour chaque numéro de pièce qu’il propose, ce qui signifie que nous avons environ 100 000 variables. Le nombre de contraintes est un peu plus complexe. Techniquement, nous avons environ 1 000 types de pièces et environ 100 000 modèles de voitures, ce qui suggère environ 100 millions de contraintes. Cependant, tous les types de pièces ne se trouvent pas dans tous les modèles de voitures. Les mesures du monde réel indiquent que le nombre de contraintes est plus proche de 10 millions.

Malgré ce nombre inférieur de contraintes, nous avons toujours 100 fois plus de contraintes que de variables. Nous sommes confrontés à un système largement surcontraint. Nous savons donc qu’il est peu probable que nous trouvions une solution qui satisfasse toutes les contraintes. Le meilleur résultat est une solution de compromis qui satisfait la plupart d’entre elles.

De plus, les concurrents ne sont pas entièrement cohérents avec leurs prix. Malgré nos meilleurs efforts, Stuttgart peut se retrouver dans une guerre des prix sur un numéro de pièce en raison de son prix étant trop bas. En même temps, il peut perdre des parts de marché sur le même numéro de pièce en raison de son prix étant trop élevé par rapport à un autre concurrent. Ce scénario n’est pas théorique ; les données empiriques suggèrent que ces situations se produisent régulièrement, bien que pour un faible pourcentage de numéros de pièces.

Comme nous avons opté pour une résolution approximative de ce système de contraintes, nous devrions préciser le poids à accorder à chaque contrainte. Tous les modèles de voitures ne sont pas égaux - certains sont associés à des véhicules plus anciens qui ont presque entièrement disparu des routes. Nous proposons de pondérer ces contraintes en fonction du volume respectif de la demande, exprimé en euros.

Slide 12

Maintenant que nous avons établi le cadre formel de notre logique de tarification, passons au code logiciel réel. Comme nous le verrons, la résolution de ce système est plus simple que prévu.

À l’écran, un schéma relationnel minimal illustre les six tables impliquées dans ce système. Les rectangles aux coins arrondis représentent les six tables d’intérêt, et les flèches représentent les relations de un à plusieurs entre les tables.

Passons brièvement en revue ces tables :

  1. Types de pièces : Comme son nom l’indique, cette table répertorie les types de pièces, par exemple “plaquettes de frein avant”. Ces types sont utilisés pour identifier quelle pièce peut être utilisée en remplacement d’une autre. La pièce de remplacement doit non seulement être compatible avec le véhicule, mais aussi avoir le même type. Il y a environ mille types de pièces.

  2. Modèles de voitures : Cette table répertorie les modèles de voitures, par exemple “Peugeot 3008 Phase 2 diesel”. Chaque véhicule a un modèle, et tous les véhicules d’un même modèle sont censés avoir le même ensemble de compatibilités mécaniques. Il y a environ cent mille modèles de voitures.

  3. Numéros de pièces (PN) : Cette table répertorie les numéros de pièces que l’on trouve sur le marché de l’automobile. Chaque numéro de pièce a un, et un seul, type de pièce. Il y a environ un million de numéros de pièces dans cette table.

  4. Compatibilité (Compat) : Cette table représente les compatibilités mécaniques et recueille toutes les combinaisons valides de numéros de pièces et de modèles de voitures. Avec environ 100 millions de lignes de compatibilité, cette table est de loin la plus grande.

  5. Concurrence : Cette table contient toutes les informations concurrentielles pour la journée. Pour chaque numéro de pièce, il y a une demi-douzaine de concurrents notables qui affichent le numéro de pièce avec un prix. Cela donne environ 10 millions de prix concurrentiels.

  6. Commandes : Cette table contient les commandes passées par les clients de Stuttgart sur une période d’environ un an. Chaque ligne de commande comprend un numéro de pièce et un modèle de voiture. Techniquement, il est possible d’acheter une pièce de voiture sans spécifier le modèle de voiture, bien que cela soit rare. Toutes les lignes de commande sans modèle de voiture peuvent être filtrées. En fonction de la taille de Stuttgart, il devrait y avoir environ 10 millions de lignes de commande.

Slide 13

Nous allons maintenant examiner le code qui charge les données relationnelles. À l’écran, un script chargeant six tables est affiché, écrit en Envision - un langage de programmation spécifique au domaine conçu par Lokad spécifiquement pour l’optimisation prédictive des chaînes d’approvisionnement. Bien qu’Envision ait été créé pour augmenter l’efficacité et réduire les erreurs dans les contextes de chaîne d’approvisionnement, le script peut être réécrit dans d’autres langages tels que Python, mais au prix d’une plus grande verbosité et d’un risque accru d’erreurs.

Dans la première partie du script, quatre fichiers texte plats sont chargés. Des lignes 1 à 5, le fichier ‘path.csv’ fournit à la fois les numéros de pièce et les types de pièces, y compris les prix actuels affichés à Stuttgart. Le champ ’name is active’ indique si un numéro de pièce spécifique est servi par Stuttgart. Dans cette première table, la variable ‘PN’ fait référence à la dimension principale de la table, tandis que ‘PN type’ est une dimension secondaire introduite par le mot-clé ’expect’.

Des lignes 7 à 9, le fichier ‘compat.tsv’ fournit la liste de compatibilité pièce-véhicule et les modèles de voitures. Il s’agit de la plus grande table du script. Les lignes 11 à 14 chargent le fichier ‘competition.tsv’, fournissant un aperçu de l’intelligence concurrentielle pour la journée, c’est-à-dire les prix par numéro de pièce et par concurrent. Le fichier ‘orders.tsv’, chargé des lignes 16 à 19, nous donne la liste des numéros de pièce achetés et les modèles de voitures associés, en supposant que toutes les lignes associées à des modèles de voitures non spécifiés ont été filtrées.

Enfin, aux lignes 21 et 22, la table ‘part types’ est définie en amont des deux tables, ‘compat’ et ‘orders’. Cela signifie que pour chaque ligne dans ‘compat’ ou ‘orders’, il y a une et une seule pièce de type qui correspond. En d’autres termes, ‘PN type’ a été ajouté en tant que dimension secondaire aux tables ‘compat’ et ‘orders’. Cette première partie du script Envision est simple ; nous chargeons simplement des données à partir de fichiers texte plats et rétablissons la structure de données relationnelle dans le processus.

Slide 14

La deuxième partie du script, visible à l’écran, est l’endroit où se produit la logique d’alignement réelle. Cette section est une continuation directe de la première partie, et comme vous pouvez le voir, il ne s’agit que de 12 lignes de code. Nous utilisons une fois de plus la programmation différentiable. Pour le public qui n’est peut-être pas familier avec la programmation différentiable, il s’agit d’une fusion de la différentiation automatique et de la descente de gradient stochastique. C’est un paradigme de programmation qui s’étend également à l’apprentissage automatique et à l’optimisation. Dans le contexte de la chaîne d’approvisionnement, la programmation différentiable s’avère incroyablement utile dans diverses situations. Tout au long de cette série de conférences, nous avons démontré comment la programmation différentiable peut être utilisée pour apprendre des modèles, générer des prévisions de demande probabilistes et réaliser des prévisions de délai d’approvisionnement balistiques. Si vous n’êtes pas familier avec la programmation différentiable, je vous recommande de revoir les conférences précédentes de cette série.

Dans la conférence d’aujourd’hui, nous verrons comment la programmation différentiable est parfaitement adaptée pour résoudre des problèmes d’optimisation à grande échelle impliquant des centaines de milliers de variables et des millions de contraintes. De manière remarquable, ces problèmes peuvent être résolus en quelques minutes seulement sur un seul CPU avec quelques gigaoctets de RAM. De plus, nous pouvons utiliser les prix précédents comme point de départ, actualisant nos prix au lieu de les recalculer à partir de zéro.

Veuillez noter un petit inconvénient. Le mot-clé ‘join’ n’est pas encore pris en charge par Envision, mais il est prévu dans notre feuille de route technique pour l’avenir. Des solutions de contournement existent, mais pour plus de clarté, j’utiliserai la syntaxe future d’Envision dans cette conférence.

À la ligne 24, nous calculons le prix le plus bas observé sur le marché pour chaque numéro de pièce. Si un numéro de pièce est exclusivement vendu par Stuttgart et n’a pas de concurrents, nous utilisons le prix de Stuttgart comme valeur par défaut.

De la ligne 26 à la ligne 30, pour chaque pièce répertoriée dans l’historique des commandes des clients de Stuttgart, l’offre la plus compétitive actuelle est calculée.

À la ligne 27, nous itérons sur chaque ligne de commande du tableau de commandes avec ’each order’.

À la ligne 28, nous utilisons ‘join pns’ pour intégrer le tableau complet des numéros de pièce pour chaque ligne de commandes.

À la ligne 29, nous effectuons une jointure avec ‘others’, mais cette jointure est restreinte par deux dimensions secondaires - le modèle et le type de pièce. Cela signifie que pour chaque ligne de commandes, nous sélectionnons les numéros de pièce correspondant à une combinaison de modèle de pièce et de type de pièce, reflétant les pièces compatibles avec l’unité de besoin correspondant à la commande du client.

De la ligne 32 à la ligne 37, nous résolvons l’alignement à l’aide de la programmation différentiable, indiquée par le mot-clé ‘Auto diff’. Le bloc ‘Auto diff’ est déclaré à la ligne 32, en utilisant le tableau ‘orders’ comme tableau d’observation. Cela signifie que nous pondérons implicitement les contraintes en fonction du volume de ventes de Stuttgart. Les lignes 33 et 44 servent le même objectif que les lignes 28 et 29 ; elles itèrent sur le tableau ‘orders’, fournissant un accès complet aux numéros de pièce (‘PN’) et à une sélection des entrées compatibles.

À la ligne 35, nous déclarons ‘pns.price’ comme les paramètres à optimiser par la descente de gradient stochastique. Il n’est pas nécessaire d’initialiser ces paramètres, car nous partons des prix utilisés jusqu’à présent par Stuttgart, actualisant ainsi l’alignement.

À la ligne 36, nous calculons ‘mon prix’, qui est l’offre la plus compétitive de Stuttgart pour l’unité de besoin associée à la ligne de commande. Ce calcul est un mécanisme assez similaire au calcul du prix le plus bas observé, comme réalisé à la ligne 24, en se basant une fois de plus sur la liste des compatibilités mécaniques. Cependant, les compatibilités sont restreintes aux numéros de pièce servis par Stuttgart. Historiquement, les clients ont pu choisir ou non la pièce la plus économiquement avantageuse pour leur véhicule. Quoi qu’il en soit, l’utilisation des commandes des clients dans ce contexte vise à attribuer des poids aux unités de besoin.

À la ligne 37, nous utilisons la différence absolue entre le meilleur prix offert par Stuttgart et le meilleur prix offert par un concurrent pour guider l’alignement. Dans ce bloc alternatif, les gradients sont appliqués rétroactivement aux paramètres. La différence que nous trouvons à la fin forme la fonction de perte. À partir de cette fonction de perte, les gradients remontent vers le seul vecteur de paramètres que nous avons ici : ‘pns.price’. En ajustant progressivement les paramètres (les prix) à chaque itération (une itération étant ici une ligne de commande), le script converge vers une approximation appropriée de l’alignement de tarification souhaité.

En termes de complexité algorithmique, la ligne 36 domine. Cependant, comme le nombre de compatibilités pour un modèle de voiture et un type de pièce donnés est limité (généralement pas plus d’une dizaine), chaque itération de ‘Auto diff’ est accomplie en un temps constant. Ce temps constant n’est pas très court, comme 10 cycles CPU, mais il ne sera pas non plus d’un million de cycles CPU. Environ mille cycles CPU semblent raisonnables pour 20 pièces compatibles.

Si nous supposons un seul CPU fonctionnant à deux gigahertz et effectuant 100 époques (une époque étant une descente complète sur l’ensemble de la table d’observation), nous anticiperions un temps d’exécution cible d’environ 10 minutes. Résoudre un problème avec 100 000 variables et 10 millions de contraintes en 10 minutes sur un seul CPU est assez impressionnant. En fait, Lokad atteint des performances approximativement conformes à cette attente. Cependant, en pratique, pour de tels problèmes, notre goulot d’étranglement est plus souvent le débit d’E/S que le CPU.

Une fois de plus, cet exemple met en évidence la puissance de l’utilisation de paradigmes de programmation adaptés aux applications de la chaîne d’approvisionnement. Nous avons commencé par un problème non trivial, car il n’était pas immédiatement évident comment exploiter cet ensemble de données de compatibilité mécanique d’un point de vue tarifaire. Malgré cela, la mise en œuvre réelle est simple.

Bien que ce script ne couvre pas tous les aspects présents dans une configuration réelle, la logique de base ne nécessite que six lignes de code, laissant amplement de place pour prendre en compte les complexités supplémentaires que les scénarios réels pourraient introduire.

Slide 15

L’algorithme d’alignement, tel que présenté précédemment, privilégie la simplicité et la clarté par rapport à l’exhaustivité. Dans une configuration réelle, d’autres facteurs seraient attendus. Je passerai en revue ces facteurs sous peu, mais commençons par reconnaître que ces facteurs peuvent être traités en étendant cet algorithme d’alignement.

Vendre à perte n’est pas seulement imprudent, mais aussi illégal dans de nombreux pays, comme la France, bien qu’il existe des exceptions dans des circonstances particulières. Pour éviter de vendre à perte, une contrainte peut être ajoutée à l’algorithme d’alignement qui impose que le prix de vente dépasse le prix d’achat. Cependant, il est également utile d’exécuter l’algorithme sans cette contrainte de “pas de perte” pour identifier d’éventuels problèmes d’approvisionnement. En effet, si un concurrent peut se permettre de vendre une pièce en dessous du prix d’achat de Stuttgart, Stuttgart doit résoudre le problème sous-jacent. Il s’agit probablement d’un problème d’approvisionnement ou d’achat.

Regrouper simplement tous les numéros de pièce est naïf. Les clients n’ont pas la même volonté de payer pour tous les fabricants d’équipement d’origine (OEM). Par exemple, les clients sont plus susceptibles de valoriser une marque bien connue comme Bosch par rapport à un OEM chinois moins connu en Europe. Pour remédier à cette préoccupation, Stuttgart, comme ses pairs, catégorise les OEM en une courte liste de gammes de produits, de la plus chère à la moins chère. Nous pouvons avoir, par exemple, la gamme sport automobile, la gamme grand public, la gamme de marques de distributeurs et la gamme économique.

L’alignement est ensuite construit pour garantir que chaque numéro de pièce est aligné dans sa propre gamme de produits. De plus, l’algorithme d’alignement devrait imposer que les prix soient strictement décroissants lorsqu’on passe de la gamme sport automobile à la gamme économique, car toute inversion pourrait perturber les clients. En théorie, si les concurrents fixaient correctement leurs propres offres, de telles inversions ne se produiraient pas. Cependant, en pratique, les clients fixent parfois incorrectement leurs propres prix et, occasionnellement, ils ont des raisons de fixer leurs pièces à un prix différent.

Il n’y a que quelques centaines de fabricants d’équipement d’origine (OEM), la classification de ces OEM dans leurs gammes de produits respectives peut être effectuée manuellement, et éventuellement avec l’aide d’enquêtes auprès des clients s’il existe des ambiguïtés qui ne peuvent pas être résolues directement par les experts du marché à Stuttgart.

Diapositive 16

Malgré l’adoption des gammes de produits, de nombreux prix de numéros de pièces ne sont pas activement influencés par la logique d’alignement. En effet, seuls les numéros de pièces qui contribuent activement à être le meilleur prix parmi une unité de besoin sont effectivement ajustés par la descente de gradient pour créer l’alignement approximatif que nous recherchons au sein de la même gamme de produits.

Sur deux numéros de pièces ayant des compatibilités mécaniques identiques, seul l’un d’entre eux verra son prix ajusté par le solveur d’alignement. L’autre numéro de pièce obtiendra toujours des gradients nuls et son prix d’origine restera donc inchangé. Ainsi, en résumé, bien que le système ait tout un ensemble de contraintes, de nombreuses variables ne sont pas du tout contraintes. Selon la granularité des gammes de produits et l’étendue de l’intelligence concurrentielle, ces numéros de pièces non contraints peuvent représenter une part importante du catalogue, éventuellement la moitié des numéros de pièces. Bien que la fraction, une fois exprimée en volume de ventes, soit beaucoup plus faible.

Pour ces numéros de pièces, Stuttgart nécessite une stratégie de tarification alternative. Bien que je n’aie pas de processus algorithmique strict à suggérer pour ces pièces non contraintes, je proposerais deux principes directeurs.

Premièrement, il devrait y avoir un écart de prix non négligeable, disons 10%, entre la pièce la plus compétitive de la gamme de produits et la pièce suivante. Avec un peu de chance, certains concurrents ne seront pas aussi habiles que Stuttgart pour reconstruire les unités de besoin. Ainsi, ces concurrents peuvent passer à côté de l’étiquette de prix qui conduit réellement à l’alignement, les amenant à réviser leur prix à la hausse, ce qui est souhaitable pour Stuttgart.

Deuxièmement, il peut y avoir certaines pièces avec un prix beaucoup plus élevé, disons 30% plus cher, tant que ces pièces ne se chevauchent pas avec d’autres gammes de produits. Ces pièces servent de leurres pour leurs homologues mieux tarifés, une stratégie techniquement connue sous le nom de tarification avec leurre. Le leurre est délibérément conçu pour être une option moins attrayante que l’option cible, ce qui rend l’option cible plus précieuse et incite le client à la choisir plus souvent. Ces deux principes suffisent à étendre doucement les prix non contraints au-delà de leurs seuils de concurrence.

Diapositive 17

L’alignement concurrentiel plus une dose de tarification avec leurre suffisent à attribuer une étiquette de prix à chaque numéro de pièce exposé à Stuttgart. Cependant, le taux de marge brute résultant est susceptible d’être trop faible pour Stuttgart. En effet, aligner Stuttgart avec tous ses concurrents notables met une pression énorme sur sa marge.

D’une part, l’alignement des prix est une nécessité ; sinon, Stuttgart sera progressivement évincé du marché. Mais d’autre part, Stuttgart ne peut pas se mettre en faillite dans le processus de préservation de sa part de marché. Il est crucial de se rappeler que la marge brute future associée à une stratégie de tarification donnée ne peut être qu’estimée ou prévue. Il n’y a pas de moyen exact de déduire le taux de croissance futur à partir d’un ensemble de prix, car à la fois les clients et les concurrents s’adaptent.

En supposant que nous disposions d’une estimation raisonnablement précise du taux de marge brute que Stuttgart devrait attendre la semaine prochaine, il est important de souligner que la partie “précision” de cette hypothèse n’est pas aussi déraisonnable qu’elle peut paraître. Stuttgart, comme ses concurrents, opère dans des contraintes sévères. À moins que la stratégie de tarification de Stuttgart ne soit fondamentalement modifiée, la marge brute de l’entreprise ne changera pas beaucoup d’une semaine à l’autre. Nous pouvons même considérer le taux de marge brute observé de la semaine dernière comme un proxy raisonnable de ce que Stuttgart devrait attendre la semaine prochaine, en supposant naturellement que la stratégie de tarification reste inchangée.

Supposons que le taux de marge brute de Stuttgart est projeté à 13%, mais que Stuttgart a besoin d’un taux de marge brute de 15% pour se maintenir. Que devrait faire Stuttgart dans une telle situation ? Une réponse consiste à choisir une sélection aléatoire d’ “unités de besoins” et à augmenter leurs prix d’environ 20%. Les types de pièces préférés par les clients occasionnels, comme les essuie-glaces, devraient être exclus de cette sélection. Acquérir ces clients occasionnels est coûteux et difficile, et Stuttgart ne devrait pas risquer ces premiers achats. De même, pour les types de pièces très coûteuses, comme les injecteurs, les clients sont susceptibles de faire beaucoup plus de comparaisons. Ainsi, Stuttgart ne devrait probablement pas risquer de paraître non compétitif sur ces achats plus importants.

Cependant, à l’exception de ces deux situations, je soutiendrais que la sélection aléatoire d’ “unités de besoins” et leur rendu non compétitif grâce à des prix plus élevés est une option raisonnable. En effet, Stuttgart doit augmenter certains de ses prix, une conséquence inévitable de la recherche d’un taux de marge brute plus élevé. Si Stuttgart adopte un schéma discernable tout en le faisant, les avis en ligne sont susceptibles de pointer ces schémas. Par exemple, si Stuttgart décide de renoncer à être compétitif sur les pièces de Bosch ou décide de renoncer à être compétitif sur les pièces compatibles avec les véhicules Peugeot, il y a un réel danger pour Stuttgart de devenir connu comme le concessionnaire qui n’est pas une bonne affaire pour les véhicules Bosch ou Peugeot. L’aléatoire rend Stuttgart quelque peu impénétrable, ce qui est précisément l’effet recherché.

Diapositive 18

Les rangs d’affichage sont un autre facteur crucial dans le catalogue en ligne de Stuttgart. Plus précisément, pour chaque “unité de besoin”, Stuttgart doit classer toutes les pièces éligibles. Déterminer la meilleure façon de classer les pièces est un problème adjacent à la tarification qui mérite une conférence à part entière. Les rangs d’affichage, du point de vue présenté dans cette conférence, devraient être calculés après la résolution du problème d’alignement. Cependant, il serait également concevable d’optimiser à la fois les étiquettes de prix et les rangs d’affichage simultanément. Ce problème présenterait environ 10 millions de variables au lieu des 100 000 variables avec lesquelles nous avons traité jusqu’à présent. Cependant, cela n’altère pas fondamentalement l’échelle du problème d’optimisation, car nous avons de toute façon 10 millions de contraintes à gérer. Je n’aborderai pas aujourd’hui le type de critère qui pourrait être utilisé pour guider cette optimisation des rangs d’affichage, ni comment exploiter la descente de gradient pour l’optimisation discrète. Cette dernière préoccupation est assez intéressante mais sera abordée dans une conférence ultérieure.

Slide 19

L’importance relative de l’“unité de besoin” est presque entièrement définie par les flottes de véhicules existantes. Stuttgart ne peut pas s’attendre à vendre 1 million de plaquettes de frein pour un modèle de voiture qui n’a que 1 000 véhicules en Europe. On pourrait même soutenir que les vrais consommateurs de pièces sont les véhicules eux-mêmes plutôt que leurs propriétaires. Bien que les véhicules ne paient pas pour leurs pièces (les propriétaires le font), cette analogie permet de souligner l’importance de la flotte de véhicules.

Cependant, il est raisonnable de s’attendre à des distorsions importantes lorsque les gens achètent leurs pièces en ligne. Après tout, l’achat de pièces est principalement un moyen d’économiser de l’argent par rapport à leur achat indirect auprès d’un atelier de réparation. Par conséquent, l’âge moyen des véhicules tel qu’observé par Stuttgart devrait être plus élevé que ce que les statistiques générales du marché automobile suggéreraient. De même, les personnes conduisant des voitures coûteuses sont moins susceptibles de chercher à économiser de l’argent en effectuant leurs propres réparations. Ainsi, la taille et la classe moyennes des véhicules observées par Stuttgart devraient être inférieures à ce que suggèrent les statistiques générales du marché.

Ce ne sont pas des spéculations vaines. Ces distorsions sont effectivement observées pour tous les principaux détaillants de pièces automobiles en ligne en Europe. Pourtant, l’algorithme d’alignement, tel que présenté précédemment, exploite l’historique des ventes de Stuttgart comme un proxy de la demande. Il est concevable que ces biais puissent compromettre le résultat de l’algorithme d’alignement des prix. Que ces biais aient un impact négatif sur le résultat pour Stuttgart est fondamentalement un problème empirique, car l’ampleur du problème, le cas échéant, dépend fortement des données. L’expérience de Lokad indique que l’algorithme d’alignement et ses variations sont assez robustes contre cette classe de biais, même en surestimant le poids d’une “unité de besoin” par un facteur de deux ou trois. La principale contribution de ces poids, du point de vue des prix, semble aider l’algorithme d’alignement à résoudre les conflits lorsque le même numéro de pièce appartient à deux “unités de besoin” qui ne peuvent pas être traitées conjointement. Dans la majorité de ces situations, une “unité de besoin” est nettement plus nombreuse que l’autre en termes de volume. Ainsi, même une estimation considérablement erronée des volumes respectifs a peu de conséquences sur les prix.

Identifier les plus grands biais entre ce que la demande aurait dû être pour une “unité de besoin” et ce que Stuttgart observe comme ventes réalisées peut être très utile. Un volume de ventes étonnamment faible pour une “unité de besoin” donnée tend à indiquer des problèmes banals avec la plateforme de commerce électronique. Certaines pièces peuvent être mal étiquetées, certaines peuvent avoir des images incorrectes ou de mauvaise qualité, etc. En pratique, ces biais peuvent être identifiés en comparant les ratios de ventes pour un modèle de voiture donné des différents types de pièces. Par exemple, si Stuttgart ne vend aucune plaquette de frein pour un modèle de voiture donné, alors que les volumes de ventes pour les autres types de pièces sont cohérents avec ce qui est généralement observé, il est peu probable que ce modèle de voiture ait une consommation exceptionnellement faible de plaquettes de frein. La cause profonde se trouve presque certainement ailleurs.

Slide 20

Une liste supérieure de compatibilités mécaniques est un avantage concurrentiel. Connaître des compatibilités inconnues de vos concurrents vous permet de les sous-évaluer potentiellement sans déclencher une guerre des prix, ce qui vous donne un avantage pour augmenter votre part de marché. À l’inverse, identifier des compatibilités incorrectes est essentiel pour éviter les retours coûteux des clients.

En effet, le coût de la commande d’une pièce incompatible est modeste pour un atelier de réparation, car il existe probablement un processus établi pour renvoyer la pièce inutilisée au centre de distribution. Cependant, le processus est beaucoup plus fastidieux pour les clients réguliers qui peuvent même ne pas réussir à bien emballer la pièce pour son retour. Ainsi, chaque entreprise de commerce électronique a intérêt à construire sa propre couche d’enrichissement des données sur les ensembles de données tiers qu’elle loue. La plupart des acteurs du commerce électronique dans cette verticalité ont leur propre couche d’enrichissement des données sous une forme ou une autre.

Il y a peu d’incitations à partager ces connaissances avec les entreprises spécialisées qui maintiennent ces ensembles de données en premier lieu, car ces connaissances profiteraient principalement à la concurrence. Il est difficile d’évaluer le taux d’erreur dans ces ensembles de données, mais chez Lokad, nous estimons qu’il tourne autour d’un faible pourcentage à un chiffre des deux côtés. Il y a quelques pour cent de faux positifs, où une compatibilité est déclarée alors qu’elle n’existe pas, et il y a quelques pour cent de faux négatifs, où une compatibilité existe mais n’est pas déclarée. Étant donné que la liste des compatibilités mécaniques comprend plus de 100 millions de lignes, il y a très probablement environ sept millions d’erreurs selon des estimations conservatrices.

Par conséquent, il est dans l’intérêt de Stuttgart d’améliorer cet ensemble de données. Les retours de clients signalés comme étant causés par une compatibilité mécanique faussement positive peuvent certainement être exploités à cette fin. Cependant, ce processus est lent et coûteux. De plus, comme les clients ne sont pas des techniciens automobiles professionnels, ils peuvent signaler une pièce comme étant incompatible lorsqu’ils viennent simplement d’échouer à monter la pièce. Stuttgart peut reporter la décision de déclarer une pièce comme incompatible jusqu’à ce que plusieurs plaintes aient été déposées, mais cela rend le processus encore plus coûteux et plus lent.

Ainsi, une recette numérique pour améliorer cet ensemble de données de compatibilité serait très souhaitable. Il n’est pas évident qu’il soit même possible d’améliorer cet ensemble de données sans exploiter des informations supplémentaires. Cependant, de manière assez surprenante, il s’est avéré que cet ensemble de données peut être amélioré sans aucune autre information. Cet ensemble de données peut s’auto-amorcer pour devenir une version supérieure.

J’ai personnellement réalisé cette prise de conscience au premier trimestre 2017 alors que je menais une série d’expériences d’apprentissage profond pour Lokad. J’ai utilisé une factorisation de matrice, une technique bien connue pour le filtrage collaboratif. Le filtrage collaboratif est le problème central lors de la construction d’un système de recommandation, qui consiste à identifier le produit qu’un utilisateur pourrait aimer en fonction des préférences connues de cet utilisateur pour une courte liste de produits. Adapter le filtrage collaboratif aux compatibilités mécaniques est simple : remplacer les utilisateurs par des modèles de voitures et remplacer les produits par des pièces de voiture. Voilà, le problème est adapté.

Plus généralement, la factorisation de matrice est applicable à toute situation impliquant un graphe biparti. La factorisation de matrice est également utile au-delà de l’analyse de graphes. Par exemple, l’adaptation à faible rang de grands modèles de langage (LLM), une technique devenue extrêmement populaire pour affiner les LLM, repose également sur le truc de la factorisation de matrice. La factorisation de matrice est illustrée à l’écran. À gauche, nous avons la matrice de compatibilité avec des uns pour indiquer une compatibilité entre une voiture et une pièce, et des zéros pour indiquer une incompatibilité entre un modèle de voiture et un numéro de pièce. Nous voulons remplacer cette matrice large et très clairsemée par le produit de deux matrices plus petites et denses. Ces deux matrices sont visibles à droite. Ces matrices servent à factoriser la grande matrice. En effet, nous plongeons chaque modèle de voiture et chaque numéro de pièce dans un espace latent. La dimension de cet espace latent est notée L majuscule à l’écran. Cet espace latent est conçu pour capturer les compatibilités mécaniques, mais avec beaucoup moins de dimensions par rapport à la matrice d’origine. En maintenant la dimension de cet espace latent assez faible, nous visons à apprendre les règles cachées qui régissent ces compatibilités mécaniques.

Slide 21

Bien que la factorisation de matrice puisse sembler être un grand concept technique, ce n’est pas le cas. C’est un simple truc de l’algèbre linéaire. La seule chose trompeuse à propos de la factorisation de matrice est qu’elle fonctionne si bien malgré sa simplicité. À l’écran, vous pouvez voir une implémentation complète de cette technique en moins de 30 lignes de code.

Des lignes un à trois, nous lisons le fichier plat qui répertorie les compatibilités mécaniques. Ce fichier est chargé dans une table nommée M pour des raisons de concision, qui signifie matrice. Cette liste est en fait une représentation clairsemée de la matrice de compatibilité. Lors du chargement de cette liste, nous créons également deux autres tables nommées car_models et pns. Ces blocs nous donnent trois tables : M, car_models et pns.

Les lignes cinq et six consistent à mélanger aléatoirement la colonne qui contient les modèles de voitures. Le but du mélange est de créer des zéros aléatoires, ou des incompatibilités aléatoires. En effet, la matrice de compatibilité est très clairsemée. Lorsque nous choisissons une voiture aléatoire et une pièce aléatoire, il est presque certain que cette paire est incompatible. La confiance que nous avons dans cette association aléatoire étant zéro est en réalité plus élevée que la confiance que nous avons dans la liste de compatibilité en premier lieu. Ces zéros aléatoires sont précis à 99,9% par conception en raison de la clairsemée de la matrice, tandis que les compatibilités connues sont peut-être précises à 97%.

La ligne huit consiste à créer l’espace latent avec 24 dimensions. Bien que 24 dimensions puissent sembler beaucoup pour des embeddings, c’est très petit par rapport aux grands modèles de langage, qui ont des embeddings sur plus d’un millier de dimensions. Les lignes neuf et dix consistent à créer les deux petites matrices, nommées pnl et car_L, que nous utiliserons pour factoriser la grande matrice. Ces deux matrices représentent environ 24 millions de paramètres pour pnl et 2,4 millions de paramètres pour car_L. Cela est considéré comme petit par rapport à la grande matrice, qui compte environ 100 milliards de valeurs.

Soulignons que la grande matrice n’est jamais matérialisée dans ce script. Elle n’est jamais explicitement transformée en tableau ; elle est toujours conservée sous forme de liste de 100 millions de compatibilités. La transformer en tableau serait extrêmement inefficace en termes de ressources informatiques.

Les lignes 12 à 15 introduisent deux fonctions d’aide nommées sigmoid et log_loss. La fonction sigmoid est utilisée pour convertir le produit matriciel brut en probabilités, c’est-à-dire des nombres entre 0 et 1. La fonction log_loss représente la perte logistique. La perte logistique applique la vraisemblance logarithmique, une mesure utilisée pour évaluer la justesse d’une prédiction probabiliste. Ici, elle est utilisée pour évaluer une prédiction probabiliste pour un problème de classification binaire. Nous avons déjà rencontré la vraisemblance logarithmique dans la leçon 5.3, consacrée à la prévision probabiliste des délais de livraison. Il s’agit d’une variation plus simple de la même idée. Ces deux fonctions sont marquées avec le mot-clé autograd, indiquant qu’elles peuvent être automatiquement différenciées. La petite valeur d’un sur un million est un epsilon introduit pour la stabilité numérique. Elle n’a aucune incidence sur la logique par ailleurs. Des lignes 17 à 29, nous avons la factorisation matricielle elle-même. Une fois de plus, nous utilisons la programmation différentiable. Il y a quelques minutes, nous utilisions la programmation différentiable pour résoudre approximativement un problème de satisfaction de contraintes. Ici, nous utilisons la programmation différentiable pour résoudre un problème d’apprentissage auto-supervisé.

Aux lignes 18 et 19, nous déclarons les paramètres à apprendre. Ces paramètres sont associés aux deux petites matrices, pnl et car_L. Le mot-clé ‘auto’ indique que ces paramètres sont initialisés de manière aléatoire en tant que déviations aléatoires d’une distribution gaussienne centrée sur zéro, avec un écart type de 0,1.

Les lignes 20 et 21 introduisent deux paramètres spéciaux qui accélèrent la convergence. Ce ne sont que 48 nombres au total, une goutte d’eau par rapport à nos petites matrices qui ont encore des millions de nombres. Et pourtant, j’ai constaté que l’introduction de ces paramètres accélère considérablement la convergence. Il est important de souligner que ces paramètres n’introduisent aucun degré de liberté supplémentaire pour le modèle existant. Ces paramètres n’introduisent qu’un tout petit nombre de degrés de liberté supplémentaires dans le processus d’apprentissage. L’effet net est qu’ils réduisent de plus de la moitié le nombre d’époques nécessaires.

Aux lignes 22 à 24, nous chargeons les embeddings. À la ligne 22, nous avons l’embedding pour une seule pièce nommée px. À la ligne 23, nous avons l’embedding pour un seul modèle de voiture nommé mx. La paire px et mx sera notre arête positive, une compatibilité considérée comme vraie. À la ligne 24, nous avons l’embedding pour un autre modèle de voiture nommé mx2. La paire px et mx2 sera notre arête négative, une compatibilité considérée comme fausse. En effet, mx2 a été choisi au hasard grâce au mélange qui se produit à la ligne six. Les trois embeddings px, mx et mx2 ont tous exactement 24 dimensions, car ils appartiennent à l’espace latent, représenté par la table L dans ce script.

À la ligne 26, nous exprimons la probabilité, telle que définie par notre modèle, par un produit scalaire de cette arête pour être positive. Nous savons que cette arête est positive, du moins c’est ce que nous dit l’ensemble de données de compatibilité. Mais ici, nous évaluons ce que notre modèle probabiliste dit de cette arête. À la ligne 27, nous exprimons la probabilité, également définie par notre modèle probabiliste, par le produit scalaire de cette arête pour être négative. Nous supposons que cette arête est négative car c’est une arête aléatoire. Encore une fois, nous évaluons cette probabilité pour voir ce que notre modèle dit de cette arête. À la ligne 29, nous renvoyons l’opposé du logarithme de la vraisemblance associée à cette arête. La valeur de retour est utilisée comme une perte à minimiser par la descente de gradient stochastique. Ici, cela signifie que nous maximisons la vraisemblance logarithmique, ou les critères de classification binaire probabiliste, entre les paires compatibles et incompatibles.

Ensuite, au-delà de ce qui est montré dans ce script, la grande matrice peut être comparée au produit scalaire de deux petites matrices. Les divergences entre les deux représentations mettent en évidence à la fois les faux positifs et les faux négatifs des ensembles de données d’origine. La chose la plus étonnante est que la représentation factorisée de cette grande matrice se révèle plus précise que la matrice d’origine.

Malheureusement, je ne peux pas présenter les résultats empiriques associés à ces techniques, car les ensembles de données de compatibilité pertinents sont tous propriétaires. Cependant, mes découvertes, validées par quelques acteurs de ce marché, indiquent que ces techniques de factorisation de matrices peuvent être utilisées pour réduire le nombre de faux positifs et de faux négatifs jusqu’à un ordre de grandeur. En termes de performance, je suis passé d’environ deux semaines de calcul pour obtenir une convergence satisfaisante avec l’outil d’apprentissage profond que j’utilisais, CNTK - l’outil d’apprentissage profond de Microsoft en 2017, à environ une heure avec le temps d’exécution actuel offert par Envision. Les premiers outils d’apprentissage profond offraient une programmation différentiable dans un sens ; cependant, ces solutions étaient fortement optimisées pour les produits de matrices et les convolutions de grande taille. Les outils plus récents, comme Jax de Google, je suppose qu’ils offriraient des performances comparables aux performances d’Envision.

Cela soulève la question : pourquoi les entreprises spécialisées qui gèrent des ensembles de données de compatibilité n’utilisent-elles pas déjà la factorisation de matrices pour nettoyer leurs ensembles de données ? Si elles l’avaient fait, la factorisation de matrices n’apporterait rien de nouveau. La factorisation de matrices en tant que technique d’apprentissage automatique existe depuis près de 20 ans. Cette technique a été popularisée en 2006 par Simon Funk. Ce n’est plus exactement à la pointe de la technologie. Ma réponse à cette question originale est que je ne sais pas. Peut-être que ces entreprises spécialisées commenceront à utiliser la factorisation de matrices après avoir regardé cette conférence, ou peut-être pas.

En tout cas, cela démontre que la programmation différentiable et la modélisation probabiliste sont des paradigmes très polyvalents. De loin, la prévision du délai de livraison n’a rien à voir avec l’évaluation des compatibilités mécaniques, et pourtant les deux peuvent être abordés avec le même instrument, à savoir la programmation différentiable et la modélisation probabiliste.

Slide 22

Le jeu de données des compatibilités mécaniques n’est pas le seul jeu de données qui peut s’avérer inexact. Parfois, les outils de veille concurrentielle renvoient également des données erronées. Même si le processus de scriptage web est assez fiable lorsqu’il s’agit d’extraire des millions de prix à partir de pages web semi-structurées, des erreurs peuvent se produire. Identifier et traiter ces prix erronés est un défi en soi. Cependant, cela mériterait également une conférence spécifique, car les problèmes ont tendance à être à la fois spécifiques au site web ciblé et à la technologie utilisée pour le scriptage web.

Bien que les préoccupations liées au web scraping soient importantes, ces préoccupations se déroulent avant l’exécution de l’algorithme d’alignement et devraient donc être largement dissociées de l’alignement lui-même. Les erreurs de scraping ne doivent pas être laissées au hasard. Il existe deux façons de jouer au jeu de la veille concurrentielle : vous pouvez soit améliorer vos chiffres, les rendre plus précis, soit rendre les chiffres de vos concurrents moins précis. C’est de cela qu’il s’agit dans le contre-espionnage.

Comme discuté précédemment, bloquer les robots en fonction de leur adresse IP ne fonctionnera pas. Cependant, il existe des alternatives. La couche de transport du réseau est loin d’être la plus intéressante à manipuler si nous avons l’intention de semer une confusion bien ciblée. Il y a une dizaine d’années, Lokad a mené une série d’expériences de contre-espionnage pour voir si un grand site de commerce électronique, comme SugAr, pouvait se défendre contre ses concurrents. Les résultats ? Oui, il le peut.

À un moment donné, j’ai même pu confirmer l’efficacité de ces techniques de contre-espionnage en inspectant directement les données fournies par le spécialiste du web scraping, qui n’avait aucune idée de ce qui se passait. Le nom de code de cette initiative était Bot Defender. Ce projet a été abandonné, mais vous pouvez encore voir quelques traces de Bot Defender dans notre archive de blog public.

Au lieu de chercher à refuser l’accès aux pages HTML, ce qui est une proposition perdante, nous avons décidé d’interférer sélectivement avec les web scrapers eux-mêmes. L’équipe de Lokad ne connaissait pas les détails de la conception de ces web scrapers. En considérant la structure DHTML d’un site web de commerce électronique donné, il n’est pas trop difficile de faire une supposition éclairée sur la façon dont une entreprise exploitant les web scrapers procéderait. Par exemple, si chaque page HTML du site StuttArt possède une classe CSS très pratique appelée ‘unit price’ qui isole le prix du produit au milieu de la page, il est raisonnable de supposer que pratiquement tous les robots utiliseront cette classe CSS très pratique pour extraire les prix du code HTML. En effet, à moins que le site web StuttArt n’offre un moyen encore plus pratique d’obtenir les prix, comme une API ouverte pouvant être interrogée librement, cette classe CSS est le chemin évident pour extraire les prix.

Cependant, comme la logique de web scraping est évidente, il est également évident comment interférer sélectivement avec cette logique. Par exemple, StuttArt peut décider de sélectionner quelques produits bien ciblés et de ‘poisonner’ le HTML. Dans l’exemple donné à l’écran, visuellement, les deux pages HTML vont s’afficher pour les humains comme une étiquette de prix de 65 euros et 50 centimes. Cependant, la deuxième version de la page HTML sera interprétée par les robots comme 95 euros au lieu de 65 euros. Le chiffre ‘9’ est tourné par CSS pour ressembler à un ‘6’. Le scraper web typique, qui repose sur le balisage HTML, ne va pas détecter cela.

Slide 23

Dix ans plus tard, même un modèle de langage sophistiqué comme GPT-4, qui n’existait pas à l’époque, est toujours trompé par ce simple tour de CSS. À l’écran, nous voyons que GPT-4 n’extrait pas un prix de 65 euros comme il aurait dû le faire, mais répond à 95 euros. Marginalement, il existe des dizaines de façons de créer un code HTML qui offre une étiquette de prix évidente pour un robot qui diffère de celle qu’un être humain lirait sur le site web. Faire tourner un ‘9’ en ‘6’ n’est qu’un des tours les plus simples parmi une vaste gamme de tours similaires.

Une contre-mesure à cette technique consisterait à rendre la page, à créer la bitmap complète, puis à appliquer la reconnaissance optique de caractères (OCR) à cette bitmap. Cependant, cela est assez coûteux. Les entreprises de veille concurrentielle doivent vérifier quotidiennement des dizaines de millions de pages web. En règle générale, l’exécution d’un processus de rendu de page web suivi d’une OCR augmente le coût de traitement d’au moins un facteur de 100, et plus probablement d’un facteur de 1000.

À titre de référence, en mai 2023, Microsoft Azure facture un dollar pour mille opérations OCR. En tenant compte du fait qu’il y a plus de 10 millions de pages à surveiller quotidiennement par les spécialistes de la veille concurrentielle en Europe, cela représente un budget de 10 000 dollars par jour pour la seule OCR. Et Microsoft Azure, soit dit en passant, est très compétitif sur ce point.

En tenant compte d’autres coûts tels que la bande passante pour ces précieuses adresses IP résidentielles, il est très probable que le budget annuel en termes de ressources informatiques se situe dans la fourchette des 5 millions d’euros si nous empruntons cette voie. Un budget annuel de plusieurs millions est possible, mais les marges des entreprises de scraping web sont minces et elles n’emprunteront pas cette voie. Si elles peuvent obtenir une veille concurrentielle précise à 99% par des moyens beaucoup moins coûteux, cela suffit à satisfaire leurs clients.

Revenons à StuttArt, il serait imprudent d’utiliser cette technique de contre-ingérence pour empoisonner tous les prix, car cela va intensifier la course aux armements avec les scrapers web. Au lieu de cela, StuttArt devrait choisir judicieusement le un pour cent des références qui auront un impact maximal en termes de concurrence. Il est fort probable que les scrapers web ne remarqueront même pas le problème. Même si les scrapers web remarquent les contre-mesures, tant que cela est perçu comme un problème de faible intensité, ils n’agiront pas dessus. En effet, le web scraping présente toutes sortes de problèmes de faible intensité : le site web que vous souhaitez analyser peut être très lent, il peut être hors service, ou la page web d’intérêt peut présenter des problèmes. Une promotion conditionnelle peut être présente, rendant le prix peu clair pour la partie intéressée.

Du point de vue de StuttArt, il nous reste à choisir le un pour cent des numéros de pièces qui présentent un intérêt maximal en termes de renseignement concurrentiel. Ces pièces seraient généralement celles que StuttArt souhaiterait le plus réduire, mais sans déclencher une guerre des prix. Il existe plusieurs façons de procéder. Un type de pièces très intéressantes sont les consommables bon marché, comme les essuie-glaces. Un client qui souhaite essayer StuttArt pour son premier achat est peu susceptible de commencer par un injecteur de 600 euros. Un client débutant est beaucoup plus susceptible de commencer par un essuie-glace de 20 euros pour un essai. Plus généralement, les clients débutants se comportent très différemment des clients réguliers. Ainsi, le un pour cent des pièces que StuttArt devrait probablement rendre particulièrement attractives, sans déclencher une guerre des prix, sont les pièces les plus susceptibles d’être achetées par des clients débutants.

Slide 24

Éviter une guerre des prix et une érosion de la part de marché sont tous deux des résultats très négatifs pour StuttArt, il faut donc des circonstances particulières pour s’écarter du principe d’alignement. Nous avons déjà vu l’une de ces circonstances, qui était la nécessité de contrôler la marge brute. Cependant, ce n’est pas la seule. Les surstocks et les ruptures de stock sont deux autres candidats principaux à prendre en compte pour ajuster les prix. Les surstocks sont mieux traités de manière proactive. Il serait préférable pour StuttArt d’éviter complètement les surstocks, mais des erreurs se produisent ainsi que des fluctuations du marché, et malgré des politiques de réapprovisionnement des stocks soigneuses, StuttArt sera régulièrement confronté à des surstocks localisés. La tarification est un mécanisme précieux pour atténuer ces problèmes. StuttArt est toujours mieux placé pour vendre les pièces en surstock avec une remise substantielle plutôt que de ne pas les vendre du tout, il faut donc tenir compte des surstocks dans la stratégie de tarification.

Réduisons la portée des surstocks aux seules pièces qui sont très susceptibles de devenir des dépréciations d’inventaire. Dans ce contexte, les surstocks peuvent être traités avec une substitution d’alignement des coûts qui réduit l’étiquette de prix à une marge brute proche de zéro, voire légèrement en dessous en fonction de la réglementation et de l’ampleur du surstock.

À l’inverse, les ruptures de stock, ou plutôt les quasi-ruptures de stock, doivent voir leurs étiquettes de prix révisées à la hausse. Par exemple, si StuttArt n’a plus que cinq unités en stock pour une pièce qui se vend généralement une unité par jour, et que le prochain réapprovisionnement n’arrivera pas avant 15 jours, alors cette pièce va presque certainement connaître une rupture de stock. Il n’y a pas d’intérêt à se précipiter dans la rupture de stock. StuttArt pourrait augmenter son prix pour cette pièce. Tant que la diminution de la demande est suffisamment faible pour que StuttArt évite une rupture de stock, cela n’aura pas d’importance.

Les outils d’intelligence concurrentielle sont de plus en plus capables de surveiller non seulement les prix, mais aussi les délais de livraison annoncés pour les pièces exposées sur le site web d’un concurrent. Cela offre la possibilité à StuttArt de surveiller non seulement ses propres ruptures de stock, mais aussi de surveiller les ruptures de stock au fur et à mesure qu’elles se produisent chez les concurrents. Une cause fréquente derrière une rupture de stock d’un détaillant est une rupture de stock d’un fournisseur. Si le fabricant lui-même est en rupture de stock, alors StuttArt, ainsi que tous ses concurrents, risque également de se retrouver en rupture de stock. Dans le cadre de l’algorithme d’alignement des prix, il est raisonnable de retirer de cet alignement les pièces qui sont soit en rupture de stock chez les fournisseurs, soit en rupture de stock sur le site web des concurrents. Les situations de rupture de stock des concurrents peuvent être surveillées grâce aux retards de livraison lorsque ces retards de livraison reflètent des conditions inhabituelles. De plus, si un fabricant d’équipement d’origine (OEM) commence à annoncer des retards inhabituels pour des pièces, il est peut-être temps d’augmenter les prix de ces pièces. Cela indique que tout le monde sur le marché aura très probablement du mal à se procurer davantage de pièces automobiles de ce fabricant en particulier.

À ce stade, il devrait être assez évident que l’optimisation des prix et l’optimisation des stocks sont des problèmes étroitement liés, et donc, ces deux problèmes doivent être résolus conjointement dans la pratique. En effet, au sein d’une unité de besoin donnée, la pièce qui bénéficie à la fois du prix le plus bas et du rang d’affichage le plus élevé au sein de sa gamme de produits absorbera la majeure partie des ventes. Les prix dirigent la demande vers de nombreuses alternatives dans l’offre de StuttArt. Il n’a pas de sens d’avoir une équipe d’inventaire qui tente de prévoir les prix générés par l’équipe de tarification. Au lieu de cela, il devrait y avoir une fonction unifiée de la supply chain qui aborde conjointement les deux préoccupations.

Slide 25

Les conditions de livraison font partie intégrante du service. En ce qui concerne les pièces automobiles, non seulement les clients ont de grandes attentes quant au fait que StuttArt tiendra ses promesses, mais ils pourraient même être prêts à payer plus cher si le processus est accéléré. Plusieurs grandes entreprises de commerce électronique vendant des pièces automobiles en Europe proposent déjà des prix distincts en fonction du délai de livraison. Ces prix distincts ne reflètent pas seulement des options d’expédition distinctes, mais également des options d’approvisionnement distinctes. Si le client est prêt à attendre une ou deux semaines, alors StuttArt dispose de options d’approvisionnement supplémentaires, et StuttArt peut faire bénéficier directement aux clients une partie des économies réalisées. Par exemple, une pièce peut être acquise par StuttArt uniquement après avoir été commandée par le client, ce qui élimine totalement les coûts de stockage et les risques d’inventaire.

Les conditions de livraison compliquent l’intelligence concurrentielle. Premièrement, les outils d’intelligence concurrentielle doivent récupérer des informations sur les retards, pas seulement sur les prix. De nombreux spécialistes de l’intelligence concurrentielle le font déjà, et StuttArt doit faire de même. Deuxièmement, StuttArt doit ajuster son algorithme d’alignement des prix pour refléter les conditions de livraison variables. La programmation différentiable peut être mise à contribution pour fournir une estimation de la valeur, exprimée en euros, apportée par l’économie d’un jour de temps. Cette valeur est censée dépendre du modèle de voiture, du type de pièce et du nombre de jours pour la livraison. Par exemple, passer d’un délai de livraison de trois jours à un délai de livraison de deux jours est beaucoup plus précieux pour le client que passer d’un délai de livraison de 21 jours à un délai de livraison de 20 jours.

Slide 26

En conclusion, une stratégie tarifaire étendue a été proposée aujourd’hui pour StuttArt, une persona de la supply chain dédiée au marché de l’automobile en ligne. Nous avons vu que la tarification n’est pas propice à une stratégie d’optimisation locale quelconque. Le problème de tarification est en effet non local en raison de la compatibilité mécanique qui propage l’impact d’une étiquette de prix pour une pièce donnée sur de nombreuses unités de besoins. Cela nous a conduit à une perspective où la tarification est abordée comme un alignement au niveau de l’unité de besoin. Deux sous-problèmes ont été abordés grâce à la programmation différentiable. Tout d’abord, nous avons résolu un problème de satisfaction approximative des contraintes pour l’alignement concurrentiel lui-même. Deuxièmement, nous avons eu le problème de l’amélioration automatique des ensembles de données de compatibilité mécanique pour améliorer la qualité de l’alignement, mais aussi pour améliorer la qualité de l’expérience client. Nous pouvons ajouter ces deux problèmes à notre liste croissante de problèmes de supply chain qui bénéficient d’une solution directe une fois abordés par la programmation différentiable.

Plus généralement, s’il y a une leçon à retenir de cette conférence, ce n’est pas que le marché de l’automobile est un cas à part en ce qui concerne les stratégies de tarification. Au contraire, la leçon à retenir est que nous devons toujours nous attendre à rencontrer de nombreuses spécificités, quelle que soit la verticalité d’intérêt. Il y aurait eu autant de spécificités si nous avions examiné une autre persona de la supply chain au lieu de nous concentrer sur StuttArt, comme nous l’avons fait aujourd’hui. Ainsi, il est inutile de chercher une réponse définitive. Toute solution analytique est garantie d’échouer à traiter le flux infini de variations qui surgiront au fil du temps dans une supply chain réelle. Au lieu de cela, nous avons besoin de concepts, de méthodes et d’instruments qui nous permettent non seulement de traiter l’état actuel de la supply chain, mais qui soient également susceptibles d’être modifiés de manière programmatique. La programmabilité est essentielle pour rendre les recettes numériques de tarification résistantes à l’avenir.

Slide 27

Avant de passer aux questions, j’aimerais annoncer que la prochaine conférence aura lieu la première semaine de juillet. Ce sera un mercredi comme d’habitude, à la même heure - 15h, heure de Paris. Je revisiterai le chapitre un en examinant de plus près ce que l’économie, l’histoire et la théorie des systèmes nous disent sur la supply chain et la planification de la supply chain.

Maintenant, passons aux questions.

Question : Avez-vous l’intention de donner une conférence sur la visualisation du coût total de possession pour une supply chain ? En d’autres termes, une analyse du TCO de l’ensemble de la supply chain à l’aide de l’analyse de données et de l’optimisation globale des coûts ?

Oui, cela fait partie du parcours de cette série de conférences. Certains éléments ont déjà été discutés dans plusieurs conférences. Mais l’essentiel est que ce n’est pas vraiment un problème de visualisation. L’objectif du coût total de possession n’est pas un problème de visualisation des données ; c’est un problème de mentalité. La plupart des pratiques de la supply chain sont extrêmement négligentes en ce qui concerne la perspective financière. Elles poursuivent des taux de service d’erreur, pas des dollars ou des euros d’erreur. La plupart, malheureusement, poursuivent ces pourcentages. Il est donc nécessaire de changer de mentalité.

La deuxième chose est qu’il y a des éléments discutés dans la conférence qui faisait partie du premier chapitre - l’orientation produit, comme la livraison orientée produit pour la supply chain. Nous devons penser non seulement au premier cercle des moteurs économiques, mais aussi à ce que j’appelle le deuxième cercle des moteurs économiques. Ce sont des forces insaisissables, par exemple, si vous baissez le prix d’un produit d’un euro en créant une promotion, une analyse naïve pourrait suggérer que cela m’a coûté un euro de marge simplement parce que j’ai fait cette remise d’un euro. Mais la réalité est que, en faisant cela, vous créez une attente parmi votre base de clients de s’attendre à cette remise d’un euro à l’avenir. Et cela a donc un coût. C’est un coût de deuxième ordre, mais il est bien réel. Tous ces moteurs économiques de deuxième cercle sont des moteurs importants qui n’apparaissent pas dans votre grand livre ou vos livres. Oui, je vais continuer avec d’autres éléments qui décrivent ces coûts. Cependant, ce n’est pas principalement un problème analytique en termes de visualisation ou de graphique ; c’est une question de mentalité. Nous devons accepter l’idée que ces choses doivent être quantifiées, même si elles sont extrêmement difficiles à quantifier.

Lorsque nous commençons à discuter du coût total de possession, nous devons également discuter du nombre de personnes dont j’ai besoin pour opérer cette solution de supply chain. C’est l’une des raisons pour lesquelles, dans cette série de conférences, je dis que nous avons besoin de solutions programmatiques. Nous ne pouvons pas avoir une armée de commis qui ajustent des feuilles de calcul ou des tableaux et qui font des choses extrêmement coûteuses en termes de coûts, comme traiter les alertes d’exceptions dans les logiciels de supply chain. Les alertes et les exceptions consistent à traiter l’ensemble de votre personnel de l’entreprise comme des co-processeurs humains pour le système. C’est extrêmement coûteux.

L’analyse du coût total de possession est principalement un problème de mentalité, d’avoir la bonne perspective. Dans la prochaine conférence, je revisiterai également d’autres angles, en particulier ce que l’économie nous dit sur la supply chain. C’est très intéressant car nous devons réfléchir à ce que le coût total de possession signifie vraiment pour une solution de supply chain, en particulier si nous commençons à réfléchir à la valeur qu’elle apporte à l’entreprise.

Question : Pour des références techniquement compatibles à une unité de besoin, il existe des différences perçues dans la qualité, l’activité, l’argent, l’or, etc. Comment prenez-vous cela en compte dans une correspondance de prix concurrentielle ?

C’est tout à fait exact. C’est pourquoi il est nécessaire d’introduire des gammes de produits. Ce niveau d’attractivité peut généralement être regroupé en une demi-douzaine de classes qui représentent des normes de qualité pour les pièces. Par exemple, vous avez la gamme sport automobile, qui comprend les pièces les plus luxueuses avec une excellente compatibilité mécanique. Ces pièces ont également un bon aspect, et l’emballage lui-même est de haute qualité.

Mon expérience dans ce marché est que, bien qu’il existe d’innombrables variations pour rendre la qualité d’une pièce légèrement supérieure ou meilleure, le marché s’est pratiquement convergé vers une demi-douzaine de gammes de produits allant de très chères à moins chères. Lorsque nous regroupons les pièces de StuttArt, nous devons les regrouper dans des gammes de produits. Il en va de même pour les pièces des concurrents, ce qui signifie que nous devons savoir quel est le type de plage de qualité d’une pièce, même si la pièce n’est pas vendue par StuttArt.

StuttArt doit avoir une connaissance de toutes les pièces du marché. Ce n’est pas aussi difficile que cela puisse paraître car la plupart des fabricants fournissent des informations sur la qualité attendue de leurs pièces. Ces choses sont assez codifiées par les fabricants d’équipements d’origine (OEM) eux-mêmes. Nous bénéficions du fait que le marché automobile est un marché incroyablement établi, très mature qui existe depuis plus d’un siècle. Les entreprises qui vendent ces ensembles de données de compatibilité, des ensembles de données pour les voitures et les compatibilités de pièces, fournissent également une multitude d’attributs pour les pièces et les modèles de voitures. Nous parlons de centaines d’attributs. Ces ensembles de données sont vastes et riches. À l’origine, ces ensembles de données étaient utilisés par les personnes dans les centres de réparation pour savoir comment effectuer des réparations. Ils sont même accompagnés de pièces jointes PDF et de documentation technique. C’est très riche ; vous avez des dizaines de gigaoctets de données, y compris des images et des photos. Je n’ai fait qu’effleurer la surface en termes de valeur marchande de ces ensembles de données.

Question : Comment les réglementations variables d’une région à l’autre impactent-elles l’optimisation des prix pour les entreprises automobiles ? Par exemple, vous avez mentionné Peugeot, une entreprise française. Comment votre approche pour Peugeot différerait-elle de celle d’une entreprise similaire en Scandinavie ou en Asie ?

La Scandinavie est pratiquement le même marché automobile. Ils ont quelques marques différentes, mais c’est trop petit pour soutenir leur propre industrie automobile. En ce qui concerne l’industrie automobile, la Scandinavie est tout comme les 350 millions d’Européens. Cependant, l’Asie est vraiment différente. L’Inde et la Chine sont des marchés à part entière.

En ce qui concerne l’optimisation des prix, les réglementations n’ont pas tant empêché que retardé l’existence des revendeurs de pièces automobiles en ligne. Par exemple, en Europe, il y a 20 ans, il y a eu une bataille juridique. Des pionniers comme StuttArt, qui étaient les premières entreprises à vendre des pièces automobiles en ligne, ont fait face à des contestations juridiques. Ils vendaient des pièces automobiles et indiquaient sur leur site web qu’elles étaient identiques à celles vendues par les fabricants de voitures d’origine.

Des entreprises comme StuttArt disaient : “Je ne vous vends pas n’importe quelle pièce automobile, je vous vends exactement la même pièce automobile que le fabricant de voitures utiliserait.” Ils pouvaient faire cette affirmation car ils achetaient exactement la même pièce de la même usine. Si une pièce provient, disons, de Valeo et est montée sur une voiture Peugeot, il y a une association connue. Il y a environ deux décennies, plusieurs tribunaux en Europe ont statué que c’était légal pour un site web de prétendre vendre exactement la même pièce que celles qui sont qualifiées de pièces d’origine d’une voiture. Cette incertitude réglementaire a retardé l’essor des pièces automobiles de rechange vendues en ligne, probablement d’environ cinq ans. Les pionniers se battaient devant les tribunaux contre les fabricants de voitures pour avoir le droit de vendre des pièces automobiles en ligne tout en prétendant qu’il s’agissait de pièces d’origine pour la voiture. Une fois que cela a été clarifié, ils ont pu le faire à condition d’être honnêtes et d’acheter réellement la même pièce automobile exacte de Valeo ou Bosch, exactement comme la pièce montée sur la voiture.

Cependant, il y a encore des limitations. Par exemple, il y a encore des pièces qui caractérisent l’apparence visuelle de la voiture, et seul le fabricant de voitures peut les vendre en tant que pièces d’origine. Par exemple, le capot de la voiture. Ces réglementations ont un impact en termes de restriction de la gamme de pièces pouvant être librement vendues en ligne tout en prétendant que la pièce est exactement la même que celle du fabricant d’origine. Nous parlons de pièces qui ont des implications non seulement en termes de compatibilité mécanique, mais aussi de sécurité. Certaines de ces pièces sont critiques pour la sécurité.

En Asie, un problème que je n’ai pas abordé ici est la contrefaçon. Traiter avec des contrefaçons est très différent en Europe par rapport à l’Asie. Les contrefaçons existent en Europe, mais le marché est mature et catalysé. Les équipementiers d’origine et les fabricants de voitures se connaissent très bien. Bien que les contrefaçons existent, c’est un problème très minime. Dans des marchés comme l’Asie, notamment l’Inde et la Chine, il y a encore quelques problèmes avec les contrefaçons. Ce n’est pas vraiment un problème de réglementation, car les contrefaçons sont tout aussi illégales en Chine qu’en Europe. Le problème réside dans l’application de la loi, avec un degré d’application beaucoup plus faible en Asie qu’en Europe.

Question : Essayons-nous d’optimiser un prix global ou par rapport aux concurrents ?

La fonction d’optimisation est conceptuellement pour chaque unité de besoin - une unité de besoin étant un modèle de voiture et un type de pièce. Pour chaque unité de besoin, vous avez une différence de prix en euros entre le prix de StuttArt, qui est la meilleure offre de StuttArt, et le prix du concurrent. Vous prenez la différence absolue de ces deux prix et les additionnez ; c’est votre fonction. Nous n’allons pas utiliser naïvement cette somme de différences de prix ; nous allons ajouter un poids qui reflète le volume de ventes annuel de chaque unité de besoin.

Par conséquent, la fonction d’optimisation pour votre problème de satisfaction des contraintes est une somme de différences absolues entre le meilleur prix offert par StuttArt pour l’unité de besoin et le meilleur prix offert par la concurrence. Vous ajoutez un facteur de pondération qui reflète l’importance annuelle, également pondérée en euros, de cette unité de besoin. Vous faites de votre mieux pour refléter l’état du marché européen.

La raison pour laquelle vous voulez pondérer par rapport à l’importance de l’unité de besoin plutôt que de l’unité de besoin de StuttArt est que si StuttArt est si peu compétitif qu’il ne vend rien de l’unité de besoin, vous pouvez avoir un problème où il n’est pas compétitif. Par conséquent, cette unité est négligée en termes d’alignement, ce qui entraîne des ventes nulles. Ensuite, vous avez un cercle vicieux où il n’est pas compétitif, donc il ne vend rien, et donc l’unité de besoin elle-même est considérée comme négligeable.

Question : Pensez-vous que des conséquences inattendues pourraient survenir si une approche de modélisation différentiable basée sur l’apprentissage automatique devient la norme de l’industrie, avec le risque que les modèles concurrencent d’autres modèles très similaires ?

Cette question est difficile car, par conception, si c’est une conséquence inattendue, alors personne ne s’y attendait, pas même moi. Il est très difficile de prévoir quelles sortes de conséquences pourraient être inattendues.

Cependant, plus sérieusement, cette industrie est depuis une décennie axée sur les techniques algorithmiques. C’est un affinement en termes de précision de l’intention. Vous voulez une méthode numérique qui est plus étroitement alignée sur votre intention. Mais fondamentalement, ce n’est pas comme si nous partions de zéro où actuellement tout est fait manuellement et dans dix ans, cela se fera automatiquement avec des recettes numériques. C’est déjà fait par des recettes numériques. Lorsque vous avez 100 000 prix à maintenir et à actualiser chaque jour, vous devez avoir une forme d’automatisation.

Peut-être que votre automatisation est une gigantesque feuille de calcul Excel où vous effectuez toutes sortes de magie noire, mais c’est toujours un processus algorithmique. Les gens n’ajustent pas manuellement les prix, sauf pour quelques pièces à de rares occasions. Dans la plupart des cas, c’est déjà un processus algorithmique, et nous avons déjà de nombreux effets indésirables. Par exemple, pendant les confinements en Europe, les gens passaient plus de temps à la maison et faisaient leurs achats en ligne. Cela peut sembler contre-intuitif, mais ils utilisaient toujours beaucoup leur voiture et faisaient donc plus d’achats. Cependant, de nombreuses entreprises vendant des pièces de voiture en ligne sont devenues moins actives en termes de promotions car leur organisation est devenue plus compliquée alors que tout le monde travaillait depuis chez soi.

Par conséquent, pendant quelques mois pendant les confinements de 2020, il y a eu beaucoup moins de bruit algorithmique généré par les promotions. Les réponses algorithmiques étaient beaucoup plus simples pour tout le monde. Il y avait des jours où l’on pouvait voir beaucoup plus clairement le type de réponses algorithmiques qui étaient déclenchées sur une base de rafraîchissement quotidien.

Il s’agit d’un modèle assez mature dans une industrie bien établie, car tout se fait maintenant via le commerce électronique. En ce qui concerne les conséquences non intentionnelles ou inattendues, il est plus difficile de les prévoir.

Permettez-moi de vous donner une réflexion finale sur une zone potentielle de surprise. Beaucoup s’attendent à ce que les véhicules électriques simplifient tout car ils ont moins de pièces par rapport aux moteurs à combustion interne. Cependant, du point de vue d’une entreprise comme StuttArt, pour les 10 prochaines années, les véhicules électriques signifieront beaucoup plus de pièces sur le marché.

Jusqu’à ce que les véhicules électriques deviennent dominants, nous aurons toujours tous les anciens véhicules avec des moteurs à combustion. Ces véhicules dureront environ 20 ans. N’oubliez pas que StuttArt, en tant qu’entreprise, traite de véhicules qui ne sont pas exactement neufs. Beaucoup de ces véhicules sont de bonne qualité et seront encore là dans 20 ans. Mais entre-temps, nous aurons de nombreux véhicules électriques supplémentaires qui arriveront sur le marché avec de nombreuses pièces différentes. Cela pourrait faire augmenter le nombre de pièces différentes de manière constante, créant encore plus de défis et de complications.

Je pense que cela nous amène à la fin de la conférence d’aujourd’hui. S’il n’y a pas d’autres questions, je vous donne rendez-vous pour la prochaine conférence qui aura lieu la première semaine de juillet, le mercredi à 15 heures, heure de Paris, comme d’habitude. Merci beaucoup et à bientôt.