Case Study · Quantitative Strategy

Pricing Under Uncertainty

A robust optimization framework for SaaS pricing when willingness-to-pay is unknown

3Customer segments
10K+Monte Carlo scenarios
CVaRDownside objective
RobustPrice bands, not point estimates

The Problem

  • Willingness-to-pay (WTP) distributions are unknown — no real transaction data at launch
  • Three distinct customer segments with different valuations and usage patterns
  • Standard approaches produce point-estimate prices that ignore downside risk
  • Behavioral frictions (inertia, switching costs, bundle complexity) distort purely rational models

The Solution

  • Monte Carlo simulation over uncertain WTP distributions
  • Robust optimization with downside-aware objectives (CVaR at 10th percentile)
  • Segment-aware bundle choice model with behavioral adjustments
  • Output: price bands that perform well under the worst plausible scenarios

Framework

From unknown WTP to defensible pricing recommendations.

INPUTS 3 Customer Segments WTP Distributions (uncertain) Tier Structures & Bundles Behavioral Frictions Retention Values SIMULATION ENGINE Monte Carlo Sampler 10K+ scenarios per config Bundle Choice Model Cost-minimizing + friction adj. Adoption Model Elasticity & WTP CDF Revenue Aggregation Per-segment, per-tier totals ROBUST OPTIMIZER Two-Stage Prefiltering Downside Objective CVaR @ 10th percentile Sensitivity Analysis Retention & elasticity sweeps Robust Price Bands Per-segment, per-tier

Market Structure

Three segments, three different value propositions.

SegmentProfileWillingness to PayKey Behavior
Casual BuyersPrivate individuals, 1–2 transactions/yearLowPrice-sensitive, high churn
Active InvestorsPortfolio managers, frequent transactionsMedium–HighValue-driven, retention-sensitive
Real Estate AgentsLicensed professionals, daily workflow toolMediumGeo-specific needs, pack-based

Methodology

What makes this more than a pricing spreadsheet.

Monte Carlo Simulation

Instead of assuming known WTP, we sample 10,000+ scenarios from plausible distributions. Each scenario produces a full revenue outcome — revealing the distribution of business results, not just the expected case.

Robust Optimization

The optimizer maximizes the 10th-percentile revenue (CVaR), not the average. This protects against poorly-performing scenarios and produces prices that hold up even when our assumptions are wrong.

Bundle Choice Model

Customers don't compare prices in isolation — they evaluate bundles, compute per-unit costs, and factor in switching friction. The model captures this with behavioral adjustments on top of the rational cost-minimizing framework.

Sensitivity Analysis

Every recommendation comes with retention-value sensitivity curves. A pricing decision that looks optimal at one churn rate may be dominated at another — we test across the full plausible range.

Results

Price bands that survive worst-case scenarios.

BandsNot point-estimate prices
CVaRDownside-protected objective
3 TiersEmergent tier structure
PacksFirst-class pricing primitive
Key FindingImplication
Middle tier emerges naturally from optimizerThree-tier structure is not imposed — it is a consequence of segment heterogeneity
Consumer packs dominate subscription at low WTPTransactional access captures revenue that subscriptions miss entirely
Pro tier weakly identified in early stagesLaunch with Basic + packs first; introduce Pro when usage data justifies it
Retention value shifts optimal pricing significantlyPricing policy must co-evolve with retention investment decisions

Sensitivity

How retention value reshapes optimal pricing.

Optimal Monthly Price ($) Agent Retention Value (cents per retained subscriber-month) $50 $40 $30 $20 $10 0 500 1000 1500 2000 Basic tier (robust band) Pro tier Higher retention value → lower optimal price → higher LTV-based revenue

Strategic Insights

What the optimizer revealed about market structure.

Consumer Packs as Pricing Primitive

For low-WTP segments, per-report packs ($5–$15 for 1–10 reports) capture revenue that monthly subscriptions miss entirely. The optimizer consistently favors mixed subscription + pack menus.

Geo Heterogeneity Without Discrimination

Different metro areas exhibit different WTP distributions. Rather than geo-discriminatory pricing, the framework tests whether a uniform menu performs adequately across regions — and finds it does within the robust band.

Robustness ≠ Conservatism

Robust optimization doesn't mean choosing the lowest price. It means choosing prices where the worst 10% of outcomes are still acceptable. Often this is near the expected-value optimum — not below it.

Pro Tier: Wait for Signal

The optimizer weakly identifies the Pro tier — revenue from it is dominated by Basic + packs at plausible WTP ranges. Launch recommendation: start with Basic + packs, introduce Pro only when usage data supports it.

Implementation

Working code, not slide decks.

pricing_simulator.pyMonte Carlo engine
optimize_pricing_grid.pyGrid search + robust obj.
Sensitivity sweepsRetention & elasticity
Price bandsPer-segment output
Simulation Optimization Decision output

Stack

Python 3.11 NumPy SciPy Monte Carlo Grid Search CVaR Objectives

Outputs

Price Bands Sensitivity Charts Revenue Distributions Segment Mix Tables

Key Insight

Most pricing decisions are made with spreadsheets and gut feel. This framework replaces intuition with a simulator that quantifies exactly how wrong you can afford to be — and still have a viable business.

Next Step

If your pricing strategy needs more rigor than a spreadsheet can provide, let's build the right framework.

Send a short note with your market, your pricing question, and the decision you need to make. That is enough to start a useful conversation.