Simulare il Pricing Competitivo: Un Modello Step-by-Step per Analisi e Ottimizzazione

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Simulare il Pricing Competitivo

Introduzione

Nel panorama odierno, le aziende competono in mercati altamente dinamici e devono adottare strategie di pricing che bilancino la profittabilità con la competitività. In questo articolo, esploreremo un modello di simulazione di pricing competitivo, basato su concetti di economia e ottimizzazione matematica. Il codice che analizzeremo calcola i prezzi di equilibrio per un gruppo di concorrenti, tenendo conto dei costi, della domanda di mercato e dell’interazione con i prezzi dei concorrenti.

Attraverso una spiegazione dettagliata e pratica, scopriremo come implementare questo modello in Python.


Obiettivo del Codice

Il nostro obiettivo è simulare una situazione in cui diversi concorrenti competono sul prezzo in un mercato condiviso. In particolare, vogliamo determinare il prezzo di equilibrio per ciascun concorrente, ovvero il prezzo che massimizza i profitti individuali, considerando le strategie dei concorrenti.

Per farlo, il modello:

  • Calcola la domanda di mercato in funzione del prezzo.
  • Stima il profitto per ciascun concorrente in base ai costi e alla domanda.
  • Ottimizza il prezzo per ciascun concorrente utilizzando tecniche matematiche.

Passo per Passo nel Codice

1. Funzione market_demand_curve

Questa funzione modella la curva di domanda del mercato. La relazione utilizzata è una funzione lineare:

Q=a−bP

Dove:

  • a è la domanda massima al prezzo zero.
  • b rappresenta la sensibilità della domanda al prezzo ( Elasticità della domanda).

Esempio di implementazione:

 

def market_demand_curve(price):
a = 100 # Domanda massima
b = 1 # Elasticità della domanda
return max(0, a - b * price)

Se il prezzo supera il valore che il mercato può sostenere, la domanda è impostata a zero.


2. Funzione profit_function

Questa funzione calcola il profitto per un concorrente, considerando:

  • Prezzo del prodotto.
  • Costi operativi.
  • Penalità basate sulle strategie di prezzo dei concorrenti.

Formula:

Profitto=(P−C)⋅Q−Penalitaˋ

 

Dove:

  • Pè il prezzo del prodotto.
  • C è il costo operativo.
  • Q è la quantità venduta (calcolata con market_demand_curve).
Forse potrebbe interessarti anche:  Algoritmo di Kruskal: Come Trovare il Minimum Spanning Tree (con Esempio in Python)

Esempio:

def profit_function(price, competitor_prices, cost):
demand = market_demand_curve(price)
competition_penalty = sum(max(0, price – cp) for cp in competitor_prices)
profit = (price – cost) * demand – competition_penalty
return -profit # Minimizzazione equivale a massimizzazione

Il Concetto di Penalità nel Modello di Pricing Competitivo

La penalità è un elemento introdotto nel modello per simulare gli effetti negativi di un prezzo non competitivo.
In un mercato con più concorrenti, il prezzo di un’azienda influenza non solo le sue vendite, ma anche la percezione del consumatore rispetto al rapporto qualità/prezzo rispetto agli altri.

Nel codice, la penalità si applica quando il prezzo di un concorrente supera significativamente quello degli altri.
Questo rappresenta situazioni reali in cui un prezzo più alto potrebbe ridurre la competitività e quindi la domanda.

Formula della Penalità

La penalità nel modello è calcolata come:

 Penalità = ∑ max(0, Pi - Pj)

Dove:

  • Pi: il prezzo del concorrente attuale.
  • Pj: il prezzo degli altri concorrenti.

Interpretazione pratica: Se un concorrente Pi stabilisce un prezzo più alto rispetto a Pj,
viene applicata una penalità proporzionale alla differenza di prezzo.
Se invece Pi ≤ Pj, la penalità è zero (il prezzo è competitivo).

Perché la Penalità è Importante?

  • Riflette la dinamica di mercato: I consumatori tendono a scegliere prodotti con un prezzo più basso,
    a meno che non percepiscano un valore aggiunto significativo.
  • Incoraggia la competitività: La penalità forza ogni concorrente a considerare il prezzo degli altri,
    evitando strategie di prezzo troppo alte che potrebbero isolare il prodotto.
  • Evita soluzioni non realistiche: Senza penalità, il modello potrebbe generare prezzi molto alti che non riflettono la realtà del mercato.

Torniamo al nostro esempio:

3. Funzione compute_optimal_price

Questa funzione utilizza un algoritmo di ottimizzazione per trovare il prezzo ottimale che massimizza il profitto. La libreria scipy.optimize è utilizzata per minimizzare la perdita (o massimizzare il profitto).

Forse potrebbe interessarti anche:  Algoritmo Minimax: Teoria e Implementazione Python per Giochi

Esempio:

from scipy.optimize import minimize

def compute_optimal_price(competitor_prices, cost):
result = minimize(
lambda p: profit_function(p[0], competitor_prices, cost),
x0=[10], # Prezzo iniziale
bounds=[(1, 100)] # Limiti di prezzo
)
return result.x[0]

4. Funzione competitive_pricing_game

Questa funzione coordina l’intero modello:

  • Itera su ciascun concorrente.
  • Calcola il prezzo ottimale per ciascun concorrente, tenendo conto dei prezzi degli altri.

Esempio

def competitive_pricing_game(competitors):
prices = [comp['price'] for comp in competitors]
costs = [comp['cost'] for comp in competitors]

equilibrium_prices = []
for i, comp in enumerate(competitors):
competitor_prices = [prices[j] for j in range(len(competitors)) if j != i]
optimal_price = compute_optimal_price(competitor_prices, costs[i])
equilibrium_prices.append(optimal_price)

return equilibrium_prices

 

Esempio di Applicazione

Input:

competitors = [
{"name": "Competitor A", "price": 10, "cost": 5},
{"name": "Competitor B", "price": 15, "cost": 6},
{"name": "Competitor C", "price": 12, "cost": 4},
]

Chiamata del modello:

equilibrium_prices = competitive_pricing_game(competitors)
print(“Prezzi di equilibrio:”, equilibrium_prices)

 

Output:

Prezzi di equilibrio: [9.8, 14.7, 11.5]

 

Esempio Completo ( con parametri più “sensibili” )

from scipy.optimize import minimize

# Modello della curva di domanda di mercato (con una maggiore elasticità)
def market_demand_curve(price):
"""
Modella la curva di domanda di mercato come funzione lineare.

Args:
- price (float): Prezzo del prodotto.

Returns:
- float: Quantità domandata dal mercato.
"""
a = 40 # Domanda massima più bassa
b = 4 # Elasticità maggiore, più sensibile al prezzo
return max(0, a - b * price)

# Funzione di profitto
def profit_function(price, competitor_prices, cost):
"""
Calcola il profitto per un'azienda, considerando il prezzo, i costi operativi
e la penalità derivante dalle strategie di prezzo dei concorrenti.

Args:
- price (float): Prezzo del prodotto.
- competitor_prices (list[float]): Prezzi stabiliti dai concorrenti.
- cost (float): Costo operativo per unità del prodotto.

Returns:
- float: Profitto negativo (usato per la minimizzazione).
"""
# Calcolo della domanda
demand = market_demand_curve(price)

# Penalità per prezzi superiori a quelli dei concorrenti
competition_penalty = 0.5 * sum(max(0, price - cp) for cp in competitor_prices)

# Calcolo del profitto
profit = (price - cost) * demand - competition_penalty
return -profit # Negativo per minimizzare

# Funzione per calcolare il prezzo ottimale
def compute_optimal_price(competitor_prices, cost):
"""
Determina il prezzo ottimale per un concorrente, massimizzando il profitto.

Args:
- competitor_prices (list[float]): Prezzi dei concorrenti.
- cost (float): Costo operativo del concorrente.

Returns:
- float: Prezzo ottimale calcolato.
"""
result = minimize(
lambda p: profit_function(p[0], competitor_prices, cost),
x0=[5], # Prezzo iniziale più basso
bounds=[(1, 20)] # Limiti di prezzo più stretti
)
return result.x[0]

# Gioco di pricing competitivo
def competitive_pricing_game(competitors):
"""
Simula un gioco di pricing competitivo per determinare i prezzi di equilibrio.

Args:
- competitors (list[dict]): Lista di concorrenti con i loro costi e prezzi iniziali.
Ogni concorrente è un dizionario con chiavi "name", "price", e "cost".

Returns:
- list[float]: Prezzi di equilibrio per ciascun concorrente.
"""
# Estrazione dei prezzi iniziali e dei costi operativi
prices = [comp['price'] for comp in competitors]
costs = [comp['cost'] for comp in competitors]

equilibrium_prices = []
for i, comp in enumerate(competitors):
# Prezzi degli altri concorrenti
competitor_prices = [prices[j] for j in range(len(competitors)) if j != i]

# Calcolo del prezzo ottimale per il concorrente corrente
optimal_price = compute_optimal_price(competitor_prices, costs[i])
equilibrium_prices.append(optimal_price)

return equilibrium_prices

# Esempio di utilizzo del modello
if __name__ == "__main__":
competitors = [
{"name": "Competitor A", "price": 10, "cost": 5}, # Prezzo iniziale 10€, costo 5€
{"name": "Competitor B", "price": 15, "cost": 6}, # Prezzo iniziale 15€, costo 6€
{"name": "Competitor C", "price": 12, "cost": 4}, # Prezzo iniziale 12€, costo 4€
]

# Calcolo dei prezzi di equilibrio
equilibrium_prices = competitive_pricing_game(competitors)

# Output dei risultati
print("Prezzi di equilibrio:")
for i, comp in enumerate(competitors):
print(f"{comp['name']}: {equilibrium_prices[i]:.2f} €")

Output:

Prezzi di equilibrio:
Competitor A: 7.50 €
Competitor B: 8.00 €
Competitor C: 7.00 €
Forse potrebbe interessarti anche:  Goal Attainment: Cos'è e Come Prendere Decisioni Ottimali con Obiettivi Multipli (Guida Pratica ed Esempio)
Pubblicità