Masterizzare l’arte dell’ottimizzazione dei prezzi – Una soluzione di data science

Mastering the art of price optimization - A data science solution

Svelare i segreti delle soluzioni di Data Science del mondo reale per l’ottimizzazione dei prezzi nel settore del commercio al dettaglio

Image By Author

Indice:

1. Panoramica2. Modellazione dell’elasticità3. Ottimizzazione

1. Panoramica

Il pricing gioca un ruolo molto importante nel mondo degli affari. Trovare un equilibrio tra le vendite e i margini è molto importante per il successo di qualsiasi attività commerciale. Come possiamo farlo nel modo della data science? In questa sezione, costruiremo l’intuizione di una soluzione efficace di data science per l’ottimizzazione dei prezzi e poi passeremo ai dettagli e al codice di ogni componente.

Nota – Ci sono diversi tipi di strategie di pricing, ma in questo articolo ci concentreremo sulla costruzione della strategia di pricing per le attività convenzionali/marchi consolidati con dati sufficienti sulla storia dei cambiamenti di prezzo. Diamo un’occhiata all’approccio di base che stiamo cercando di seguire prima di entrare nei dettagli –

Image by Author

Abbiamo tracciato le vendite e i prezzi per l’articolo 1. Negli ultimi 9 mesi ci sono stati 2 cambiamenti di prezzo e chiaramente possiamo vedere l’impatto sulle vendite. Quando i prezzi erano più bassi, le vendite erano più elevate. Ora la domanda è come quantificare l’impatto sulle vendite a causa dei cambiamenti di prezzo nel passato e prevedere il prezzo ottimale per l’articolo in futuro.

Un’osservazione interessante da gennaio ad aprile, il prezzo è stato fissato a $5 ma osserviamo comunque fluttuazioni delle vendite. È molto normale poiché nel mondo reale ci sono molti fattori esterni che influenzano le vendite come la stagionalità, le vacanze, gli eventi promozionali, la spesa di marketing, ecc. Quindi, non modelliamo le vendite effettive ma le vendite di base che otteniamo utilizzando i diversi modelli.

Image by Author

Puoi osservare che stiamo guardando una tendenza più regolare delle vendite nella serie di vendite di base. È al 100% accurato? Sicuramente no! La data science riguarda quanto ci avviciniamo alla realtà. Passiamo ora al processo –

Supponiamo di essere stati assunti e ci viene chiesto di fornire i prezzi per migliaia di articoli in diversi negozi per il gruppo Retailmart. I prezzi dello stesso articolo possono essere diversi in diversi negozi. L’azienda ci ha fornito i dati degli ultimi 5 anni. Qual dovrebbe essere il nostro approccio per risolvere il problema?

Capiamo questo con un esempio di misuratore di prezzo. Supponiamo di avere un misuratore di prezzo e abbiamo fissato i valori minimi e massimi e il quadrante può muoversi tra questi due estremi. Attualmente, il quadrante punta al prezzo corrente. Il nostro obiettivo è fermare il quadrante in un punto in cui possiamo massimizzare i profitti.

Ora, man mano che spostiamo il quadrante verso destra (cioè aumentiamo il prezzo), le vendite diminuiranno e i margini aumenteranno ma

  1. Possiamo quantificare questa diminuzione? Sì, possiamo e si chiama elasticità del prezzo di un articolo. In termini semplici, elasticità del prezzo per un articolo significa la variazione percentuale delle vendite per una variazione del 1% del prezzo.
  2. Nel mondo reale, le vendite sono spesso guidate da eventi promozionali, vacanze, sconti extra, ecc. ma per ottimizzare il prezzo dovremmo escludere l’effetto di tutti questi fattori esterni e calcolare le vendite di base.
  3. Una volta che quantifichiamo la variazione delle vendite rispetto alla variazione del prezzo, abbiamo bisogno della risposta, Dove devo fermare il quadrante? Per questo, abbiamo bisogno di un obiettivo che nella maggior parte dei casi è massimizzare i profitti. Profitti = Vendite * Margine quindi dobbiamo fermarci nella posizione in cui il valore dei nostri profitti raggiunge il massimo. Matematicamente, questo è un concetto di ottimizzazione non lineare in cui il valore può muoversi entro determinati limiti.
  4. Le regole aziendali sono importanti, dobbiamo assicurarci che i prezzi finali consigliati rispettino queste regole.

Questi sono i passi principali che seguiremo per ottenere il prezzo corretto per ogni articolo in un determinato negozio. Vediamo questi passi in un po’ più dettaglio —

1. Vendite di riferimento/Unità di base

Questo passo è un passo preliminare per i passi successivi. Come detto, vogliamo modellare l’impatto sulle vendite dovuto ai cambiamenti dei prezzi. Lo scenario ideale è avere vendite che sono influenzate solo dai prezzi ma nel mondo reale non è mai il caso —

Quindi vogliamo simulare le vendite per il nostro scenario ideale e lo facciamo utilizzando un modello di serie temporale sull’equazione seguente —

Vendite ~ funzione[Vendite_di_riferimento + (effetto promozionale) + (effetto festività) + (qualsiasi altro effetto)]

Si noti che a volte non abbiamo dati reali sui fattori esterni che stanno influenzando le vendite. In questo caso, possiamo utilizzare variabili fittizie per tener conto di tutti questi fattori. Un semplice esempio può essere se, in un certo mese, vediamo un improvviso aumento delle vendite ma il prezzo rimane costante, possiamo introdurre una semplice variabile fittizia con 1 per quel mese e 0 per gli altri mesi.

2. Elasticità del prezzo

L’elasticità del prezzo si riferisce alla variazione percentuale delle vendite rispetto alla variazione percentuale del prezzo di un articolo per un determinato negozio.

Come esempio, considera due prodotti: il latte e il tè verde ABC. Quale pensi avrà un’alta elasticità del prezzo?

Il latte, essendo un articolo essenziale di tutti i giorni con una forte concorrenza, mostra un’alta elasticità del prezzo. Anche una leggera variazione del prezzo può influenzare significativamente le vendite a causa della sua ampia domanda. D’altra parte, il tè verde ABC, che potrebbe essere disponibile in un numero limitato di negozi, ha una bassa elasticità del prezzo. Una piccola variazione del prezzo per il tè verde ABC è improbabile che abbia un impatto sostanziale sulle vendite a causa della sua presenza di nicchia sul mercato.

Come modelleremo questo?

Vendite_di_riferimento ~ funzione[(prezzo) + tendenza]

Il coefficiente della variabile prezzo verrà utilizzato come elasticità del prezzo. La variabile di tendenza viene utilizzata per tener conto dell’aumento delle vendite dovuto a una tendenza a lungo termine e non necessariamente a variazioni di prezzo. Discuteremo ulteriori dettagli sul calcolo delle elasticità nella sezione Elasticità del prezzo qui sotto.

3. Ottimizzazione non lineare entro limiti

In questo passo, otterremo la risposta a dove dovrebbe essere fermata la manopola.

Prima definiamo la nostra funzione obiettivo — massimizzare i profitti

Poi definiamo il punto di inizio e di fine del contatore del prezzo che definisce il LB e l’UB del prezzo

Abbiamo già calcolato le vendite di riferimento e le elasticità del prezzo che quantificano la sensibilità delle vendite al prezzo. Metteremo tutti questi input nella nostra funzione di ottimizzazione non lineare e otterremo il prezzo ottimizzato.

In parole molto semplici, l’algoritmo proverà diversi punti di prezzo entro i limiti e verificherà il valore della funzione obiettivo che nel nostro caso sono i profitti. Ci restituirà il punto di prezzo dove potrebbe ottenere il valore massimo per la nostra funzione obiettivo. (Nell’ottimizzazione lineare, visualizza come funziona la discesa del gradiente). Discuteremo ulteriori dettagli sul calcolo dei prezzi ottimizzati nella sezione Ottimizzazione qui sotto.

4. Regole aziendali

Quindi possiamo implementare direttamente i prezzi ottimizzati nei nostri negozi?

No, ma cosa rimane ora? Adempiere alle regole aziendali è uno dei requisiti più importanti per qualsiasi attività.

Ma di che tipo di regole stiamo parlando in termini di prezzi —

  1. Regole sul numero finale — È pratica comune fissare il prezzo del prodotto a $999 o $995 invece di $1000. Ci sono diverse ragioni psicologiche per farlo, quindi dobbiamo assicurarci che i nostri prezzi finali raccomandati rispettino tali regole se sono applicabili.
  2. Regole sul divario del prodotto — Puoi vendere il Maggi in un solo pacchetto a un prezzo più elevato per unità rispetto al Maggi in un pacchetto da 4? No, giusto. Spesso se le dimensioni del pacchetto aumentano, il costo per unità dovrebbe diminuire o almeno rimanere lo stesso.

Quindi, questi sono esempi di alcune delle regole aziendali che l’azienda desidera applicare. Faremo alcune operazioni di post-elaborazione sui prezzi ottimizzati per ottenere i prezzi finali raccomandati.

Ora che sei consapevole del processo generale, è tempo di approfondire maggiormente i dettagli e la codifica.

2. Modellazione dell’elasticità

In questa sezione, capiremo come utilizzare questo concetto per ottenere prezzi ottimizzati per migliaia di articoli in diversi negozi. Supponiamo di dover determinare l’elasticità del prezzo per un prodotto snack chiamato Yochips venduto in un negozio in California negli ultimi 3 anni. Vediamo innanzitutto la definizione di elasticità del prezzo:-

L’elasticità del prezzo è definita come la variazione percentuale delle vendite con una variazione del 1% del prezzo.

Ora potresti chiederti, quale algoritmo posso utilizzare per calcolare l’elasticità del prezzo di un prodotto come Yochips?

Analizziamo alcuni dettagli tratti dal libro di economia sul modello di elasticità del prezzo costante e vediamo se possiamo collegarlo a qualche algoritmo di data science.

La forma moltiplicativa della funzione della domanda sarà:-

Yi = α*Xi (dove y rappresenterà le vendite/domanda e x rappresenterà il prezzo)

Prendendo il logaritmo su entrambi i lati

log(Yᵢ) = log(α*Xᵢ^β)

log(Yᵢ) = log(α) + β*log(Xᵢ) ……….Eq(1)

log(α) può essere considerato come un intercetta come β₀

log(Yᵢ) = β₀ + β₁*log(Xᵢ) ………….Eq(2)

Ora prendendo la differenziazione su entrambi i lati, otteniamo

δY/Y = β₁*δX/X

Il termine sul lato sinistro rappresenta la variazione percentuale di Y che è la variazione percentuale delle vendite mentre il termine sul lato destro rappresenta la variazione percentuale del prezzo. Ora quando

variazione percentuale del prezzo = 1%; quindi δX/X = 1

δY/Y = β₁

Ciò significherebbe che la variazione percentuale delle vendite sarà β₁ e questa è la nostra elasticità.

Ora, se hai notato, l’Equazione 2 è un’Equazione di Regressione in cui il log delle vendite è regredito rispetto al log del prezzo e il coefficiente del log del prezzo sarà la nostra elasticità del prezzo.

Hurray! Ora sappiamo che calcolare l’elasticità è semplice come allenare un modello di regressione.

Ma c’è un altro problema. L’equazione della funzione della domanda ha alcune ipotesi e una delle ipotesi è che le vendite siano influenzate solo dal prezzo, ma questo non è generalmente il caso nel mondo reale perché di solito ci sono molti fattori che influenzano le vendite come promozioni, vacanze, eventi, ecc. Quindi quale è la soluzione, dobbiamo calcolare il componente delle vendite in cui possiamo rimuovere l’impatto di tutti questi eventi aggiuntivi.

Una cosa da chiarire è che le vendite di base si riferiscono alle unità vendute e non alle vendite in dollari. Quindi nell’equazione 2, dobbiamo regredire il prezzo sulle unità di base invece delle vendite effettive in unità. Ora la domanda è come possiamo ricavare le unità di base dalle unità di vendita effettive?

Capiamolo con un esempio. Qui sotto puoi vedere il grafico settimanale della serie temporale per le unità di vendita e i prezzi di vendita:-

Immagine di Autore

Riesci a vedere qualche pattern nel grafico sopra? È difficile dirlo perché ci sono troppe fluttuazioni nella serie delle unità di vendita. Queste fluttuazioni possono essere dovute a molti fattori come vacanze, promozioni, eventi, Coppa del Mondo FIFA, ecc. Per isolare l’effetto dei cambiamenti di prezzo, dobbiamo calcolare le vendite che escludono l’influenza di questi fattori aggiuntivi.

Utilizzando il modello di Prophet, possiamo scomporre la serie temporale ed estrarre il componente della tendenza che rappresenta le vendite di base. Applicando questa tecnica, separiamo l’impatto a lungo termine dei cambiamenti di prezzo da altri influssi a breve termine. Vediamo di cosa stiamo parlando:

Immagine di Autore

Nel grafico sopra, abbiamo scomposto il log originale delle unità di vendita (grigio) nelle unità di base del log (grafico della linea gialla)

Ecco un codice con cui puoi scomporre la serie temporale e ottenere il componente della tendenza che diventerà le vendite di base:

# Definizione degli inputtimestamp_var = "week_ending_sunday"baseline_dep_var = "ln_sales"changepoint_prior_scale_value = 0.3list_ind_vars_baseline = ['event_type_1_Cultural','event_type_1_National','event_type_1_Religious','event_type_1_Sporting']

# Preparazione del datasetclosetdf_item_store = df_item_store.rename(columns={timestamp_var: 'ds', baseline_dep_var: 'y'})df_item_store['ds'] = pd.to_datetime(df_item_store['ds'])# Inizializzazione e addestramento del modellomodel = Prophet(changepoint_prior_scale= changepoint_prior_scale_value) #Default changepoint_prior_scale = 0.05# Aggiunta delle variabili regressor al modelloper regressor in list_ind_vars_baseline:    model.add_regressor(regressor)model.fit(df_item_store)# Poiché stiamo solo decomponendo la serie temporale attuale, useremo gli stessi dati per la previsione che sono stati utilizzati per la modellizzazione# Effettuare previsioni ed estrarre il componente di livelloforecast = model.predict(df_item_store)level_component = forecast['trend']

Di seguito sono riportati gli input che dobbiamo definire:

  • changepoint_prior_scale_value — Questo controlla la fluidità della tendenza. Puoi leggere ulteriori informazioni al riguardo nella documentazione del modello Prophet.
  • list_ind_vars_baseline — Questi includono tutti gli eventi aggiuntivi che hanno influenzato le vendite, come alcuni festival, eventi sportivi, eventi culturali, ecc.

Ecco come changepoint_prior_scale_value influisce sulla tendenza. quando il valore è piccolo, porta a una linea quasi retta e quando il valore è alto, la tendenza è meno fluida.

Il codice è semplice, inizialmente rinominiamo la variabile “ln_sales” come “y” e la variabile “week” come “ds” per soddisfare i requisiti per l’utilizzo del modello Prophet. Successivamente, inizializziamo il modello Prophet, specificando il parametro “changepoint_prior_scale”. Successivamente, incorporiamo nel modello variabili aggiuntive per eventi e festività. Infine, generiamo previsioni utilizzando lo stesso set di dati su cui abbiamo addestrato il modello ed estratto il componente di tendenza.

Ottimo. Ora abbiamo la serie di unità di base e possiamo adattare un modello di regressione lineare tra le unità di base (che sono già su scala logaritmica perché abbiamo decomposto la serie di unità di base in logaritmi) e il logaritmo del prezzo. Di seguito è riportata l’equazione:-

log(unità di base) = intercetta + elasticità * log(prezzo)

Con l’equazione sopra, possiamo calcolare il valore dell’elasticità. In pratica, non tutte le serie sono adatte per la modellazione, quindi potresti aspettarti alcuni valori inaspettati di elasticità per vari articoli. Qual è la soluzione? Se riuscissimo in qualche modo a eseguire una regressione con vincoli sul valore di elasticità. Ma come possiamo implementarlo? Utilizzando una funzione di ottimizzazione.

Per qualsiasi ottimizzazione, ecco i requisiti di base:

  1. Una funzione obiettivo: questa è l’equazione che cerchiamo di minimizzare/massimizzare. Nel nostro caso, sarà la funzione di perdita che utilizziamo nella regressione lineare MSE (pred-actual => [intercetta + elasticità*ln_prezzo – attuale]²)
  2. I valori iniziali dei parametri che stiamo cercando di ottimizzare, nel nostro caso sono l’intercetta e l’elasticità. Questi possono essere inizialmente valori casuali.
  3. Limiti per i parametri, questi sono limiti minimi e massimi sia per l’intercetta che per l’elasticità
  4. Algoritmo di ottimizzazione: dipende dalla libreria, ma è possibile utilizzare i valori predefiniti e dovrebbero fornire i risultati corretti

Vediamo ora il codice:

# Preparazione della matrice da inserire nell'algoritmo di ottimizzazionex = df_item_store_modelx["intercept"] = 1x = x[["intercept","ln_sell_price","ln_base_sales"]].values.T# x_t = x.Tactuals = x[2]

from scipy.optimize import minimize# Definizione della funzione obiettivo da minimizzaredef objective(x0):    return sum(((x[0]*x0[0] + x[1]*x0[1]) - actuals)**2) # (intercetta*1 + elasticità*(ln_sell_price) -ln_base_sales)^2 # Definizione dell'ipotesi inizialex0 = [1, -1]# Definizione dei limiti per le variabilibounds = ((None, None), (-3,-0.5))# Utilizzo dell'algoritmo di ottimizzazione SLSQP per minimizzare la funzione obiettivorisultato = minimize(objective, x0, bounds=bounds, method='L-BFGS-B')# Stampare il risultato dell'ottimizzazionestampa(risultato)# Salvare l'elasticità del prezzo di un articolo nel dataframeprice_elasticity = risultato.x[1]df_item_store_model["price_elasticity"] = risultato.x[1]

Si noti che abbiamo definito il valore iniziale del parametro di intercetta come 1 e l’elasticità come -1. Non sono definiti limiti per l’intercetta, mentre sono definiti limiti di (-3,-0.5) per l’elasticità. Questa è la ragione principale per cui stiamo eseguendo la regressione attraverso la funzione di ottimizzazione. Dopo aver eseguito l’ottimizzazione, salviamo il valore del parametro ottimizzato dell’elasticità del prezzo. Evviva! abbiamo calcolato l’elasticità del prezzo!

Quindi i nostri Yochips nel negozio della California hanno un’elasticità del prezzo di -1,28.

Analizziamo anche l’elasticità del prezzo per altre serie:

Bassa elasticità del prezzo: Nessuna variazione significativa delle vendite con un aumento del prezzo. Di seguito è riportato un grafico per un articolo con un’elasticità del prezzo di -0,5

Immagine di Author

VoAGI Elasticità del prezzo: C’è una diminuzione moderata delle vendite con un aumento del prezzo. Di seguito è riportato un grafico per un articolo con un’elasticità del prezzo di -1,28

Immagine di Author

Alta elasticità del prezzo: C’è una forte diminuzione delle vendite con un aumento del prezzo. Di seguito è riportato un grafico per un articolo con un’elasticità del prezzo di -2,5

Immagine di Author

Utilizzando lo stesso approccio, possiamo calcolare l’elasticità del prezzo per tutti gli articoli. Nel prossimo articolo, esploreremo come possiamo utilizzare questi valori di elasticità per determinare i prezzi ottimizzati per ciascun articolo.

3. Ottimizzazione

Nella sezione precedente, avevamo già determinato l’elasticità del prezzo di Yochips per il nostro negozio della California. Ma questo non aiuta il responsabile del negozio, che vuole sapere come dovrebbe modificare il prezzo di Yochips per massimizzare il ricavo. In questo articolo, capiremo la metodologia per ottimizzare i prezzi.

Ma prima, ci sono alcune domande che dobbiamo fare al responsabile del negozio.

Q: C’è un limite sul cambiamento minimo e massimo del prezzo che dovrebbe essere considerato durante l’ottimizzazione dei prezzi?

Sulla base delle discussioni con il responsabile del negozio, abbiamo stabilito che la diminuzione del prezzo non dovrebbe superare il 20% e gli aumenti di prezzo dovrebbero essere limitati anche al 20%.

Il prezzo attuale per i Yochips è di $3,23 e ora sappiamo che il prezzo ottimizzato deve essere compreso tra $2,58 – $3,876. Ma come possiamo derivare un prezzo ottimizzato?

Ma come possiamo derivare un prezzo ottimizzato che massimizzi il ricavo? Facciamo un po’ di matematica:

Ricavo ottimizzato = Unità totali vendute * (Prezzo ottimizzato)

Dobbiamo ottimizzare il prezzo in modo da massimizzare il ricavo. Ma le unità totali vendute cambieranno anche con una variazione del prezzo. Riscriviamo l’equazione precedente e possiamo chiamare le unità totali vendute a un prezzo ottimizzato come unità ottimizzate:

Ricavo ottimizzato = Unità ottimizzate * (Prezzo ottimizzato)……………(eq1)

Sappiamo già che —

Elasticità = % variazione delle unità vendute / % variazione del prezzo

Quindi:

Unità ottimizzate = Unità di base + variazione delle unità a un prezzo ottimizzato

Qui, le unità di base si riferiscono alle vendite totali di unità al prezzo attuale che è di $2,58

Unità ottimizzate = (Unità di base + (Unità di base * elasticità del prezzo * (% variazione nel prezzo ottimizzato rispetto al prezzo normale) ………. (eq2)

Inseriamo l’eq2 nell’eq1

Ricavo ottimizzato = (Unità di base + (Unità di base * elasticità del prezzo * (% variazione del prezzo ottimizzato rispetto al prezzo normale) * (Prezzo ottimizzato) …….. (eq3)

Ricavo ottimizzato = (Unità di base + (Unità di base * elasticità del prezzo * [(Prezzo ottimizzato — Prezzo attuale)/ Prezzo attuale]* (Prezzo ottimizzato)…………..eq(4)

Di seguito sono riportati i parametri chiave nell’equazione di ottimizzazione (eq4):

Unità di base = Vendite medie dell’unità al prezzo corrente.

Elasticità del prezzo = valore calcolato per l’elasticità del prezzo dell’articolo

Prezzo corrente = Ultimo prezzo di vendita

Grande! Nella nostra equazione, a parte il prezzo ottimizzato, abbiamo i dati per tutte le altre variabili. Quale algoritmo possiamo utilizzare per calcolare un prezzo ottimizzato che massimizzi il ricavo? Possiamo semplicemente utilizzare l’algoritmo di ottimizzazione.

Cosa sono i componenti critici necessari per l’ottimizzazione:-

  1. La funzione obiettivo che deve essere minimizzata / massimizzata:- Abbiamo già definito la funzione obiettivo che consiste nel massimizzare il ricavo ottimizzato come definito in eq(4).
  2. Limiti: Come definito dal responsabile del negozio, il prezzo ottimizzato non deve cambiare di più del 20%. Quindi il Limite Inferiore = Prezzo Corrente (1–0.2) & Limite Superiore = Prezzo Corrente (1+0.2)
  3. Algoritmo di ottimizzazione: Utilizzeremo la libreria Scipy.optimize di Python per implementare l’ottimizzazione.

Diamo un’occhiata al codice:-

# Prendiamo la media degli ultimi 6 settimane delle vendite di base#--------------------------------------------------# Classificazione della colonna data df_item_store_optimization["rank"] = df_item_store_optimization["ds"].rank(ascending=False)# Sottinsieme delle ultime 6 settimane del database_sales_df = df_item_store_optimization.loc[df_item_store_optimization["rank"] <= 6].groupby("id")["base_sales"].mean().reset_index()df_item_store_optimization_input.rename(columns = {"base_sales":"base_units"}, inplace=True)# Derivazione del limite minimo e massimo per il sell_price#--------------------------------------------------# Creazione di UB e LB con un intervallo del 20%df_item_store_optimization_input["LB_price"] = df_item_store_optimization_input["sell_price"] - (0.2*df_item_store_optimization_input["sell_price"])df_item_store_optimization_input["UB_price"] = df_item_store_optimization_input["sell_price"] + (0.2*df_item_store_optimization_input["sell_price"])

Il codice sopra ci aiuta nella preparazione dei dati per l’ottimizzazione. Innanzitutto, stiamo calcolando le unità di base come media delle vendite di base (componente di tendenza della serie scomposta) per le ultime 6 settimane. Abbiamo già discusso la metodologia per calcolare le vendite di base nella sezione precedente.

Successivamente, stiamo definendo LB_price & UB_price diminuendo e aumentando rispettivamente del 20% dal prezzo di vendita attuale.

Definiamo ora il codice per effettuare l’ottimizzazione.

from scipy.optimize import minimize# Definiamo la funzione obiettivo da minimizzare def objective(opti_price):    df_item_store_optimization_input["opti_price"] = opti_price    df_item_store_optimization_input["optimized_units"] = df_item_store_optimization_input["base_units"] + (df_item_store_optimization_input["base_units"]*\                                                                                                        ((df_item_store_optimization_input["opti_price"]/df_item_store_optimization_input["sell_price"]) - 1)*\                                                                                                       (df_item_store_optimization_input["price_elasticity"]))        df_item_store_optimization_input["optimized_revenue"] = df_item_store_optimization_input["optimized_units"]*df_item_store_optimization_input["opti_price"]        return -sum(df_item_store_optimization_input["optimized_revenue"])# Definiamo l'ipotesi iniziale opti_price = df_item_store_optimization_input["sell_price"][0]# Definiamo i limiti per le variabili bounds = ((df_item_store_optimization_input["LB_price"][0], df_item_store_optimization_input["UB_price"][0]),)# # Utilizziamo l'algoritmo di ottimizzazione per minimizzare la funzione obiettivo result = minimize(objective, opti_price, bounds=bounds)# Stampiamo il risultato dell'ottimizzazione print(result)

Il codice sopra ci darà il prezzo ottimizzato. Puoi indovinare perché nella funzione obiettivo stiamo definendo ricavo ottimizzato negativo? Cosa è -(-1), è 1. Stiamo minimizzando la funzione obiettivo e utilizzando il segno negativo per il ricavo ottimizzato porterà alla massimizzazione del ricavo ottimizzato.

Inoltre, possiamo inizializzare la variabile opti_price con un qualsiasi valore casuale, solo per facilitare una rapida convergenza, la stiamo inizializzando con il prezzo di vendita attuale. Nei limiti, stiamo definendo LB & UB che abbiamo creato nel codice precedente.

Evviva! Abbiamo trovato il prezzo ottimizzato per Yochips e siamo pronti a propostarlo al responsabile del negozio in California.

Immagine dell'autore

La nostra raccomandazione sarà di abbassare i prezzi di Yochips del 10,2% a $2.9. Questo porterà a un massimo guadagno.

Questo è l’ultimo passo nell’approccio di ottimizzazione dei prezzi e l’approccio complessivo è così potente che può aiutarci a ottenere prezzi ottimizzati per ogni articolo in ogni negozio.

Una delle limitazioni dell’approccio sopra descritto riguarda gli articoli per i quali non abbiamo una sufficiente storia di variazioni di prezzo. In questo scenario, utilizziamo altre tecniche, ma se questa frazione di articoli è inferiore, allora si può utilizzare l’elasticità del prezzo medio a livello di categoria per tali articoli.

Speriamo che tu abbia apprezzato questo articolo!