Dynamic Pricing Interactive
Price Elasticity
Measure how betting volume responds to payout changes. Find the revenue-maximizing price point for each market segment.
๐ The Elasticity Formula
E = (% ฮ Volume) / (% ฮ Price)
- E = Price elasticity of demand
- E < -1 = Elastic (volume sensitive)
- E = -1 = Unit elastic
- E > -1 = Inelastic
In Betting Terms
If you increase payout from 1.9x to 2.0x (+5.3%), how much does volume change?
- โข Volume +10% โ E = -1.9 (elastic)
- โข Volume +5% โ E = -1.0 (unit)
- โข Volume +2% โ E = -0.4 (inelastic)
Market Parameters
1.5 2.5
5000 50000
-3 -0.3
๐ Current Metrics
Hold Rate 47.4%
Revenue $4737
Elasticity -1.5
๐ฏ Optimal Price
Optimal Payout 1.80x
Max Revenue $4795
Revenue Gain +1.2%
Volume vs Payout
Higher payouts attract more volume, but with diminishing returns.
Revenue vs Payout
Revenue peaks at optimal price. Too high = low margin, too low = low volume.
๐ Elasticity Interpretation
E < -1 Elastic
Volume very sensitive to price
Strategy: Raise prices cautiously, focus on volume
E = -1 Unit Elastic
Proportional response
Strategy: At the sweet spot
-1 < E < 0 Inelastic
Volume less sensitive
Strategy: Can raise prices, volume won't drop much
๐ Market Elasticity Examples
NFL Spreads
-0.8
Core product, loyal bettors
Player Props
-1.5
Entertainment, price sensitive
Parlays
-2.0
Discretionary, jackpot seekers
Live Betting
-1.2
Impulse, some price sensitivity
R Code Equivalent
# Price elasticity optimization
optimize_price <- function(base_price, base_volume, elasticity) {
prices <- seq(1.5, 2.5, by = 0.05)
results <- sapply(prices, function(p) {
price_change <- (p - base_price) / base_price
volume_change <- price_change * elasticity
volume <- base_volume * (1 + volume_change)
hold <- (1 - 1/p) * 100
revenue <- volume * hold / 100
return(revenue)
})
optimal_idx <- which.max(results)
list(
optimal_price = prices[optimal_idx],
max_revenue = results[optimal_idx],
prices = prices,
revenues = results
)
}
# Estimate elasticity from data
estimate_elasticity <- function(price_old, price_new, vol_old, vol_new) {
pct_price <- (price_new - price_old) / price_old
pct_volume <- (vol_new - vol_old) / vol_old
elasticity <- pct_volume / pct_price
return(elasticity)
}
# Example
result <- optimize_price(1.9, 10000, -1.5)
cat(sprintf("Optimal: %.2fx, Revenue: $%.0f\n",
result$optimal_price, result$max_revenue))โ Key Takeaways
- โข Elasticity measures volume sensitivity to price
- โข E < -1: volume very responsive (elastic)
- โข E > -1: volume less responsive (inelastic)
- โข Optimal price maximizes revenue, not hold
- โข Different markets have different elasticities
- โข A/B test to estimate elasticity empirically