HomeIA & Machine LearningMotore di Pricing Dinamico — Elasticità della Domanda in Tempo Reale

🏷️ Motore di Pricing Dinamico — Elasticità della Domanda in Tempo Reale

Osserva un motore di ottimizzazione dei prezzi esplorare l’elasticità della domanda per uno SKU retail e regolare il prezzo in tempo reale, bilanciando ricavo e velocità di vendita dell’inventario.

IA e Machine Learning3DAvanzato60 FPS
ai-retail-dynamic-pricing ↗ Apri standalone

Informazioni sul Motore di Pricing Dinamico

I rivenditori raramente conoscono la propria curva di domanda — osservano solo quante unità si vendono al prezzo praticato in quel momento. Questa simulazione nasconde una curva di domanda a elasticità costante, domanda = k·prezzo^(−ε), dietro un segnale di vendita rumoroso e censurato dall'inventario, e lascia che un motore di pricing la scopra dal vivo. Ogni giorno simulato il motore sfrutta la sua migliore stima di prezzo attuale oppure esplora un prezzo vicino per continuare ad apprendere, esattamente come un multi-armed bandit che bilancia sfruttamento e guadagno informativo.

Sotto il cofano, una regressione lineare log-log mobile sulle ultime 30 osservazioni (prezzo, unità vendute) recupera una stima di ε e della scala di domanda k. Una ricerca su griglia nell'intervallo di prezzo consentito valuta poi ogni prezzo candidato in base al ricavo atteso meno una penalità per l'allontanamento dal ritmo necessario a vendere l'inventario rimanente entro la fine dell'orizzonte — una versione semplificata del problema di revenue management sull'inventario terminale che compagnie aeree e rivenditori risolvono ogni giorno.

Domande frequenti

Cos'è l'elasticità della domanda, e come la stima il motore senza mai osservarla?

L'elasticità della domanda al prezzo ε misura quanto bruscamente la quantità domandata reagisce al prezzo: un aumento del prezzo dell'1% riduce la domanda di circa ε%. Questa simulazione genera la domanda giornaliera reale da una curva a elasticità costante, domanda = k·prezzo^(−ε), ma al motore non vengono mai comunicati k o ε — esso osserva solo le unità effettivamente vendute, rumorose e limitate dall'inventario, al prezzo praticato quel giorno. Prendendo i logaritmi, ln(domanda) = ln(k) − ε·ln(prezzo) diventa una retta, quindi una regressione ai minimi quadrati ordinari sulle ultime 30 coppie (prezzo, venduto) recupera stime sia di k sia di ε direttamente dalla pendenza e dall'intercetta.

Perché il motore "esplora" prezzi vicini invece di saltare direttamente all'ottimo?

Una regressione adattata a un cluster ristretto di prezzi è inaffidabile — se tutte le osservazioni si trovano vicino a $38–$42, la stima della pendenza vincola a malapena ε al di fuori di quell'intervallo, e la curva di ricavo stimata può risultare molto imprecisa una volta estrapolata. Il motore si comporta quindi come un multi-armed bandit: la maggior parte dei giorni sfrutta il prezzo che il suo modello attuale ritiene migliore, ma con probabilità ε-bandit (il cursore del tasso di esplorazione) sposta invece il prezzo a un livello vicino casuale, puramente per raccogliere un dato più informativo. Questo compromesso esplorazione/sfruttamento è lo stesso usato nei sistemi reali di pricing online e nelle aste pubblicitarie.

Perché a volte non esiste un prezzo interno che massimizza il ricavo?

Il ricavo con elasticità costante è R(p) = p·k·p^(−ε) = k·p^(1−ε). Se ε > 1 (domanda elastica), l'esponente 1−ε è negativo, quindi R(p) è strettamente decrescente in p — il ricavo è massimizzato applicando il prezzo più basso consentito al motore, e il volume compensa più che a sufficienza il margine più basso. Se ε < 1 (domanda anelastica), 1−ε è positivo e il ricavo continua a crescere con il prezzo, quindi il prezzo migliore è quello più alto consentito. Solo il caso ε = 1 rende il ricavo piatto. Ecco perché questo simulatore impone sempre cursori espliciti di prezzo minimo e massimo — i problemi reali di "prezzo ottimale" sono di solito ottimizzazioni contro un vincolo, non un picco interno regolare.

Cos'è la penalità di pacing dell'inventario, e perché non massimizzare semplicemente il ricavo ogni singolo giorno?

Massimizzare isolatamente il ricavo stimato di oggi può esaurire lo stock troppo in fretta (lasciando sul tavolo denaro di clienti che avrebbero pagato di più) o troppo lentamente (terminando la stagione con scorte invendute, scontate fino a zero). Il motore calcola un ritmo obiettivo — inventario rimanente diviso per i giorni rimanenti — e valuta ogni prezzo candidato come ricavo stimato meno λ·(domanda stimata a quel prezzo − ritmo obiettivo)², dove λ è il cursore del peso di pacing. Un λ più alto spinge il prezzo scelto verso ciò che mantiene la vendita in linea con il programma; un λ più basso lascia che il motore insegua il puro ricavo, rischiando di terminare con scorte in eccesso o un esaurimento.

Qual è la differenza tra esplorazione e sfruttamento in questo motore in stile bandit?

Lo sfruttamento significa applicare il prezzo che, secondo il miglior modello attuale del motore, massimizza il punteggio di ricavo corretto per il pacing — utilizza ciò che è già stato appreso. L'esplorazione significa provare deliberatamente un prezzo diverso e vicino anche se il modello al momento non lo ritiene ottimale, puramente per osservare come reagisce la domanda e affinare la stima dell'elasticità. Con troppo poca esplorazione il motore può rimanere bloccato vicino a un prezzo localmente decente perdendone uno molto migliore altrove sulla curva; con troppa esplorazione spreca giorni su prezzi scadenti. Il cursore del tasso di esplorazione controlla direttamente quanto spesso viene usato un prezzo di prova casuale al posto della raccomandazione del modello.

Perché la domanda osservata viene "censurata" quando l'inventario scarseggia?

La vera curva di domanda del simulatore può richiedere, ad esempio, 220 unità in un dato giorno, ma se restano in stock solo 40 unità, ne vengono effettivamente vendute e osservate solo 40. La regressione del motore vede sempre e solo le unità vendute, non la vera domanda non vincolata, quindi man mano che l'inventario si avvicina a zero la domanda osservata sottostima sistematicamente la curva reale — una distorsione ben nota nei dati retail chiamata censura della domanda. Questo è uno dei motivi per cui i veri sistemi di revenue management cercano di fermare gli sconti prima che l'inventario diventi criticamente basso, invece di leggere vendite pari a zero come "assenza di domanda."

Quali tecniche del mondo reale rispecchia questa simulazione?

La struttura complessiva — una curva nascosta a elasticità costante, esperimenti di prezzo che generano dati di vendita rumorosi, una regressione online che recupera la curva, e un vincolo di pacing rispetto a un orizzonte fisso — rispecchia il revenue management di compagnie aeree e hotel, l'ottimizzazione dei ribassi nel retail, e i "contextual pricing bandit" usati da alcune piattaforme e-commerce. I sistemi reali aggiungono molto altro (prezzi dei concorrenti, cannibalizzazione tra articoli, segmenti di clientela, politiche di esplorazione più ricche come il campionamento di Thompson), ma il ciclo di base di sondare → stimare → ottimizzare → mantenere il ritmo è lo stesso usato qui.

⚙ Sotto il cofano

Osserva un motore di ottimizzazione dei prezzi esplorare l’elasticità della domanda per uno SKU retail e regolare il prezzo in tempo reale, bilanciando ricavo e velocità di vendita dell’inventario.

Three.jsWebGLIAMachine Learning

3D · Three.js / WebGL renderer · 60 FPS target · funziona interamente lato client, senza installazione

Cosa hai trovato?

Aggiungi i passaggi per riprodurlo (opzionale)