00:00 Introduzione
02:49 Domanda, prezzo e profitto
09:35 Prezzi competitivi
15:23 Desideri vs bisogni
20:09 La storia finora
23:36 Indicazioni per oggi
25:17 L’unità di bisogno
31:03 Auto e parti (riepilogo)
33:41 Intelligence competitiva
36:03 Risolvere l’allineamento (1/4)
39:26 Risolvere l’allineamento (2/4)
43:07 Risolvere l’allineamento (3/4)
46:38 Risolvere l’allineamento (4/4)
56:21 Gamma di prodotti
59:43 Parti non vincolate
01:02:44 Controllare il margine
01:06:54 Classifiche di visualizzazione
01:08:29 Ottimizzazione dei pesi
01:12:45 Ottimizzazione delle compatibilità (1/2)
01:19:14 Ottimizzazione delle compatibilità (2/2)
01:30:41 Controspionaggio (1/2)
01:35:25 Controspionaggio (2/2)
01:40:49 Eccessi di magazzino e mancanze di magazzino
01:45:45 Condizioni di spedizione
01:47:58 Conclusioni
01:50:33 6.2 Ottimizzazione dei prezzi per il mercato dell’aftermarket automobilistico - Domande?

Descrizione

L’equilibrio tra offerta e domanda dipende molto dai prezzi. Pertanto, l’ottimizzazione dei prezzi appartiene al campo della supply chain, almeno in larga misura. Presenteremo una serie di tecniche per ottimizzare i prezzi di un’azienda immaginaria del settore dell’aftermarket automobilistico. Attraverso questo esempio, vedremo il pericolo associato a linee di ragionamento astratte che non tengono conto del contesto adeguato. Sapere cosa dovrebbe essere ottimizzato è più importante dei dettagli dell’ottimizzazione stessa.

Trascrizione completa

Slide 1

Benvenuti a questa serie di lezioni sulla supply chain. Sono Joannes Vermorel e oggi presenterò l’ottimizzazione dei prezzi per il mercato dell’aftermarket automobilistico. I prezzi sono un aspetto fondamentale della supply chain. Infatti, non si può valutare l’adeguatezza di un determinato volume di offerta o di un determinato volume di inventario senza considerare la questione dei prezzi, poiché i prezzi influenzano significativamente la domanda. Tuttavia, la maggior parte dei libri sulla supply chain e, di conseguenza, la maggior parte dei software per la supply chain ignorano completamente i prezzi. Anche quando i prezzi vengono discussi o modellati, di solito vengono utilizzati modi ingenui che spesso interpretano erroneamente la situazione.

La determinazione dei prezzi è un processo altamente dipendente dal settore. I prezzi sono prima di tutto un messaggio inviato da un’azienda al mercato in generale - ai clienti, ma anche ai fornitori e ai concorrenti. I dettagli dell’analisi dei prezzi dipendono molto dall’azienda di interesse. Sebbene approcciare i prezzi in termini generali, come fanno i microeconomisti, possa essere intellettualmente interessante, può anche essere fuorviante. Questi approcci potrebbero non essere sufficientemente precisi per supportare la produzione di strategie di pricing di livello professionale.

Questa lezione si concentra sull’ottimizzazione dei prezzi per un’azienda del settore dell’aftermarket automobilistico. Riprenderemo in considerazione Stuttgart, un’azienda fittizia introdotta nel terzo capitolo di questa serie di lezioni. Ci concentreremo esclusivamente sul segmento del commercio al dettaglio online di Stuttgart che distribuisce pezzi di ricambio per auto. Lo scopo di questa lezione è capire cosa comporta la determinazione dei prezzi una volta superate le banalità e come affrontare i prezzi con una mentalità realistica. Anche se considereremo un settore specifico - i pezzi di ricambio per l’aftermarket automobilistico - il modo di pensare, la mentalità e l’atteggiamento adottati in questa lezione per perseguire strategie di pricing superiori sarebbero essenzialmente gli stessi anche quando si considerano settori completamente diversi.

Slide 2

La domanda diminuisce all’aumentare del prezzo. Questo è un modello economico universale. L’esistenza stessa di prodotti che contraddicono questo modello rimane alquanto sfuggente. Questi prodotti sono chiamati beni di Veblen. Tuttavia, in 15 anni presso Lokad, anche quando si tratta di marchi di lusso, non ho mai avuto accesso a prove tangibili che dimostrino l’esistenza di tali prodotti. Questo modello universale è illustrato dalla curva a sinistra dello schermo, generalmente chiamata curva della domanda. Quando un mercato si stabilisce su un prezzo, ad esempio il prezzo di un pezzo di ricambio per auto, questo mercato genera un certo volume di domanda e sperabilmente anche un certo volume di profitto per gli attori che soddisfano questa domanda.

Per quanto riguarda i pezzi di ricambio per auto, questi pezzi non sono sicuramente beni di Veblen. La domanda diminuisce all’aumentare del prezzo. Tuttavia, poiché le persone non hanno molta scelta nell’acquisto di pezzi di ricambio per auto, almeno se vogliono continuare a guidare le loro auto, ci si può aspettare che la domanda sia relativamente inelastica. Un prezzo più alto o più basso per le pastiglie dei freni non influisce realmente sulla decisione di acquistare nuove pastiglie dei freni. Infatti, la maggior parte delle persone preferirebbe acquistare nuove pastiglie dei freni, anche se dovesse pagare il doppio del prezzo abituale, piuttosto che smettere di usare il proprio veicolo del tutto.

Per Stuttgart, identificare il prezzo migliore per ogni pezzo è fondamentale per una miriade di motivi. Esploreremo i due più ovvi. In primo luogo, Stuttgart vuole massimizzare i suoi profitti, il che non è banale poiché non solo la domanda varia con il prezzo, ma anche il costo varia con il volume. Stuttgart deve essere in grado di soddisfare la domanda che genererà in futuro, il che è ancora più complesso, poiché l’inventario deve essere garantito giorni prima, se non settimane prima, a causa dei vincoli di tempo di consegna.

Sulla base di questa esposizione limitata, alcuni libri di testo e persino alcuni software aziendali procedono con la curva illustrata a destra. Questa curva illustra concettualmente il volume di profitto atteso che può essere previsto per ogni prezzo. Dato che la domanda diminuisce all’aumentare del prezzo e il costo per unità diminuisce all’aumentare del volume, questa curva dovrebbe mostrare un punto di profitto ottimale che massimizza il profitto. Una volta identificato questo punto ottimale, l’adeguamento dell’offerta di inventario viene presentato come una questione semplice di orchestrazione. Infatti, il punto ottimale fornisce non solo un prezzo, ma anche un volume di domanda.

Slide 3

Tuttavia, questa prospettiva è profondamente sbagliata. Il problema non ha nulla a che fare con la difficoltà di quantificare l’elasticità. La mia proposta non è che la curva a sinistra sia errata; è fondamentalmente corretta. La mia affermazione è che il passaggio dalla curva a sinistra alla curva a destra è errato. In effetti, questo salto è così incredibilmente sbagliato che funge da sorta di test diagnostico. Qualsiasi fornitore di software o manuale di prezzo che presenta i prezzi in questo modo dimostra un pericoloso grado di ignoranza economica, soprattutto se presenta la valutazione dell’elasticità come la sfida centrale associata a questa prospettiva. Questo non è nemmeno lontanamente il caso. Affidarsi a un supply chain del mondo reale a un tale fornitore o esperto comporta dolore e sofferenza. Se c’è una cosa di cui la tua supply chain non ha bisogno, è un’interpretazione errata di microeconomia fraintesa su larga scala.

In questa serie di lezioni, questo è un altro esempio di razionalismo o scientismo ingenuo, che si è dimostrato più volte una minaccia significativa per le moderne supply chain. Il ragionamento economico astratto è potente perché cattura una vasta gamma di situazioni. Tuttavia, il ragionamento astratto è anche suscettibile a gravi fraintendimenti. Gli errori intellettuali importanti che non sono immediatamente evidenti possono verificarsi quando si pensa in termini molto generali.

Per capire perché il passaggio dalla curva a sinistra alla curva a destra è errato, dobbiamo dare un’occhiata più da vicino a ciò che accade effettivamente in una supply chain del mondo reale. Questa lezione si concentra sui ricambi automobilistici. Esamineremo nuovamente i prezzi dal punto di vista di Stuttgart, una società di supply chain fittizia introdotta nel terzo capitolo di questa serie di lezioni. Non riprenderemo i dettagli di questa azienda. Se non hai ancora guardato la lezione 3.4, ti invito a farlo dopo questa lezione.

Oggi, stiamo esaminando il segmento del commercio al dettaglio online di Stuttgart, una divisione di e-commerce che vende pezzi di auto. Stiamo esplorando i modi più appropriati per Stuttgart per determinare i suoi prezzi e modificarli in qualsiasi momento. Questo compito deve essere svolto per ogni singola parte venduta da Stuttgart.

Slide 4

Stuttgart non è da solo in questo mercato. In ogni paese europeo in cui opera Stuttgart, ci sono una mezza dozzina di concorrenti notevoli. Questo breve elenco di aziende, compresa Stuttgart, rappresenta la maggior parte della quota di mercato online per i ricambi auto. Mentre Stuttgart vende esclusivamente alcuni pezzi, per la maggior parte dei pezzi venduti, c’è almeno un concorrente notevole che vende lo stesso identico pezzo. Questo fatto ha implicazioni significative per l’ottimizzazione dei prezzi di Stuttgart.

Consideriamo cosa succede se, per una determinata parte, Stuttgart decide di mettere il prezzo per questa parte un euro al di sotto del prezzo offerto da un concorrente che vende la stessa parte. Concepibilmente, questo renderà Stuttgart più competitiva e aiuterà a conquistare quote di mercato. Ma non così in fretta. Il concorrente monitora tutti i prezzi stabiliti da Stuttgart. Infatti, l’aftermarket automobilistico è un mercato altamente competitivo. Tutti hanno strumenti di intelligence competitiva. Stuttgart raccoglie tutti i prezzi dei suoi concorrenti notevoli quotidianamente, e i concorrenti fanno lo stesso. Pertanto, se Stuttgart decide di mettere il prezzo per una parte un euro al di sotto del prezzo offerto da un concorrente, è lecito presumere che entro uno o due giorni il concorrente abbasserà il suo prezzo in rappresaglia, annullando lo spostamento di prezzo di Stuttgart.

Anche se Stuttgart è un’azienda fittizia, questo comportamento competitivo descritto qui non è affatto fittizio nel mercato dell’aftermarket automobilistico. I concorrenti allineano aggressivamente i loro prezzi. Se Stuttgart cerca ripetutamente di abbassare i suoi prezzi, ciò porterà a una guerra dei prezzi algoritmica, lasciando entrambe le aziende con poco o nessun margine alla fine della guerra.

Consideriamo cosa succede se, per una determinata parte, Stuttgart decide di mettere il prezzo per questa parte un euro al di sopra del prezzo offerto da un concorrente. Presumendo che tutto il resto rimanga uguale oltre al prezzo, Stuttgart semplicemente non è più competitiva. Pertanto, mentre la base di clienti di Stuttgart potrebbe non lasciare immediatamente per il concorrente (poiché potrebbero non essere nemmeno consapevoli della differenza di prezzo o potrebbero rimanere fedeli a Stuttgart), nel tempo la quota di mercato di Stuttgart è destinata a diminuire.

Ci sono siti web di confronto prezzi disponibili in Europa per i ricambi auto. Sebbene i clienti potrebbero non confrontare ogni singola volta che hanno bisogno di una nuova parte per la loro auto, la maggior parte dei clienti rivedrà le proprie opzioni ogni tanto. Non è una soluzione praticabile per Stuttgart essere costantemente scoperta come il rivenditore più costoso.

Pertanto, abbiamo visto che Stuttgart non può avere un prezzo al di sotto della concorrenza, poiché scatena una guerra dei prezzi. Allo stesso modo, Stuttgart non può avere un prezzo al di sopra della concorrenza, poiché garantisce l’erosione della sua quota di mercato nel tempo. L’unica opzione rimasta per Stuttgart è cercare l’allineamento dei prezzi. Questa non è una dichiarazione teorica: l’allineamento dei prezzi è il principale driver per le vere aziende di e-commerce che vendono ricambi auto in Europa.

La curva di profitto intellettualmente attraente che abbiamo introdotto in precedenza, in cui le aziende potevano presumibilmente scegliere il profitto ottimale, è completamente falsa per la maggior parte. Stuttgart non ha nemmeno una scelta quando si tratta dei suoi prezzi. In larga misura, a meno che non ci sia qualche sorta di ingrediente segreto coinvolto, l’allineamento dei prezzi è l’unica opzione per Stuttgart.

I mercati liberi sono una strana bestia, come Engels scrisse nella sua corrispondenza del 1819: “La volontà di ogni individuo è ostacolata da tutti gli altri, e ciò che emerge è qualcosa che nessuno ha voluto”. Vedremo nel seguito che Stuttgart conserva una certa flessibilità residua nel fissare i suoi prezzi. Tuttavia, la proposizione principale rimane: l’ottimizzazione dei prezzi per Stuttgart è prima di tutto un problema fortemente vincolato, che non ha nulla in comune con una prospettiva di massimizzazione ingenua guidata da una curva di domanda.

L’elasticità della domanda è un concetto che ha senso per un mercato nel suo complesso, ma di solito non tanto per qualcosa di localizzato come un numero di parte.

Slide 45

L’idea che la determinazione dei prezzi possa essere affrontata come un semplice problema di massimizzazione del profitto sfruttando la curva di domanda è falsa, o almeno è falsa nel caso di Stuttgart.

Infatti, si potrebbe sostenere che Stuttgart appartiene a un mercato di bisogni, e la prospettiva delle curve di profitto funzionerebbe ancora se stessimo considerando un mercato di desideri. Nel marketing, è una distinzione classica separare i mercati dei desideri dai mercati dei bisogni. Un mercato dei desideri è tipicamente caratterizzato da offerte in cui i clienti possono rinunciare al loro consumo senza subire conseguenze negative. Nei mercati dei desideri, le offerte di successo tendono ad essere fortemente legate al marchio del venditore, e il marchio stesso è il motore che genera la domanda in primo luogo. Ad esempio, la moda è l’archetipo dei mercati dei desideri. Se vuoi una borsa di Louis Vuitton, allora questa borsa può essere acquistata solo da Louis Vuitton. Anche se ci sono centinaia di venditori che vendono borse funzionalmente equivalenti, non saranno una borsa di Louis Vuitton. Se rinunci ad acquistare una borsa di Louis Vuitton, allora non ti succederà nulla di grave.

Un mercato dei bisogni è tipicamente caratterizzato da offerte in cui i clienti non possono rinunciare al loro consumo senza subire conseguenze negative. Nei mercati dei bisogni, i marchi non sono motori di domanda; sono più simili a motori di scelta. I marchi guidano i clienti nella scelta di chi consumare una volta che si presenta la necessità di consumo. Ad esempio, il cibo e le necessità di base sono l’archetipo dei mercati dei bisogni. Anche se le parti di ricambio per auto non sono strettamente necessarie per sopravvivere, molte persone dipendono da un veicolo per guadagnare denaro e quindi non possono realisticamente rinunciare a mantenere adeguatamente il loro veicolo poiché il costo per loro della mancanza di manutenzione supererebbe di gran lunga il costo della manutenzione stessa.

Anche se l’aftermarket automobilistico è saldamente accampato nel mercato dei bisogni, ci sono sfumature. Ci sono componenti come i coprimozzi che sono più desideri che bisogni. Più in generale, tutti gli accessori sono più desideri che bisogni. Tuttavia, per Stuttgart, i bisogni guidano la grande maggioranza della domanda.

La critica che sto proponendo qui contro la curva di profitto per la determinazione dei prezzi si generalizza a quasi tutte le situazioni nei mercati dei bisogni. Stuttgart non è un caso isolato nel essere fortemente vincolato dal punto di vista dei prezzi dai suoi concorrenti; questa situazione è quasi ubiqua per i mercati dei bisogni. Questo argomento non smentisce la fattibilità della curva di profitto quando si considerano i mercati dei desideri.

Infatti, si potrebbe obiettare che in un mercato dei desideri, se il venditore ha il monopolio sul proprio marchio, allora questo venditore dovrebbe essere libero di scegliere il prezzo che massimizza il suo profitto, riportandoci alla prospettiva della curva di profitto per la determinazione dei prezzi. Ancora una volta, questa contro-argomentazione dimostra i pericoli del ragionamento economico astratto nella supply chain.

In un mercato dei desideri, la prospettiva della curva di profitto è anche sbagliata, sebbene per un insieme completamente diverso di motivi. I dettagli di questa dimostrazione sono al di là dello scopo della presente lezione in quanto richiederebbero un’altra lezione tutta loro. Tuttavia, come esercizio lasciato all’audience, suggerirei semplicemente di dare un’occhiata più da vicino all’elenco delle borse e dei loro prezzi esposti sul sito web di e-commerce di Louis Vuitton. Il motivo per cui la prospettiva della curva di profitto è inappropriata dovrebbe diventare evidente. Se non lo è, beh, molto probabilmente riprenderemo questo caso in una lezione successiva.

Slide 6

Questa serie di lezioni è destinata, tra le altre cose, come materiale di formazione per gli scienziati della supply chain presso Lokad. Tuttavia, spero anche che queste lezioni possano interessare a un pubblico molto più ampio di professionisti della supply chain. Sto cercando di mantenere queste lezioni in qualche modo disaccoppiate, ma userò alcuni concetti tecnici che sono stati introdotti nelle lezioni precedenti. Non dedicherò troppo tempo a reintrodurre questi concetti. Se non hai guardato le lezioni precedenti, non esitare a darci un’occhiata in seguito.

Nel primo capitolo di questa serie, abbiamo esplorato perché le supply chain devono diventare programmatiche. È molto desiderabile mettere in produzione una ricetta numerica a causa della crescente complessità delle supply chain. L’automazione è più urgente che mai e c’è un imperativo finanziario per rendere la pratica della supply chain un’attività capitalista.

Nel secondo capitolo, abbiamo dedicato del tempo alle metodologie. Le supply chain sono sistemi competitivi e questa combinazione sconfigge le metodologie naive. Abbiamo visto che questa combinazione sconfigge anche i modelli che interpretano o caratterizzano in modo errato la microeconomia.

Il terzo capitolo ha esaminato i problemi riscontrati nelle supply chain, tralasciando le soluzioni. Abbiamo presentato Stoccarda come una delle personae della supply chain. Questo capitolo ha cercato di caratterizzare le classi di problemi decisionali che devono essere risolti e ha mostrato che prospettive semplicistiche, come scegliere la giusta quantità di stock, non si adattano alle situazioni del mondo reale. C’è sempre una profondità nella forma delle decisioni da prendere.

Il quarto capitolo ha esaminato gli elementi necessari per comprendere le pratiche moderne della supply chain, in cui gli elementi software sono ubiqui. Questi elementi sono fondamentali per comprendere il contesto più ampio in cui opera la supply chain digitale.

I capitoli cinque e sei sono dedicati rispettivamente alla modellazione predittiva e alla presa di decisioni. Questi capitoli raccolgono tecniche che funzionano bene nelle mani degli scienziati della supply chain oggi. Il sesto capitolo si concentra sulla determinazione dei prezzi, uno dei tipi di decisione che devono essere prese tra molti altri.

Infine, il settimo capitolo è dedicato all’esecuzione di un’iniziativa quantitativa della supply chain e copre la prospettiva organizzativa.

Slide 7

La lezione di oggi sarà divisa in due segmenti principali. Prima, discuteremo come affrontare l’allineamento competitivo dei prezzi per Stoccarda. L’allineamento dei prezzi con quelli dei concorrenti deve essere affrontato dal punto di vista del cliente a causa della struttura unica del mercato dei ricambi auto. Sebbene l’allineamento competitivo sia estremamente complesso, beneficia di una soluzione relativamente semplice che affronteremo in dettaglio.

In secondo luogo, sebbene l’allineamento competitivo sia la forza dominante, non è l’unica. Stoccarda potrebbe aver bisogno o desiderare di deviare selettivamente da questo allineamento. Tuttavia, i vantaggi di queste deviazioni devono superare i rischi. La qualità dell’allineamento dipende dalla qualità degli input utilizzati per costruire l’allineamento, quindi introdurremo una tecnica di apprendimento auto-supervisionato per perfezionare il grafo delle compatibilità meccaniche.

Infine, affronteremo una breve serie di preoccupazioni correlate ai prezzi. Queste preoccupazioni potrebbero non riguardare strettamente i prezzi, ma nella pratica è meglio affrontarle insieme ai prezzi.

Slide 8

Stoccarda deve mettere un prezzo su ogni singola parte che vende, ma ciò non implica che l’analisi dei prezzi debba essere condotta principalmente a livello di numero di parte. Il prezzo è, prima di tutto, un modo per comunicare con i clienti.

Dedichiamo un momento a considerare come i clienti percepiscono i prezzi offerti da Stoccarda. Come vedremo, la distinzione apparentemente sottile che esiste tra l’etichetta del prezzo e la percezione dell’etichetta del prezzo non è affatto sottile.

Quando un cliente inizia a cercare un nuovo ricambio per l’auto, di solito una parte consumabile come le pastiglie dei freni, è improbabile che conosca il numero di parte specifico di cui ha bisogno. Potrebbero esserci alcuni appassionati di automobili che hanno una conoscenza approfondita dell’argomento, al punto da avere un numero di parte specifico in mente, ma sono una piccola minoranza. La maggior parte delle persone sa solo che deve cambiare le pastiglie dei freni, ma non conosce il numero di parte esatto.

Questa situazione porta a un’altra seria preoccupazione: la compatibilità meccanica. Sul mercato sono disponibili migliaia di riferimenti per le pastiglie dei freni, tuttavia, per ogni veicolo, di solito ci sono solo alcune dozzine di riferimenti compatibili. Pertanto, la compatibilità meccanica non può essere lasciata al caso.

Stoccarda, come tutti i suoi concorrenti, è profondamente consapevole di questo problema. Visitando il sito web di e-commerce di Stoccarda, il visitatore è invitato a specificare il modello dell’auto e quindi il sito web filtra immediatamente le parti che non sono meccanicamente compatibili con il veicolo specificato. I siti web dei concorrenti seguono lo stesso schema di progettazione: prima si sceglie il veicolo, poi si sceglie la parte.

Quando un cliente cerca di confrontare due fornitori, di solito confronta le offerte, non i numeri di parte. Un cliente visiterebbe il sito web di Stoccarda, identificherebbe il costo delle pastiglie dei freni compatibili, quindi ripeterebbe il processo sul sito web di un concorrente. Il cliente potrebbe identificare il numero di parte delle pastiglie dei freni sul sito web di Stoccarda, quindi cercare lo stesso identico numero di parte sul sito del concorrente, ma nella pratica, le persone raramente fanno questo.

Stoccarda e i suoi concorrenti creano attentamente le loro assortimenti in modo da poter servire quasi tutti i veicoli con una frazione dei numeri di parte disponibili per i ricambi auto. Di conseguenza, di solito hanno tra 100.000 e 200.000 numeri di parte elencati sui loro siti web e solo 10.000-20.000 numeri di parte effettivamente disponibili in magazzino.

Per quanto riguarda la nostra preoccupazione iniziale sui prezzi, è chiaro che l’analisi dei prezzi dovrebbe essere condotta principalmente non attraverso il numero di parte, ma attraverso l’unità di necessità. Nel contesto del mercato dei ricambi auto, un’unità di necessità è caratterizzata dal tipo di parte che ha bisogno di essere sostituita e dal modello dell’auto che richiede la sostituzione.

Tuttavia, questa prospettiva dell’unità di necessità presenta una complicazione tecnica immediata. Stoccarda non può fare affidamento su corrispondenze di prezzo uno a uno tra numeri di parte per allineare i suoi prezzi con quelli dei suoi concorrenti. Pertanto, l’allineamento dei prezzi non è così ovvio come potrebbe sembrare a prima vista, soprattutto quando si riconoscono i vincoli sotto cui Stoccarda opera rispetto ai suoi concorrenti.

Slide 9

Come abbiamo già visto nella lezione 3.4, il problema della compatibilità meccanica tra auto e parti è affrontato in Europa, così come in altre importanti regioni del mondo, attraverso l’esistenza di aziende specializzate. Queste aziende vendono set di dati sulla compatibilità meccanica, composti da tre elenchi: un elenco di modelli di auto, un elenco di parti auto e un elenco di compatibilità tra auto e parti. Questa struttura di set di dati è tecnicamente nota come grafo bipartito.

In Europa, questi set di dati di solito includono più di 100.000 veicoli, oltre un milione di parti e più di 100 milioni di connessioni tra auto e parti. Il mantenimento di questi set di dati richiede molto lavoro, il che spiega perché esistono aziende specializzate che vendono questi set di dati. Stoccarda, come i suoi concorrenti, acquista un abbonamento da una di queste aziende specializzate per accedere a versioni aggiornate di questi set di dati. Gli abbonamenti sono necessari perché, anche se l’industria automobilistica è matura, vengono continuamente introdotte nuove auto e parti. Per rimanere strettamente allineati con il panorama automobilistico, questi set di dati devono essere aggiornati almeno trimestralmente.

Stoccarda e i suoi concorrenti utilizzano questo set di dati per supportare il meccanismo di selezione del veicolo sui loro siti web di e-commerce. Una volta che un cliente ha selezionato un veicolo, vengono visualizzate solo le parti che sono provabilmente compatibili con il veicolo scelto, secondo il set di dati di compatibilità. Questo set di dati di compatibilità è anche fondamentale per la nostra analisi dei prezzi. Attraverso questo set di dati, Stoccarda può valutare il punto di prezzo offerto per ogni unità di necessità.

Slide 10

L’ultimo ingrediente significativo mancante per costruire la strategia di allineamento competitivo di Stoccarda è l’intelligence competitiva. In Europa, come in tutte le principali regioni economiche, ci sono specialisti di intelligence competitiva, aziende che forniscono servizi di estrazione dei prezzi. Queste aziende estraggono i prezzi di Stoccarda e dei suoi concorrenti quotidianamente. Sebbene un’azienda come Stoccarda possa cercare di mitigare l’estrazione automatizzata dei suoi prezzi, questo sforzo è in gran parte inutile per diversi motivi:

Innanzitutto, Stoccarda, come i suoi concorrenti, desidera essere amichevole nei confronti dei robot. I bot più cruciali sono i motori di ricerca, con Google, a partire dal 2023, che detiene poco più del 90% del mercato. Non è l’unico motore di ricerca, tuttavia, e sebbene potrebbe essere possibile individuare Googlebot, il principale crawler di Google, è difficile fare lo stesso per tutti gli altri crawler che costituiscono ancora circa il 10% del traffico.

In secondo luogo, gli specialisti di intelligence competitiva sono diventati esperti nell’ultimo decennio nel mascherarsi come traffico internet residenziale normale. Questi servizi affermano di avere accesso a milioni di indirizzi IP residenziali, che ottengono attraverso la collaborazione con app, sfruttando le connessioni internet degli utenti regolari e collaborando con gli ISP (Internet Service Provider) che possono fornire loro indirizzi IP.

Pertanto, assumiamo che Stoccarda beneficie di un elenco di prezzi di alta qualità dei suoi concorrenti più noti. Questi prezzi vengono estratti a livello di numero di parte e aggiornati quotidianamente. Questa supposizione non è speculativa; è lo stato attuale del mercato europeo.

Slide 11

Abbiamo ora raccolto tutti gli elementi di cui Stoccarda ha bisogno per calcolare prezzi allineati - prezzi che corrispondono a quelli dei suoi concorrenti considerati dal punto di vista di un’unità di necessità.

Sullo schermo, abbiamo il pseudocodice per il problema di soddisfacimento dei vincoli che vogliamo risolvere. Semplicemente elenchiamo tutte le unità di necessità, cioè tutte le combinazioni di tipi di parti e modelli di auto. Per ogni unità di necessità, affermiamo che il prezzo più competitivo offerto da Stoccarda dovrebbe essere uguale al prezzo più competitivo offerto da un concorrente.

Valutiamo rapidamente il numero di variabili e vincoli. Stoccarda può impostare un prezzo per ogni numero di parte che offre, il che significa che abbiamo circa 100.000 variabili. Il numero di vincoli è un po’ più complesso. Tecnicamente, abbiamo circa 1.000 tipi di parti e circa 100.000 modelli di auto, suggerendo circa 100 milioni di vincoli. Tuttavia, non tutti i tipi di parti si trovano in tutti i modelli di auto. Le misurazioni del mondo reale indicano che il numero di vincoli è più vicino a 10 milioni.

Nonostante questo numero inferiore di vincoli, abbiamo comunque 100 volte più vincoli rispetto alle variabili. Ci troviamo di fronte a un sistema ampiamente sovra-vincolato. Pertanto, sappiamo che è improbabile che troveremo una soluzione che soddisfi tutti i vincoli. Il miglior risultato è una soluzione di compromesso che soddisfa la maggior parte di essi.

Inoltre, i concorrenti non sono del tutto coerenti con i loro prezzi. Nonostante i nostri migliori sforzi, Stoccarda potrebbe finire in una guerra dei prezzi su un numero di parte a causa del suo prezzo troppo basso. Allo stesso tempo, potrebbe perdere quote di mercato sullo stesso numero di parte a causa del suo prezzo troppo alto rispetto a un altro concorrente. Questo scenario non è teorico; i dati empirici suggeriscono che queste situazioni si verificano regolarmente, sebbene per una piccola percentuale di numeri di parte.

Poiché abbiamo optato per una risoluzione approssimativa di questo sistema di vincoli, dovremmo chiarire il peso da attribuire a ciascun vincolo. Non tutti i modelli di auto sono uguali: alcuni sono associati a veicoli più vecchi che sono quasi completamente scomparsi dalle strade. Proponiamo di ponderare questi vincoli in base al rispettivo volume di domanda, espresso in euro.

Slide 12

Ora che abbiamo stabilito il quadro formale per la nostra logica dei prezzi, procediamo con il codice software effettivo. Come vedremo, la risoluzione di questo sistema è più semplice del previsto.

Sullo schermo, uno schema relazionale minimo illustra le sei tabelle coinvolte in questo sistema. I rettangoli con gli angoli arrotondati rappresentano le sei tabelle di interesse e le frecce rappresentano le relazioni uno-a-molti tra le tabelle.

Facciamo una breve revisione di queste tabelle:

  1. Tipi di parti: Come suggerisce il nome, questa tabella elenca i tipi di parti, ad esempio “pastiglie dei freni anteriori”. Questi tipi vengono utilizzati per identificare quale parte può essere utilizzata come sostituzione di un’altra. La parte di ricambio deve non solo essere compatibile con il veicolo, ma deve anche avere lo stesso tipo. Ci sono circa mille tipi di parti.

  2. Modelli di auto: Questa tabella elenca i modelli di auto, ad esempio “Peugeot 3008 Phase 2 diesel”. Ogni veicolo ha un modello e tutti i veicoli di un determinato modello si prevede abbiano lo stesso insieme di compatibilità meccaniche. Ci sono circa centomila modelli di auto.

  3. Numeri di parte (PN): Questa tabella elenca i numeri di parte che si trovano nel mercato dell’aftermarket automobilistico. Ogni numero di parte ha un solo tipo di parte. Ci sono circa un milione di numeri di parte in questa tabella.

  4. Compatibilità (Compat): Questa tabella rappresenta le compatibilità meccaniche e raccoglie tutte le combinazioni valide di numeri di parte e modelli di auto. Con circa 100 milioni di righe di compatibilità, questa tabella è di gran lunga la più grande.

  5. Concorrenza: Questa tabella contiene tutte le informazioni competitive per il giorno. Per ogni numero di parte, ci sono una mezza dozzina di concorrenti notevoli che hanno il numero di parte in esposizione con un prezzo. Ciò si traduce in circa 10 milioni di prezzi competitivi.

  6. Ordini: Questa tabella contiene gli ordini dei clienti passati da Stoccarda nel corso di circa un anno. Ogni riga dell’ordine include un numero di parte e un modello di auto. Tecnicamente, è possibile acquistare un pezzo di ricambio per auto senza specificare il modello di auto, anche se ciò è raro. Le righe dell’ordine senza un modello di auto possono essere filtrate. In base alla dimensione di Stoccarda, dovrebbero esserci circa 10 milioni di righe di ordine.

Slide 13

Ora esamineremo il codice che carica i dati relazionali. Sullo schermo è visualizzato uno script che carica sei tabelle, scritto in Envision - un linguaggio di programmazione specifico del dominio progettato da Lokad appositamente per l’ottimizzazione predittiva delle supply chain. Sebbene Envision sia stato creato per aumentare l’efficienza e ridurre gli errori nei contesti delle supply chain, lo script può essere riscritto in altri linguaggi come Python, sebbene a costo di una maggiore verbosità e rischio di errori.

Nella prima parte dello script, vengono caricate quattro file di testo piatti. Dalla riga 1 alla riga 5, il file ‘path.csv’ fornisce sia i numeri di parte che i tipi di parte, inclusi i prezzi attuali visualizzati a Stoccarda. Il campo ’name is active’ indica se un determinato numero di parte è servito da Stoccarda. In questa prima tabella, la variabile ‘PN’ si riferisce alla dimensione primaria della tabella, mentre ‘PN type’ è una dimensione secondaria introdotta dalla parola chiave ’expect’.

Dalla riga 7 alla riga 9, il file ‘compat.tsv’ fornisce l’elenco di compatibilità tra parti e veicoli e i modelli di auto. Questa è la tabella più grande dello script. Dalla riga 11 alla riga 14 viene caricato il file ‘competition.tsv’, che fornisce uno snapshot dell’intelligence competitiva per il giorno, ovvero i prezzi per numero di parte e per concorrente. Il file ‘orders.tsv’, caricato dalle righe 16 alla 19, ci fornisce l’elenco dei numeri di parte acquistati e i modelli di auto associati, assumendo che tutte le righe associate a modelli di auto non specificati siano state filtrate.

Infine, alle righe 21 e 22, la tabella ‘part types’ viene impostata come upstream delle due tabelle ‘compat’ e ‘orders’. Ciò significa che per ogni riga in ‘compat’ o ‘orders’, c’è una e una sola parte che corrisponde. In altre parole, ‘PN type’ è stato aggiunto come dimensione secondaria alle tabelle ‘compat’ e ‘orders’. Questa prima parte dello script Envision è semplice; stiamo semplicemente caricando i dati da file di testo piatti e ripristinando la struttura dei dati relazionali nel processo.

Slide 14

La seconda parte dello script, visibile sullo schermo, è dove avviene la logica effettiva di allineamento. Questa sezione è una continuazione diretta della prima parte e, come puoi vedere, sono solo 12 righe di codice. Stiamo ancora una volta utilizzando la programmazione differenziabile. Per il pubblico che potrebbe non essere familiare con la programmazione differenziabile, si tratta di una fusione di differenziazione automatica e discesa del gradiente stocastica. È un paradigma di programmazione che si estende anche all’apprendimento automatico e all’ottimizzazione. Nel contesto della supply chain, la programmazione differenziabile si rivela incredibilmente utile in varie situazioni. In questa serie di lezioni, abbiamo dimostrato come la programmazione differenziabile possa essere utilizzata per apprendere modelli, generare previsioni di domanda probabilistiche e ottenere previsioni di lead time balistiche. Se non sei familiare con la programmazione differenziabile, ti consiglio di rivedere le lezioni precedenti di questa serie.

Nella lezione di oggi, vedremo come la programmazione differenziabile sia adatta per affrontare problemi di ottimizzazione su larga scala che coinvolgono centinaia di migliaia di variabili e milioni di vincoli. Sorprendentemente, questi problemi possono essere risolti in pochi minuti su una singola CPU con pochi gigabyte di RAM. Inoltre, possiamo utilizzare i prezzi precedenti come punto di partenza, aggiornando i nostri prezzi anziché ricalcolarli da zero.

Si prega di notare un piccolo avvertimento. La parola chiave ‘join’ non è ancora supportata da Envision, ma è nel nostro piano tecnico per il futuro. Esistono soluzioni alternative, ma per chiarezza, utilizzerò la sintassi futura di Envision in questa lezione.

Alla riga 24, calcoliamo il prezzo più basso osservato sul mercato per ogni numero di parte. Se un numero di parte viene venduto esclusivamente da Stoccarda e non ha concorrenti, utilizziamo il prezzo di Stoccarda come predefinito.

Dalla riga 26 alla riga 30, per ogni parte elencata nella cronologia degli ordini dei clienti di Stoccarda, viene calcolata l’offerta più competitiva attuale.

Alla riga 27, iteriamo su ogni riga dell’ordine della tabella degli ordini con ’each order’.

Alla riga 28, utilizziamo ‘join pns’ per portare nella tabella completa dei numeri di parte per ogni riga degli ordini.

Alla riga 29, effettuiamo un join con ‘others’, ma questo join è limitato da due dimensioni secondarie - modello e tipo di parte. Ciò significa che per ogni riga negli ordini, selezioniamo i numeri di parte che corrispondono a una combinazione di modello di parte e tipo di parte, riflettendo le parti compatibili con l’unità di necessità corrispondente all’ordine del cliente.

Dalla riga 32 alla riga 37, risolviamo l’allineamento utilizzando la programmazione differenziabile, indicata dalla parola chiave ‘Auto diff’. Il blocco ‘Auto diff’ viene dichiarato alla riga 32, sfruttando la tabella degli ‘orders’ come tabella di osservazione. Ciò significa che stiamo implicitamente pesando i vincoli in base al volume di vendite di Stoccarda. Le righe 33 e 44 servono allo stesso scopo delle righe 28 e 29; iterano sulla tabella degli ‘orders’, fornendo pieno accesso alla tabella dei numeri di parte (‘PN’) e a una porzione delle voci compatibili.

Alla riga 35, dichiariamo ‘pns.price’ come i parametri da ottimizzare tramite la discesa del gradiente stocastico. Non c’è bisogno di inizializzare questi parametri, poiché partiamo dai prezzi utilizzati finora da Stoccarda, aggiornando efficacemente l’allineamento.

Alla riga 36, calcoliamo ‘my price’, che è l’offerta più competitiva di Stoccarda per l’unità di necessità associata alla riga dell’ordine. Questo calcolo è un meccanismo molto simile al calcolo del prezzo osservato più basso, come fatto alla riga 24, affidandosi nuovamente all’elenco delle compatibilità meccaniche. Le compatibilità sono però limitate ai numeri di parte serviti da Stoccarda. Storicamente, i clienti possono o meno aver selezionato la parte più vantaggiosa dal punto di vista economico per il loro veicolo. Tuttavia, lo scopo di utilizzare gli ordini dei clienti in questo contesto è quello di assegnare pesi alle unità di necessità.

Alla riga 37, utilizziamo la differenza assoluta tra il miglior prezzo offerto da Stoccarda e il miglior prezzo offerto da un concorrente per guidare l’allineamento. All’interno di questo blocco alternativo, i gradienti vengono applicati retroattivamente ai parametri. La differenza che troviamo alla fine forma la funzione di perdita. Da questa funzione di perdita, i gradienti fluiranno verso il solo vettore di parametri che abbiamo qui: ‘pns.price’. Regolando incrementalmente i parametri (i prezzi) ad ogni iterazione (un’iterazione qui è una riga dell’ordine), lo script converge verso un’approssimazione adeguata dell’allineamento dei prezzi desiderato.

In termini di complessità algoritmica, la riga 36 domina. Tuttavia, poiché il numero di compatibilità per ogni modello di auto e tipo di parte è limitato (di solito non più di qualche dozzina), ogni iterazione di ‘Auto diff’ viene eseguita in ciò che equivale a un tempo costante. Questo tempo costante non è molto piccolo, come 10 cicli CPU, ma non sarà nemmeno un milione di cicli CPU. Approssimativamente, mille cicli CPU suonano ragionevoli per 20 parti compatibili.

Se assumiamo una singola CPU che funziona a due gigahertz e che esegue 100 epoche (una epoca è una discesa completa su tutta la tabella di osservazione), ci aspetteremmo un tempo di esecuzione target di circa 10 minuti. Risolvere un problema con 100.000 variabili e 10 milioni di vincoli in 10 minuti su una singola CPU è piuttosto impressionante. Infatti, Lokad raggiunge prestazioni approssimativamente in linea con questa aspettativa. Tuttavia, nella pratica, per tali problemi, il nostro collo di bottiglia è più spesso il throughput di I/O piuttosto che la CPU.

Ancora una volta, questo esempio mostra il potere di utilizzare paradigmi di programmazione adatti per le applicazioni della supply chain. Abbiamo iniziato con un problema non banale, poiché non era immediatamente evidente come sfruttare questo dataset di compatibilità meccanica da un punto di vista dei prezzi. Nonostante ciò, l’implementazione effettiva è semplice.

Sebbene questo script non copra tutti gli aspetti che sarebbero presenti in un ambiente reale, la logica principale richiede solo sei righe di codice, lasciando ampio spazio per ospitare complessità aggiuntive che scenari reali potrebbero introdurre.

Slide 15

L’algoritmo di allineamento, come presentato in precedenza, privilegia la semplicità e la chiarezza rispetto all’esaurienza. In un ambiente reale, ci si aspetterebbe l’introduzione di fattori aggiuntivi. Presto esaminerò questi fattori, ma iniziamo riconoscendo che questi fattori possono essere affrontati estendendo questo algoritmo di allineamento.

Vendere a perdita non è solo imprudente, ma anche illegale in molti paesi, come la Francia, anche se ci sono eccezioni in circostanze speciali. Per evitare di vendere a perdita, è possibile aggiungere un vincolo all’algoritmo di allineamento che impone che il prezzo di vendita superi il prezzo di acquisto. Tuttavia, è anche utile eseguire l’algoritmo senza questo vincolo “senza perdite” per identificare eventuali problemi di approvvigionamento. Infatti, se un concorrente può permettersi di vendere una parte al di sotto del prezzo di acquisto di Stuttgart, Stuttgart deve affrontare il problema sottostante. Molto probabilmente, si tratta di un problema di approvvigionamento o di acquisto.

Semplicemente raggruppare tutti i numeri di parte è ingenuo. I clienti non hanno la stessa volontà di pagare per tutti i produttori di apparecchiature originali (OEM). Ad esempio, i clienti sono più propensi a valorizzare un marchio ben noto come Bosch rispetto a un OEM cinese meno conosciuto in Europa. Per affrontare questa preoccupazione, Stuttgart, come i suoi concorrenti, categorizza gli OEM in un breve elenco di fasce di prodotti, dalla più costosa alla meno costosa. Possiamo avere, ad esempio, la gamma motorsport, la gamma per la casa, la gamma del marchio del distributore e la gamma economica.

L’allineamento viene quindi costruito per garantire che ogni numero di parte sia allineato all’interno della propria gamma di prodotti. Inoltre, l’algoritmo di allineamento dovrebbe imporre che i prezzi siano strettamente decrescenti passando dalla gamma motorsport alla gamma economica, poiché qualsiasi inversione confonderebbe i clienti. In teoria, se i concorrenti fissassero accuratamente i propri prezzi, tali inversioni non si verificherebbero. Tuttavia, nella pratica, i clienti a volte fissano prezzi errati per le proprie parti e occasionalmente hanno motivi per impostare le loro parti a un prezzo diverso.

Ci sono solo alcune centinaia di OEM, la classificazione di questi OEM nelle rispettive fasce di prodotti può essere fatta manualmente e eventualmente con l’aiuto di sondaggi ai clienti se ci sono ambiguità che non possono essere risolte direttamente dagli esperti di mercato di Stuttgart.

Slide 16

Nonostante l’adozione delle fasce di prodotti, molti prezzi dei numeri di parte non finiscono per essere attivamente guidati dalla logica di allineamento. Infatti, solo i numeri di parte che contribuiscono attivamente a essere il miglior prezzo tra un’unità di necessità vengono effettivamente regolati dalla discesa del gradiente per creare l’allineamento approssimativo che stiamo cercando all’interno della stessa gamma di prodotti.

Tra due numeri di parte che hanno compatibilità meccaniche identiche, solo uno di essi avrà il suo prezzo regolato dal risolutore di allineamento. L’altro numero di parte otterrà sempre gradienti nulli e quindi il suo prezzo originale rimarrà intatto. Quindi, in sintesi, sebbene il sistema abbia un intero insieme di vincoli, molte variabili non sono vincolate affatto. A seconda della granularità delle fasce di prodotti e dell’estensione dell’intelligence competitiva, questi numeri di parte non vincolati possono rappresentare una frazione considerevole del catalogo, eventualmente la metà dei numeri di parte. Anche se la frazione, una volta espressa in volume di vendite, è molto più bassa.

Per questi numeri di parte, Stuttgart richiede una strategia di prezzo alternativa. Sebbene non abbia un processo algoritmico rigoroso da suggerire per queste parti non vincolate, proporrei due principi guida.

Innanzitutto, dovrebbe esserci una differenza di prezzo non banale, ad esempio del 10%, tra la parte più competitiva all’interno della gamma di prodotti e la parte successiva. Con un po’ di fortuna, alcuni concorrenti potrebbero non essere altrettanto abili di Stuttgart nel ricostruire le unità di necessità. Pertanto, quei concorrenti potrebbero non notare il prezzo che effettivamente guida l’allineamento, portandoli a rivedere al rialzo il loro prezzo, il che è auspicabile per Stuttgart.

In secondo luogo, potrebbero esserci alcune parti con un prezzo molto più alto, ad esempio il 30% in più, purché tali parti non si sovrappongano ad altre fasce di prodotti. Queste parti fungono da esche per le loro controparti a prezzo migliore, una strategia tecnicamente nota come decoy pricing. La decoy è deliberatamente progettata per essere una opzione meno attraente rispetto all’opzione target, rendendo l’opzione target più preziosa e spingendo il cliente a sceglierla più spesso. Questi due principi sono sufficienti per diffondere delicatamente i prezzi non vincolati oltre le loro soglie competitive.

Slide 17

L’allineamento competitivo più una dose di decoy pricing sono sufficienti per assegnare un prezzo per ogni numero di parte esposto a Stuttgart. Tuttavia, il tasso di margine lordo risultante è probabilmente troppo basso per Stuttgart. Infatti, allineare Stuttgart con tutti i suoi concorrenti notevoli mette una pressione enorme sul suo margine.

Da un lato, allineare i prezzi è una necessità; altrimenti, Stuttgart verrà gradualmente spinta fuori dal mercato nel tempo. Ma d’altra parte, Stuttgart non può fallire nel processo di preservare la sua quota di mercato. È fondamentale ricordare che il margine lordo futuro associato a una determinata strategia di prezzo può solo essere stimato o previsto. Non esiste un modo preciso per derivare il tasso di crescita futuro da un insieme di prezzi, poiché sia i clienti che i concorrenti si adattano.

Supponendo di avere una stima ragionevolmente accurata del tasso di margine lordo che Stuttgart dovrebbe aspettarsi la prossima settimana, è importante sottolineare che la parte “accuratezza” di questa supposizione non è così irragionevole come potrebbe sembrare. Stuttgart, come i suoi concorrenti, opera sotto vincoli severi. A meno che la strategia di prezzo di Stuttgart non venga modificata in modo fondamentale, il margine lordo aziendale non cambierà molto da una settimana all’altra. Possiamo persino considerare il tasso di margine lordo osservato della settimana scorsa come un proxy ragionevole di ciò che Stuttgart dovrebbe aspettarsi la prossima settimana, assumendo naturalmente che la strategia di prezzo rimanga invariata.

Supponiamo che il tasso di margine lordo di Stuttgart sia previsto essere del 13%, ma Stuttgart ha bisogno di un tasso di margine lordo del 15% per sostenersi. Cosa dovrebbe fare Stuttgart di fronte a una situazione del genere? Una risposta consiste nel selezionare casualmente una selezione di ‘unità di necessità’ e aumentare i loro prezzi di circa il 20%. I tipi di parti preferiti dai clienti occasionali, come i tergicristalli, dovrebbero essere esclusi da questa selezione. Acquisire quei clienti occasionali è costoso e difficile, e Stuttgart non dovrebbe rischiare questi acquisti occasionali. Allo stesso modo, per i tipi di parti molto costose, come gli iniettori, è probabile che i clienti facciano molto più shopping in giro. Pertanto, Stuttgart probabilmente non dovrebbe rischiare di sembrare non competitiva su quegli acquisti più grandi.

Tuttavia, escludendo queste due situazioni, sostengo che selezionare casualmente ‘unità di necessità’ e renderle non competitive attraverso prezzi più alti sia una scelta ragionevole. Infatti, Stuttgart ha bisogno di aumentare alcuni dei suoi prezzi, una conseguenza inevitabile della ricerca di un tasso di margine di crescita più elevato. Se Stuttgart adotta un modello riconoscibile nel farlo, le recensioni online sono probabilmente destinate a evidenziare quei modelli. Ad esempio, se Stuttgart decide di rinunciare alla competitività su parti di Bosch o decide di rinunciare alla competitività su parti compatibili con veicoli Peugeot, c’è un vero pericolo che Stuttgart diventi conosciuta come il concessionario che non offre un buon affare per i veicoli Bosch o Peugeot. La casualità rende Stuttgart in qualche modo incomprensibile, che è esattamente l’effetto desiderato.

Slide 18

I ranghi di visualizzazione sono un altro fattore cruciale nel catalogo online di Stuttgart. Più specificamente, per ogni ‘unità di necessità’, Stuttgart deve classificare tutte le parti idonee. Determinare il modo migliore per classificare le parti è un problema correlato ai prezzi che richiede una lezione a sé stante. I ranghi di visualizzazione, dal punto di vista presentato in questa lezione, dovrebbero essere calcolati dopo la risoluzione del problema di allineamento. Tuttavia, sarebbe anche concepibile ottimizzare contemporaneamente sia le etichette dei prezzi che i ranghi di visualizzazione. Questo problema presenterebbe circa 10 milioni di variabili invece delle 100.000 variabili affrontate finora. Tuttavia, questo non modifica fondamentalmente la scala del problema di ottimizzazione, poiché abbiamo comunque 10 milioni di vincoli da gestire. Oggi non affronterò quale criterio potrebbe essere utilizzato per guidare questa ottimizzazione dei ranghi di visualizzazione, né come sfruttare la discesa del gradiente per l’ottimizzazione discreta. Quest’ultimo problema è molto interessante, ma verrà affrontato in una lezione successiva.

Slide 19

L’importanza relativa dell’‘unità di necessità’ è quasi interamente definita dalle flotte di veicoli esistenti. Stuttgart non può aspettarsi di vendere 1 milione di pastiglie dei freni per un modello di auto che ha solo 1.000 veicoli in Europa. Si potrebbe addirittura sostenere che i veri consumatori delle parti sono i veicoli stessi piuttosto che i loro proprietari. Mentre i veicoli non pagano per le loro parti (lo fanno i proprietari), questa analogia aiuta a sottolineare l’importanza della flotta di veicoli.

Tuttavia, è ragionevole aspettarsi distorsioni significative quando si tratta di persone che acquistano le loro parti online. Dopotutto, l’acquisto di parti è principalmente un modo per risparmiare denaro rispetto all’acquisto indiretto da un’officina di riparazione. Pertanto, l’età media del veicolo osservata da Stuttgart dovrebbe essere più vecchia di quanto suggeriscano le statistiche generali del mercato automobilistico. Allo stesso modo, le persone che guidano auto costose sono meno propense a cercare di risparmiare denaro facendo le proprie riparazioni. Pertanto, ci si aspetta che la dimensione media del veicolo e la classe osservate da Stuttgart siano inferiori a quanto suggeriscano le statistiche di mercato generali.

Queste non sono speculazioni oziose. Queste distorsioni sono effettivamente osservate per tutti i principali rivenditori online di parti auto in Europa. Tuttavia, l’algoritmo di allineamento, come presentato in precedenza, sfrutta la cronologia delle vendite di Stuttgart come proxy della domanda. È concepibile che questi pregiudizi possano compromettere l’esito dell’algoritmo di allineamento dei prezzi. Se questi pregiudizi influenzano negativamente l’esito per Stuttgart è fondamentalmente un problema empirico, poiché la portata del problema, se esiste, dipende molto dai dati. L’esperienza di Lokad indica che l’algoritmo di allineamento e le sue varianti sono piuttosto robusti contro questa classe di pregiudizi, anche quando si sottostima il peso di un’unità di necessità di un fattore di due o tre. Il contributo principale di questi pesi, in termini di prezzo, sembra aiutare l’algoritmo di allineamento a risolvere i conflitti quando lo stesso numero di parte appartiene a due ‘unità di necessità’ che non possono essere affrontate congiuntamente. Nella maggior parte di queste situazioni, una ‘unità di necessità’ supera di gran lunga l’altra in termini di volume. Pertanto, anche una notevole sottostima dei rispettivi volumi ha poche conseguenze sui prezzi.

Identificare i pregiudizi più significativi tra ciò che la domanda avrebbe dovuto essere per un’ “unità di necessità” e ciò che Stuttgart osserva come vendite effettive può essere molto utile. Un volume di vendite sorprendentemente basso per una determinata “unità di necessità” tende ad indicare problemi banali con la piattaforma di e-commerce. Alcune parti potrebbero essere etichettate erroneamente, alcune potrebbero avere immagini errate o di bassa qualità, ecc. Nella pratica, questi pregiudizi possono essere identificati confrontando i rapporti di vendita per un determinato modello di auto dei diversi tipi di parti. Ad esempio, se Stuttgart non vende pastiglie dei freni per un determinato modello di auto, mentre i volumi di vendita per altri tipi di parti sono coerenti con quanto di solito osservato, è improbabile che questo modello di auto abbia un consumo eccezionalmente basso di pastiglie dei freni. La causa principale si trova quasi certamente altrove.

Slide 20

Un elenco superiore di compatibilità meccaniche è un vantaggio competitivo. Conoscere compatibilità sconosciute ai tuoi concorrenti ti consente potenzialmente di offrire prezzi più bassi senza scatenare una guerra dei prezzi, guadagnando così un vantaggio nel aumentare la tua quota di mercato. Al contrario, identificare compatibilità errate è fondamentale per evitare costosi resi da parte dei clienti.

Infatti, il costo di ordinare una parte non compatibile è modesto per un’officina di riparazione, poiché è probabile che esista un processo consolidato per restituire la parte non utilizzata al centro di distribuzione. Tuttavia, il processo è molto più tedioso per i clienti regolari che potrebbero non riuscire nemmeno a ripacchettare correttamente la parte per il suo viaggio di ritorno. Pertanto, ogni azienda di e-commerce ha un incentivo a costruire il proprio livello di arricchimento dei dati in cima ai set di dati di terze parti che affittano. La maggior parte dei giocatori di e-commerce in questo settore ha il proprio livello di arricchimento dei dati in una forma o nell’altra.

Ci sono pochi incentivi per condividere questa conoscenza con le aziende specializzate che mantengono questi set di dati in primo luogo, poiché questa conoscenza gioverebbe principalmente alla concorrenza. È difficile valutare il tasso di errore in questi set di dati, ma da Lokad stimiamo che si aggiri intorno a un basso singolo cifra percentuale su entrambi i lati. Ci sono alcuni percentuali di falsi positivi, in cui viene dichiarata una compatibilità quando non esiste, e ci sono alcuni percentuali di falsi negativi, in cui esiste una compatibilità ma non viene dichiarata. Considerando che l’elenco delle compatibilità meccaniche include più di 100 milioni di righe, è molto probabile che ci siano circa sette milioni di errori secondo stime conservative.

Pertanto, è nell’interesse di Stuttgart migliorare questo set di dati. I resi dei clienti segnalati come causati da una compatibilità meccanica falsa positiva possono certamente essere sfruttati per questo scopo. Tuttavia, questo processo è lento e costoso. Inoltre, poiché i clienti non sono tecnici automobilistici professionisti, potrebbero segnalare una parte come incompatibile quando hanno appena fallito nel montare la parte. Stuttgart può rinviare la decisione di dichiarare una parte come incompatibile fino a quando non sono state presentate diverse lamentele, ma ciò rende il processo ancora più costoso e più lento.

Pertanto, una ricetta numerica per migliorare questo set di dati di compatibilità sarebbe molto desiderabile. Non è ovvio che sia possibile migliorare questo set di dati senza sfruttare ulteriori informazioni. Tuttavia, in modo piuttosto sorprendente, si è scoperto che questo set di dati può essere migliorato senza ulteriori informazioni. Questo set di dati può essere utilizzato per avviare se stesso in una versione superiore.

Personalmente, mi sono imbattuto in questa realizzazione nel primo trimestre del 2017 mentre stavo conducendo una serie di esperimenti di deep learning per Lokad. Ho utilizzato una fattorizzazione matriciale, una tecnica ben nota per il filtraggio collaborativo. Il filtraggio collaborativo è il problema centrale nella costruzione di un sistema di raccomandazione, che consiste nell’identificare il prodotto che un utente potrebbe gradire in base alle preferenze conosciute di questo utente per un breve elenco di prodotti. Adattare il filtraggio collaborativo alle compatibilità meccaniche è semplice: sostituire gli utenti con modelli di auto e sostituire i prodotti con parti di auto. Voilà, il problema è adattato.

Più in generale, la fattorizzazione matriciale è applicabile a qualsiasi situazione che coinvolge un grafo bipartito. La fattorizzazione matriciale è anche utile oltre all’analisi dei grafi. Ad esempio, l’adattamento a basso rango di grandi modelli di linguaggio (LLM), una tecnica diventata estremamente popolare per ottimizzare i LLM, si basa anche sul trucco della fattorizzazione matriciale. La fattorizzazione matriciale è illustrata sullo schermo. A sinistra, abbiamo la matrice di compatibilità con uno per indicare una compatibilità tra un’auto e una parte e zeri per indicare l’incompatibilità tra un modello di auto e un numero di parte. Vogliamo sostituire questa matrice grande e molto sparsa con il prodotto di due matrici più piccole e dense. Queste due matrici sono visibili a destra. Queste matrici servono per scomporre la grande matrice. In pratica, stiamo immergendo ogni modello di auto e numero di parte in uno spazio latente. La dimensione di questo spazio latente è indicata con la lettera maiuscola L sullo schermo. Questo spazio latente è progettato per catturare le compatibilità meccaniche ma con molte meno dimensioni rispetto alla matrice originale. Mantenendo la dimensione di questo spazio latente abbastanza bassa, miriamo a imparare le regole nascoste che governano queste compatibilità meccaniche.

Slide 21

Anche se la fattorizzazione matriciale può sembrare un grande concetto tecnico, non lo è. È un trucco di base dell’algebra lineare. L’unico aspetto ingannevole della fattorizzazione matriciale è che funziona così bene nonostante sia così semplice. Sullo schermo è presente una completa implementazione di questa tecnica in meno di 30 righe di codice.

Dalle righe uno a tre, stiamo leggendo il file piatto che elenca le compatibilità meccaniche. Questo file viene caricato in una tabella chiamata M per concisione, che sta per matrice. Questo elenco è effettivamente una rappresentazione sparsa della matrice di compatibilità. Quando carichiamo questo elenco, creiamo anche altre due tabelle chiamate car_models e pns. Questi blocchi ci danno tre tabelle: M, car_models e pns.

Le righe cinque e sei riguardano la mescolatura casuale della colonna che contiene i modelli di auto. Lo scopo della mescolatura è creare zeri casuali o incompatibilità casuali. Infatti, la matrice di compatibilità è molto sparsa. Quando scegliamo un’auto casuale e una parte casuale, è quasi certo che questa coppia sia incompatibile. La fiducia che abbiamo in questa associazione casuale che sia zero è effettivamente maggiore della fiducia che abbiamo nell’elenco di compatibilità in primo luogo. Questi zeri casuali sono accurati al 99,9% per progetto a causa della sparsità della matrice, mentre le compatibilità conosciute sono forse accurate al 97%.

La riga otto prevede la creazione dello spazio latente con 24 dimensioni. Sebbene 24 dimensioni possano sembrare molte per gli embedding, è molto piccolo rispetto ai grandi modelli di linguaggio, che hanno embedding su oltre mille dimensioni. Le righe nove e dieci prevedono la creazione delle due piccole matrici, chiamate pnl e car_L, che utilizzeremo per scomporre la grande matrice. Queste due matrici rappresentano circa 24 milioni di parametri per pnl e 2,4 milioni di parametri per car_L. Questo è considerato piccolo rispetto alla grande matrice, che ha circa 100 miliardi di valori.

Sottolineiamo che la grande matrice non viene mai materializzata in questo script. Non viene mai esplicitamente trasformata in un array; viene sempre mantenuta come un elenco di 100 milioni di compatibilità. Trasformarla in un array sarebbe estremamente inefficiente in termini di risorse di calcolo.

Le righe 12-15 introducono due funzioni di supporto chiamate sigmoid e log_loss. La funzione sigmoid viene utilizzata per convertire il prodotto matriciale grezzo in probabilità, numeri compresi tra 0 e 1. La funzione log_loss sta per perdita logistica. La perdita logistica applica la log-verosimiglianza, una metrica utilizzata per valutare la correttezza di una previsione probabilistica. Qui viene utilizzata per valutare una previsione probabilistica per un problema di classificazione binaria. Abbiamo già incontrato la log-verosimiglianza nella lezione 5.3, dedicata alla previsione probabilistica dei tempi di consegna. Questa è una variante più semplice della stessa idea. Queste due funzioni sono contrassegnate con la parola chiave autograd, che indica che possono essere differenziate automaticamente. Il piccolo valore di uno su un milione è un epsilon introdotto per la stabilità numerica. Non ha alcuna influenza sulla logica altrimenti. Dalle righe 17-29, abbiamo la stessa scomposizione matriciale. Ancora una volta, stiamo utilizzando la programmazione differenziabile. Pochi minuti fa, stavamo utilizzando la programmazione differenziabile per risolvere approssimativamente un problema di soddisfacimento dei vincoli. Qui, stiamo utilizzando la programmazione differenziabile per affrontare un problema di apprendimento auto-supervisionato.

Nelle righe 18 e 19, dichiariamo i parametri da apprendere. Questi parametri sono associati alle due piccole matrici, pnl e car_L. La parola chiave ‘auto’ indica che questi parametri vengono inizializzati casualmente come deviazioni casuali da una distribuzione gaussiana centrata su zero, con una deviazione standard di 0,1.

Le righe 20 e 21 introducono due parametri speciali che accelerano la convergenza. Questi sono solo 48 numeri in totale, una goccia nell’oceano rispetto alle nostre piccole matrici che hanno ancora milioni di numeri. Eppure, ho scoperto che l’introduzione di questi parametri accelera notevolmente la convergenza. È importante sottolineare che questi parametri non introducono alcun grado di libertà per il modello esistente. Questi parametri introducono solo pochi gradi di libertà extra nel processo di apprendimento. L’effetto netto è che riducono di più della metà il numero di epoche necessarie.

Nelle righe 22-24, stiamo caricando gli embedding. Alla riga 22, abbiamo l’embedding per una singola parte chiamata px. Alla riga 23, abbiamo l’embedding per un singolo modello di auto chiamato mx. La coppia px e mx sarà il nostro lato positivo, una compatibilità considerata vera. Alla riga 24, abbiamo l’embedding per un altro modello di auto chiamato mx2. La coppia px e mx2 sarà il nostro lato negativo, una compatibilità considerata falsa. Infatti, mx2 è stato scelto casualmente attraverso la mescolatura che avviene alla riga sei. I tre embedding px, mx e mx2 hanno tutti esattamente 24 dimensioni, in quanto appartengono allo spazio latente, rappresentato dalla tabella L in questo script.

Alla riga 26, esprimiamo la probabilità, come definita dal nostro modello, attraverso un prodotto scalare di questo lato per essere positivo. Sappiamo che questo lato è positivo, almeno è quello che ci dice il dataset di compatibilità. Ma qui valutiamo cosa dice il nostro modello probabilistico su questo lato. Alla riga 27, esprimiamo la probabilità, anche definita dal nostro modello probabilistico, attraverso il prodotto scalare di questo lato per essere negativo. Supponiamo che questo lato sia negativo in quanto è un lato casuale. Di nuovo, valutiamo questa probabilità per vedere cosa dice il nostro modello su questo lato. Alla riga 29, restituiamo l’opposto della log-verosimiglianza associata a questo lato. Il valore restituito viene utilizzato come perdita da minimizzare mediante la discesa del gradiente stocastico. Qui, significa che stiamo massimizzando la log-verosimiglianza, o criterio di classificazione binaria probabilistica, tra coppie compatibili e incompatibili.

Successivamente, oltre a quanto mostrato in questo script, la grande matrice può essere confrontata con il prodotto scalare di due piccole matrici. Le divergenze tra le due rappresentazioni evidenziano sia i falsi positivi che i falsi negativi dei dataset originali. La cosa più sorprendente è che la rappresentazione fattorizzata di questa grande matrice risulta essere più accurata della matrice originale.

Purtroppo, non posso presentare i risultati empirici associati a queste tecniche, poiché i dataset di compatibilità pertinenti sono tutti proprietari. Tuttavia, le mie scoperte, validate da alcuni attori di questo mercato, indicano che queste tecniche di fattorizzazione delle matrici possono essere utilizzate per ridurre il numero di falsi positivi e falsi negativi fino a un ordine di grandezza. In termini di prestazioni, sono passato da circa due settimane di calcolo per ottenere una convergenza soddisfacente con il toolkit di deep learning che stavo utilizzando, CNTK - il toolkit di deep learning di Microsoft del 2017, a circa un’ora con l’attuale runtime offerto da Envision. I primi toolkit di deep learning offrivano una programmazione differenziabile in un certo senso; tuttavia, quelle soluzioni erano fortemente ottimizzate per grandi prodotti di matrici e grandi convoluzioni. Toolkit più recenti, come Jax di Google, sospetto che offrano prestazioni paragonabili alle prestazioni di Envision.

Questo solleva la domanda: perché le aziende specializzate che gestiscono dataset di compatibilità non utilizzano già la fattorizzazione delle matrici per pulire i loro dataset? Se lo avessero fatto, la fattorizzazione delle matrici non avrebbe portato nulla di nuovo. La fattorizzazione delle matrici come tecnica di apprendimento automatico è stata utilizzata per quasi 20 anni. Questa tecnica è stata resa popolare nel 2006 da Simon Funk. Non è esattamente all’avanguardia. La mia risposta a questa domanda originale è che non lo so. Forse queste aziende specializzate inizieranno a utilizzare la fattorizzazione delle matrici dopo aver visto questa lezione, o forse no.

In ogni caso, questo dimostra che la programmazione differenziabile e la modellazione probabilistica sono paradigmi molto versatili. Da lontano, la previsione del tempo di consegna non ha nulla a che fare con la valutazione delle compatibilità meccaniche, eppure entrambe possono essere affrontate con lo stesso strumento, ovvero la programmazione differenziabile e la modellazione probabilistica.

Slide 22

Il dataset delle compatibilità meccaniche non è l’unico dataset che potrebbe rivelarsi inaccurato. A volte, gli strumenti di intelligence competitiva restituiscono anche dati falsi. Anche se il processo di scripting web è abbastanza affidabile nell’estrazione di milioni di prezzi da pagine web semi-strutturate, possono verificarsi errori. Identificare e affrontare questi prezzi errati è una sfida a sé stante. Tuttavia, questo meriterebbe anche una lezione specifica, poiché i problemi tendono ad essere specifici del sito web preso di mira e della tecnologia utilizzata per lo scripting web.

Mentre le preoccupazioni riguardanti lo scraping web sono importanti, queste preoccupazioni si manifestano prima che l’algoritmo di allineamento venga eseguito e quindi dovrebbero essere ampiamente svincolate dall’allineamento stesso. Gli errori di scraping non devono essere lasciati al caso. Ci sono due modi per giocare il gioco dell’intelligence competitiva: puoi migliorare i tuoi numeri, renderli più accurati, o puoi rendere i numeri dei tuoi concorrenti peggiori, meno accurati. Di questo si tratta l’intelligence contro-intelligence.

Come discusso in precedenza, bloccare i robot in base al loro indirizzo IP non funzionerà. Tuttavia, ci sono alternative. Lo strato di trasporto di rete non è nemmeno lontanamente il livello più interessante con cui giocare se intendiamo seminare una confusione ben mirata. Circa dieci anni fa, Lokad ha condotto una serie di esperimenti di contro-intelligence per vedere se un grande sito di e-commerce, come SugAr, poteva difendersi dai concorrenti. I risultati? Sì, può farlo.

Ad un certo punto, sono stato persino in grado di confermare l’efficacia di queste tecniche di contro-intelligence attraverso l’ispezione diretta dei dati forniti dallo specialista dello scraping web, altrimenti ignaro. Il nome in codice di questa iniziativa era Bot Defender. Questo progetto è stato interrotto, ma è ancora possibile vedere alcune tracce di Bot Defender nel nostro archivio pubblico del blog.

Invece di cercare di negare l’accesso alle pagine HTML, il che è una proposta perdente, abbiamo deciso di interferire selettivamente con gli scraper web stessi. Il team di Lokad non conosceva i dettagli del design di questi scraper web. Considerando la struttura DHTML di un determinato sito di e-commerce, non è troppo difficile fare una congettura educata su come un’azienda che opera gli scraper web procederebbe. Ad esempio, se ogni pagina HTML del sito StuttArt ha una classe CSS eccessivamente conveniente chiamata ‘unit price’ che individua il prezzo del prodotto nel mezzo della pagina, è ragionevole presumere che praticamente tutti i robot utilizzeranno questa classe CSS altamente conveniente per isolare il prezzo all’interno del codice HTML. Infatti, a meno che il sito StuttArt non offra un modo ancora più conveniente per ottenere i prezzi, come un’API aperta che può essere interrogata liberamente, questa classe CSS è il percorso ovvio per estrarre i prezzi.

Tuttavia, poiché la logica dello scraping web è ovvia, è anche ovvio come interferire selettivamente con questa logica. Ad esempio, StuttArt può decidere di selezionare alcuni prodotti ben mirati e “avvelenare” l’HTML. Nell’esempio fornito sullo schermo, visivamente entrambe le pagine HTML verranno visualizzate per gli esseri umani come un prezzo di 65 Euro e 50 centesimi. Tuttavia, la seconda versione della pagina HTML verrà interpretata dai robot come 95 Euro invece di 65 Euro. Il numero ‘9’ viene ruotato tramite CSS per apparire come un ‘6’. Lo scraper web di base, che si basa sul markup HTML, non riuscirà a cogliere questo.

Slide 23

Dieci anni dopo, anche un sofisticato Large Language Model come GPT-4, che all’epoca non esisteva, viene ancora ingannato da questo semplice trucco CSS. Sullo schermo vediamo che GPT-4 non estrae un prezzo di 65 Euro come avrebbe dovuto, ma risponde invece 95 Euro. Marginalmente, ci sono decine di modi per creare un codice HTML che offra un evidente tag di prezzo per un robot che si discosta da quello che un essere umano leggerebbe sul sito web. Ruotare un ‘9’ in un ‘6’ è solo uno dei trucchi più semplici all’interno di una vasta gamma di trucchi simili.

Un contromisura a questa tecnica consisterebbe nel renderizzare la pagina, creare la bitmap completa e quindi applicare il riconoscimento ottico dei caratteri (OCR) a questa bitmap. Tuttavia, è piuttosto costoso. Le aziende di intelligence competitiva devono controllare decine di milioni di pagine web al giorno. Come regola generale, eseguire un processo di rendering di una pagina web seguito da OCR aumenta il costo di elaborazione almeno di un fattore di 100, e molto probabilmente di un fattore di 1000.

Come punto di riferimento, a maggio 2023, Microsoft Azure addebita un dollaro per mille operazioni OCR. Considerando che ci sono più di 10 milioni di pagine da monitorare quotidianamente dagli specialisti di intelligence competitiva in Europa, si tratta di un budget di 10.000 dollari al giorno solo per l’OCR. E Microsoft Azure, tra l’altro, è piuttosto competitiva su questo fronte.

Considerando altri costi come la larghezza di banda per quegli preziosi indirizzi IP residenziali, è molto probabile che si tratti di un budget annuale nell’ordine dei 5 milioni di euro in termini di risorse di calcolo che viene discusso qui se seguiamo questa strada. Un budget annuale di milioni di euro è nell’ambito del possibile, ma i margini delle aziende di scraping web sono sottili e non seguiranno questa strada. Se possono ottenere un’informazione competitiva accurata al 99% attraverso mezzi molto più economici, questo è sufficiente per mantenere soddisfatti i loro clienti.

Tornando a StuttArt, sarebbe imprudente utilizzare questa tecnica di controspionaggio per avvelenare tutti i prezzi, poiché ciò porterà all’escalation della corsa agli armamenti con i web scraper. Invece, StuttArt dovrebbe scegliere saggiamente l’uno percento di riferimenti che avranno un impatto massimale in termini di concorrenza. Molto probabilmente, i web scraper nemmeno si accorgeranno del problema. Anche se i web scraper notano le contromisure, fintanto che viene percepito come un problema a bassa intensità, non agiranno di conseguenza. Infatti, lo scraping web comporta tutti i tipi di problemi a bassa intensità: il sito web che si desidera analizzare può essere estremamente lento, può essere inattivo o la pagina di interesse può avere problemi tecnici. Potrebbe essere presente una promozione condizionale, rendendo il prezzo poco chiaro per la parte di interesse.

Dal punto di vista di StuttArt, ci resta da scegliere l’uno percento dei numeri di parte che sono di massimo interesse in termini di intelligence competitiva. Queste parti sarebbero tipicamente quelle che StuttArt vorrebbe scontare di più, ma senza scatenare una guerra dei prezzi. Ci sono diversi modi per affrontare questa situazione. Un tipo di parti ad alto interesse sono i consumabili economici, come i tergicristalli. Un cliente che vuole provare StuttArt per il suo primo acquisto difficilmente inizierà con un iniettore da 600 euro. Un cliente di prima volta è molto più propenso a iniziare con un tergicristallo da 20 euro come prova. In generale, i clienti di prima volta si comportano in modo molto diverso dai clienti abituali. Pertanto, l’uno percento delle parti che StuttArt dovrebbe probabilmente rendere particolarmente attraenti, senza scatenare una guerra dei prezzi, sono le parti che sono più probabili che vengano acquistate dai clienti di prima volta.

Slide 24

Evitare una guerra dei prezzi e l’erosione della quota di mercato sono entrambe conseguenze estremamente negative per StuttArt, quindi occorrono circostanze particolari per discostarsi dal principio di allineamento. Abbiamo già visto una di queste circostanze, che era la necessità di controllare il margine lordo. Tuttavia, non è l’unica. Gli eccessi di magazzino e le rotture di stock sono altri due candidati principali da considerare per l’aggiustamento dei prezzi. Gli eccessi di magazzino vanno affrontati in modo proattivo. Sarebbe meglio per StuttArt evitare completamente gli eccessi di magazzino, ma gli errori accadono così come le fluttuazioni di mercato, e nonostante le attente politiche di riapprovvigionamento dell’inventario, StuttArt si troverà regolarmente di fronte a eccessi di magazzino localizzati. La determinazione dei prezzi è un meccanismo prezioso per mitigare questi problemi. StuttArt è comunque meglio vendere le parti in eccesso con uno sconto sostanziale piuttosto che non venderle affatto, quindi gli eccessi di magazzino devono essere considerati nella strategia di pricing.

Limitiamo la portata degli eccessi di magazzino alle sole parti che molto probabilmente si trasformeranno in svalutazione dell’inventario. In questo contesto, gli eccessi di magazzino possono essere affrontati con un’override di allineamento dei costi che abbassa il prezzo a un margine lordo quasi nullo, e eventualmente anche un po’ al di sotto a seconda delle normative e dell’entità dell’eccesso di magazzino.

Al contrario, le rotture di stock, o meglio le quasi rotture di stock, dovrebbero avere i loro prezzi rivisti al rialzo. Ad esempio, se a StuttArt rimangono solo cinque unità in magazzino per una parte che di solito vende una unità al giorno, e il successivo riapprovvigionamento non arriverà prima di 15 giorni da ora, allora questa parte molto probabilmente affronterà una rottura di stock. Non ha senso precipitarsi nella rottura di stock. StuttArt potrebbe aumentare il prezzo per questa parte. Finché la diminuzione della domanda è sufficientemente piccola da evitare una rottura di stock, non importa.

Gli strumenti di intelligence competitiva sono sempre più in grado di monitorare non solo i prezzi, ma anche i ritardi di spedizione annunciati per le parti esposte sul sito web di un concorrente. Questo offre la possibilità a StuttArt di monitorare non solo le proprie rotture di stock, ma anche monitorare le rotture di stock mentre si verificano per i concorrenti. Una causa frequente di una rottura di stock di un rivenditore è una rottura di stock di un fornitore. Se l’OEM stesso è senza stock, allora StuttArt, insieme a tutti i suoi concorrenti, è probabile che finisca senza stock. Come parte dell’algoritmo di allineamento dei prezzi, è ragionevole rimuovere quelle parti dall’allineamento che sono o senza stock dai fornitori o senza stock dal sito web del concorrente. Le situazioni di stock esaurito dei concorrenti possono essere monitorate attraverso i ritardi di spedizione quando questi ritardi di spedizione riflettono condizioni insolite. Inoltre, se un produttore di apparecchiature originali (OEM) inizia ad annunciare ritardi insoliti per le parti, potrebbe essere il momento di aumentare i punti di prezzo per quelle parti. Questo perché indica che tutti nel mercato avranno molto probabilmente difficoltà ad acquistare più parti di auto da questo particolare OEM.

A questo punto, dovrebbe diventare abbastanza evidente che l’ottimizzazione dei prezzi e l’ottimizzazione dell’inventario sono problemi strettamente legati e quindi questi due problemi devono essere risolti congiuntamente nella pratica. Infatti, all’interno di un’unità di bisogno data, la parte che beneficia sia del prezzo più basso che del rango di visualizzazione più alto all’interno della sua gamma di prodotti assorbirà la maggior parte delle vendite. I prezzi indirizzano la domanda tra numerose alternative all’interno dell’offerta di StuttArt. Non ha senso che un team di inventario cerchi di prevedere i prezzi generati dal team di prezzi. Invece, dovrebbe esserci una funzione di supply chain unificata che affronti congiuntamente le due problematiche.

Slide 25

Le condizioni di spedizione sono parte integrante del servizio. Quando si tratta di parti automobilistiche, i clienti non solo hanno grandi aspettative che StuttArt rispetti le sue promesse, ma potrebbero anche essere disposti a pagare di più se il processo viene accelerato. Diverse grandi aziende di e-commerce che vendono parti di auto in Europa offrono già prezzi distinti a seconda del tempo di consegna. Questi prezzi distinti non riflettono solo diverse opzioni di spedizione, ma anche possibili diverse opzioni di approvvigionamento. Se il cliente è disposto ad aspettare una o due settimane, allora StuttArt guadagna ulteriori opzioni di approvvigionamento e StuttArt può passare parte dei risparmi direttamente ai clienti. Ad esempio, una parte può essere acquisita da StuttArt solo dopo che è stata ordinata dal cliente, eliminando così completamente il costo di stoccaggio e il rischio di inventario.

Le condizioni di spedizione complicano l’intelligence competitiva. In primo luogo, gli strumenti di intelligence competitiva devono recuperare informazioni sui ritardi, non solo sui prezzi. Molti specialisti di intelligence competitiva stanno già facendo questo, e StuttArt deve fare altrettanto. In secondo luogo, StuttArt deve adattare il suo algoritmo di allineamento dei prezzi per riflettere le diverse condizioni di spedizione. La programmazione differenziabile può essere messa al lavoro per fornire una stima del valore, espresso in euro, apportato dal risparmio di un giorno di tempo. Si prevede che questo valore dipenda dal modello di auto, dal tipo di parte e dal numero di giorni per la spedizione. Ad esempio, passare da un tempo di consegna di tre giorni a un tempo di consegna di due giorni è molto più prezioso per il cliente che passare da un tempo di consegna di 21 giorni a un tempo di consegna di 20 giorni.

Slide 26

In conclusione, oggi è stata proposta una strategia di pricing estesa per StuttArt, una figura dedicata alla supply chain nel settore dell’aftermarket automobilistico online. Abbiamo visto che il pricing non è adatto a nessun tipo di strategia di ottimizzazione locale. Il problema del pricing è infatti non locale a causa della compatibilità meccanica che propaga l’impatto di un prezzo per una determinata parte su numerose unità di bisogni. Ciò ci ha portato a una prospettiva in cui il pricing è affrontato come un allineamento a livello dell’unità di bisogno. Due sotto-problemi sono stati affrontati attraverso la programmazione differenziabile. In primo luogo, abbiamo risolto un problema di soddisfacimento approssimativo dei vincoli per l’allineamento competitivo stesso. In secondo luogo, abbiamo affrontato il problema dell’automiglioramento dei dataset di compatibilità meccanica per migliorare la qualità dell’allineamento, ma anche per migliorare la qualità dell’esperienza del cliente. Possiamo aggiungere questi due problemi alla nostra crescente lista di problemi di supply chain che traggono vantaggio da una soluzione diretta una volta affrontati attraverso la programmazione differenziabile.

Più in generale, se c’è una cosa da ricordare da questa lezione, non è che l’aftermarket automobilistico è un caso atipico quando si tratta di strategie di pricing. Al contrario, la cosa da ricordare è che dovremmo sempre aspettarci di affrontare numerose specificità, indipendentemente dal settore di interesse. Ci sarebbero state altrettante specificità se avessimo analizzato qualsiasi altra figura della supply chain invece di concentrarci su StuttArt, come abbiamo fatto oggi. Pertanto, è inutile cercare una risposta definitiva. Qualsiasi soluzione in forma chiusa è destinata a non riuscire ad affrontare il flusso infinito di variazioni che si verificheranno nel tempo in una supply chain del mondo reale. Invece, abbiamo bisogno di concetti, metodi e strumenti che non solo ci permettano di affrontare lo stato attuale della supply chain, ma che siano anche adattabili alla programmazione. La programmabilità è essenziale per rendere le ricette numeriche per il pricing pronte per il futuro.

Slide 27

Prima di passare alle domande, vorrei annunciare che la prossima lezione si terrà nella prima settimana di luglio. Sarà un mercoledì come al solito, alla stessa ora - 15:00, ora di Parigi. Riprenderò il capitolo uno con uno sguardo più attento a ciò che l’economia, la storia e la teoria dei sistemi ci dicono sulla supply chain e la pianificazione della supply chain.

Ora passiamo alle domande.

Domanda: Hai intenzione di tenere una lezione sulla visualizzazione del costo totale di proprietà per una supply chain? In altre parole, un’analisi del TCO dell’intera supply chain utilizzando l’analisi dei dati e l’ottimizzazione dei costi complessivi?

Sì, questo fa parte del percorso di questa serie di lezioni. Gli elementi di questo argomento sono stati discussi in diverse lezioni. Ma la cosa fondamentale è che non si tratta davvero di un problema di visualizzazione dei dati. Il punto del costo totale di proprietà non è un problema di visualizzazione dei dati; è un problema di mentalità. La maggior parte delle pratiche di supply chain è estremamente disinteressata prospettiva finanziaria. Si concentrano sui livelli di servizio degli errori, non sugli errori in termini di dollari o euro. Purtroppo, la maggior parte si concentra su queste percentuali. Pertanto, c’è bisogno di un cambio di mentalità.

La seconda cosa è che ci sono elementi discussi nella lezione che faceva parte del primo capitolo - l’orientamento al prodotto, come la consegna orientata al prodotto software per la supply chain. Dobbiamo pensare non solo al primo cerchio dei driver economici, ma anche a quello che chiamo il secondo cerchio dei driver economici. Queste sono forze sfuggenti, ad esempio, se si sconta il prezzo di un prodotto di un euro creando una promozione, un’analisi ingenua potrebbe suggerire che mi è costato un euro di margine solo perché ho fatto questo sconto di un euro. Ma la realtà è che facendo ciò, si sta creando un’aspettativa tra la propria base di clienti di aspettarsi questo sconto di un euro anche in futuro. E quindi, questo comporta un costo. È un costo di secondo ordine, ma è molto reale. Tutti questi driver economici del secondo cerchio sono importanti driver che non compaiono nel tuo bilancio o nei tuoi libri contabili. Sì, procederò con ulteriori elementi che descrivono questi costi. Tuttavia, non è principalmente un problema analitico in termini di visualizzazione o grafici; è una questione di mentalità. Dobbiamo fare i conti con l’idea che queste cose devono essere quantificate, anche se sono incredibilmente difficili da quantificare.

Quando iniziamo a discutere del costo totale di proprietà, dobbiamo anche discutere di quante persone ho bisogno per gestire questa soluzione di supply chain. Questo è uno dei motivi per cui, in questa serie di lezioni, dico che abbiamo bisogno di soluzioni programmatiche. Non possiamo avere un esercito di impiegati che modificano fogli di calcolo o tabelle e fanno cose estremamente inefficienti in termini di costo, come gestire segnalazioni di eccezioni nel software di supply chain. Le segnalazioni e le eccezioni consistono nel trattare l’intera forza lavoro dell’azienda come co-processori umani per il sistema. Questo è estremamente costoso.

L’analisi del costo totale di proprietà è principalmente un problema di mentalità, di avere la giusta prospettiva. Nella prossima lezione, riprenderò anche altri punti di vista, in particolare ciò che l’economia ci dice sulla supply chain. È molto interessante perché dobbiamo pensare a cosa significa realmente il costo totale di proprietà per una soluzione di supply chain, soprattutto se iniziamo a pensare al valore che porta all’azienda.

Domanda: Per riferimenti tecnicamente compatibili a un’unità di bisogno, ci sono differenze percepibili nella qualità, attività, argento, oro, ecc. Come si tiene conto di questo in un confronto di prezzi tra concorrenti?

È del tutto corretto. Ecco perché c’è bisogno di introdurre gamme di prodotti. Questo livello di attrattiva può di solito essere inserito in circa una mezza dozzina di classi che rappresentano standard di qualità per i componenti. Ad esempio, hai la gamma motorsport, che include i componenti più lussuosi con un’eccellente compatibilità meccanica. Questi componenti hanno anche un aspetto gradevole e l’imballaggio stesso è di alta qualità.

La mia esperienza in questo mercato è che, anche se ci sono infinite variazioni su come si può rendere leggermente più alta o migliore la qualità di un componente, il mercato si è praticamente convergente su circa una mezza dozzina di gamme di prodotti che vanno da molto costose a non così costose. Quando raggruppi i componenti di StuttArt, è necessario raggruppare quei componenti all’interno delle gamme di prodotti. Lo stesso vale per i componenti dei concorrenti, il che significa che dobbiamo sapere qual è il tipo di gamma di qualità di un componente, anche se il componente non è venduto da StuttArt.

StuttArt ha bisogno di essere consapevole di tutti i componenti presenti sul mercato. Questo non è così difficile come potrebbe sembrare perché la maggior parte dei produttori fornisce informazioni sulla qualità prevista dei loro componenti. Queste informazioni sono abbastanza codificate dagli stessi produttori di apparecchiature originali (OEM). Beneficiamo del fatto che il mercato automobilistico è un mercato incredibilmente consolidato e maturo che esiste da più di un secolo. Le aziende che vendono questi dataset di compatibilità, dataset per auto e compatibilità dei componenti, forniscono anche una vasta gamma di attributi per i componenti e i modelli di auto. Stiamo parlando di centinaia di attributi. Questi dataset sono estesi e ricchi. Originariamente, questi dataset venivano utilizzati dalle persone nei centri di riparazione per capire come effettuare le riparazioni. Vengono persino forniti con allegati in formato PDF e documentazione tecnica. È molto ricco; hai decine di gigabyte di dati, comprese immagini e foto. Ho appena grattato la superficie in termini di valore di mercato di questi dataset.

Domanda: Come influiscono le diverse normative tra le regioni sull’ottimizzazione dei prezzi per le aziende automobilistiche? Ad esempio, hai menzionato Peugeot, un’azienda francese. In che modo il tuo approccio per Peugeot sarebbe diverso da quello di un’azienda simile in Scandinavia o in Asia?

La Scandinavia è praticamente lo stesso mercato automobilistico. Hanno alcuni marchi diversi, ma è troppo piccolo per sostenere una propria industria automobilistica. Per quanto riguarda l’industria automobilistica, la Scandinavia è proprio come il resto dei 350 milioni di europei. Tuttavia, l’Asia è davvero diversa. L’India e la Cina sono mercati a sé stanti.

Per quanto riguarda l’ottimizzazione dei prezzi, le normative non hanno tanto impedito, ma piuttosto ritardato l’esistenza dei rivenditori online di parti di auto. Ad esempio, in Europa 20 anni fa, c’è stata una battaglia legale. Pionieri come StuttArt, che erano le prime aziende a vendere parti di auto online, hanno affrontato controversie legali. Vendevano parti di auto e dichiaravano sul loro sito web che queste erano identiche a quelle vendute dai produttori di auto originali.

Aziende come StuttArt dicevano: “Non ti sto vendendo una qualsiasi parte di auto, ti sto vendendo la stessa identica parte di auto che il produttore di auto utilizzerebbe”. Potevano fare questa affermazione perché acquistavano la stessa identica parte dalla stessa fabbrica. Se una parte proviene, diciamo, da Valeo e viene montata su una Peugeot, c’è un’associazione nota. Ciò che è stato stabilito circa due decenni fa, diversi tribunali in Europa hanno stabilito che era legale per un sito web affermare di vendere la stessa identica parte di quelle che si qualificano come parti originali di un’auto. Questa incertezza normativa ha ritardato l’ascesa delle parti di ricambio vendute online, probabilmente di circa cinque anni. I pionieri stavano combattendo in tribunale contro i produttori di auto per il diritto di vendere parti di auto online affermando che erano parti originali per l’auto. Una volta chiarito, potevano farlo a condizione che fossero onesti e acquistassero effettivamente la stessa identica parte di auto da Valeo o Bosch, esattamente come la parte montata sull’auto.

Tuttavia, ci sono ancora limitazioni. Ad esempio, ci sono ancora parti che caratterizzano l’aspetto visivo dell’auto e solo il produttore dell’auto può venderle come parti originali. Ad esempio, il cofano dell’auto. Queste normative hanno un impatto nel limitare la gamma di parti che possono essere liberamente vendute online affermando che la parte è esattamente la stessa di quella del produttore originale. Stiamo parlando di parti che hanno implicazioni non solo in termini di compatibilità meccanica, ma anche di sicurezza. Alcune di queste parti sono fondamentali per la sicurezza.

In Asia, un problema che non ho discusso qui sono i falsi. Affrontare i falsi è molto diverso in Europa rispetto all’Asia. I falsi esistono anche in Europa, ma il mercato è maturo e catalizzato. I produttori di apparecchiature originali e i produttori di automobili si conoscono molto bene. Sebbene i falsi esistano, è un problema molto minimo. In mercati come l’Asia, in particolare l’India e la Cina, ci sono ancora parecchi problemi con i falsi. Non è davvero un problema di regolamentazione, poiché i falsi sono illegali in Cina tanto quanto in Europa. Il problema è l’applicazione, con un grado di applicazione molto più basso in Asia rispetto all’Europa.

Domanda: Stiamo cercando di ottimizzare un prezzo complessivo o in relazione ai concorrenti?

La funzione di ottimizzazione è concettualmente per ogni unità di necessità - un’unità di necessità è un modello di auto e un tipo di parte. Per ogni unità di necessità, hai una differenza di prezzo in euro tra il punto di prezzo di StuttArt, che è la migliore offerta di StuttArt, e il punto di prezzo del concorrente. Prendi la differenza assoluta di questi due prezzi e li sommi; questa è la tua funzione. Non useremo in modo ingenuo questa somma di differenze di prezzo; aggiungeremo un peso che riflette il volume di vendite annuali di ogni unità di necessità.

Pertanto, la funzione di ottimizzazione per il tuo problema di soddisfazione dei vincoli è una somma di differenze assolute tra il miglior prezzo offerto da StuttArt per l’unità di necessità e il miglior prezzo offerto dalla concorrenza. Aggiungi un fattore di ponderazione che riflette l’importanza annuale, anch’essa ponderata in euro, per questa unità di necessità. Stai cercando di riflettere al meglio lo stato del mercato europeo.

Il motivo per cui vuoi pesare in base all’importanza dell’unità di necessità anziché all’unità di necessità di StuttArt è che se StuttArt è così poco competitiva da non vendere nulla dall’unità di necessità, puoi avere un problema in cui non è competitiva. Pertanto, questa unità viene ignorata in termini di allineamento, portando a zero vendite. Poi hai un circolo vizioso in cui non è competitivo, quindi non vende nulla e quindi l’unità di necessità stessa viene scontata come trascurabile.

Domanda: Vedi conseguenze inaspettate che sorgono se un approccio di modellazione differenziabile di machine learning diventa lo standard del settore, con il rischio che i modelli competano con altri modelli molto simili?

Questa domanda è difficile perché, per definizione, se è una conseguenza inaspettata, allora nessuno se l’aspettava, nemmeno io. È molto difficile prevedere che tipo di conseguenze potrebbero essere inaspettate.

Tuttavia, in modo più serio, questo settore è stato guidato da tecniche algoritmiche per un decennio. È un perfezionamento in termini di precisione dell’intento. Vuoi un metodo numerico che sia più strettamente allineato con il tuo intento. Ma fondamentalmente, non è come se stessimo partendo da zero, dove ora viene fatto manualmente e tra dieci anni verrà fatto automaticamente con ricette numeriche. È già fatto con ricette numeriche. Quando devi mantenere e aggiornare 100.000 prezzi ogni giorno, devi avere una forma di automazione.

Forse la tua automazione è un gigantesco foglio di calcolo Excel in cui stai eseguendo ogni sorta di magia nera, ma è comunque molto un processo algoritmico. Le persone non regolano manualmente i prezzi tranne che per alcune parti in rare occasioni. Per lo più, è già un processo algoritmico e abbiamo già numerose conseguenze non intenzionali. Ad esempio, durante i blocchi in Europa, le persone trascorrevano più tempo a casa, facendo acquisti online. Questo potrebbe sembrare controintuitivo, ma usavano comunque molto le loro auto e quindi facevano più acquisti. Tuttavia, molte aziende che vendono parti di auto online sono diventate meno attive in termini di promozioni perché organizzarle è diventato più complicato poiché tutti lavoravano da casa.

Di conseguenza, per un paio di mesi durante i blocchi del 2020, c’era molto meno rumore algoritmico generato dalle promozioni. Le risposte algoritmiche erano molto più semplici da parte di tutti. C’erano giorni in cui si potevano vedere in modo molto più nitido il tipo di risposte algoritmiche che venivano attivate su base giornaliera.

Questo è un modello piuttosto maturo in un settore ben consolidato, poiché tutto viene ora condotto tramite scambi elettronici. Per quanto riguarda le conseguenze non intenzionali o inaspettate, queste sono più difficili da prevedere.

Permettetemi di offrire un pensiero conclusivo su un’area potenziale di sorpresa. Molti si aspettano che i veicoli elettrici semplifichino tutto perché hanno meno parti rispetto ai motori a combustione interna. Tuttavia, dal punto di vista di un’azienda come StuttArt, per i prossimi 10 anni, i veicoli elettrici significheranno molte più parti sul mercato.

Fino a quando, e se, i veicoli elettrici diventeranno dominanti, avremo ancora tutti i veicoli più vecchi con motori a combustione. Questi veicoli dureranno circa 20 anni. Ricordate che StuttArt, come azienda, si occupa di veicoli che non sono esattamente nuovi di zecca. Molti di questi veicoli sono di buona qualità e saranno ancora presenti tra 20 anni. Ma nel frattempo, avremo numerosi veicoli elettrici aggiuntivi che entreranno sul mercato con molte parti diverse. Questo potrebbe causare un aumento costante del numero di parti diverse, creando ancora più sfide e complicazioni.

Credo che questo ci porti alla fine della lezione di oggi. Se non ci sono altre domande, non vedo l’ora di vedervi per la prossima lezione che sarà nella prima settimana di luglio, mercoledì alle 15:00 ora di Parigi, come al solito. Grazie mille e ci vediamo allora.