Multi-Product Pricing

Optimizing across substitutes and complements

Retail / CPG / E-commerceIntermediate

Multi-Product Price Optimization

When a firm sells multiple products whose demands are linked through cross-price elasticities, optimizing each price in isolation ignores the profit impact of substitution and complementarity. Joint optimization over the full portfolio recovers this lost profit.

The Multi-Product Problem

Most firms sell more than one product. A grocery retailer manages thousands of SKUs; a SaaS company offers several subscription tiers; an airline prices dozens of origin–destination pairs on overlapping routes. In each case, the demand for one product depends not only on its own price but also on the prices of related products in the portfolio.

If the firm optimizes each product’s price independently—treating every SKU as a standalone optimization problem—it ignores the profit consequences of cross-product demand shifts. Setting a low price on Product A may cannibalize sales of the higher-margin Product B. Conversely, raising the price of Product A may push customers toward a complement whose margin the firm also captures. The single-product framework from basic price optimization has no mechanism to account for these spillovers.

The multi-product pricing problem corrects this by jointly choosing a price vector p=(p1,p2,,pn)\mathbf{p} = (p_1, p_2, \ldots, p_n) that maximizes total portfolio profit. The solution differs from the collection of independent optima whenever cross-price effects are nonzero, and the magnitude of the difference grows with the strength of the cross-elasticities.

Cross-Price Effects

Linear Demand with Cross-Price Terms

Consider a two-product firm. Demand for each product is a linear function of both prices:

di(p)=aibipi+jidijpj,i=1,2d_i(\mathbf{p}) = a_i - b_i \, p_i + \sum_{j \neq i} d_{ij} \, p_j, \quad i = 1, 2
(1)

Here ai>0a_i > 0 is the base demand for product ii, bi>0b_i > 0 is the own-price slope, and dijd_{ij} is the cross-price coefficient measuring how the price of product jj affects demand for product ii.

Definition — Cross-Price Elasticity

The cross-price elasticity of product ii with respect to the price of product jj is:

εij=dipjpjdi\varepsilon_{ij} = \frac{\partial d_i}{\partial p_j} \cdot \frac{p_j}{d_i}

In the linear model, di/pj=dij\partial d_i / \partial p_j = d_{ij}. The sign of dijd_{ij} determines the relationship:

  • dij>0d_{ij} > 0: products ii and jj are substitutes. Raising the price of jj diverts demand to ii.
  • dij<0d_{ij} < 0: the products are complements. Raising the price of jj depresses demand for both.
  • dij=0d_{ij} = 0: demands are independent, and joint optimization reduces to separate single-product problems.

In practice, cross-price effects arise from consumer substitution behavior. A customer choosing between two variants of a product—say a standard and a premium tier—shifts demand from one to the other as relative prices change. Formal models of this substitution behavior, including logit and nested logit, are covered in the choice models literature (Talluri and van Ryzin (2004)). The linear specification in Eq. 1 is a useful first approximation that admits closed-form results.

Substitutes versus Complements

The distinction between substitutes and complements has a direct pricing implication. For substitutes, the independent optimum sets each price too low: because it ignores the fact that raising pip_i diverts demand to product jj (whose margin the firm also captures), the independent solution underprices both products. For complements, the opposite holds: the independent optimum overprices each product because it ignores that a price reduction on one product stimulates demand for the other.

Joint Optimality Conditions

The Portfolio Profit Function

The firm maximizes total contribution across both products:

Π(p)=i=1n(pici)di(p)\Pi(\mathbf{p}) = \sum_{i=1}^{n} (p_i - c_i) \, d_i(\mathbf{p})
(2)

where cic_i is the unit cost of product ii. For the two-product linear case, expanding this expression produces a jointly concave quadratic in (p1,p2)(p_1, p_2) (provided the own-price effects dominate the cross-price effects, which holds whenever bi>dijb_i > |d_{ij}| for each product).

First-Order Conditions

Taking the partial derivative of Π\Pi with respect to pip_i and setting it to zero yields:

Πpi=di(p)+(pici)dipi+ji(pjcj)djpiVi(p)=0\frac{\partial \Pi}{\partial p_i} = d_i(\mathbf{p}^*) + (p_i^* - c_i) \cdot \frac{\partial d_i}{\partial p_i} + \underbrace{\sum_{j \neq i} (p_j^* - c_j) \cdot \frac{\partial d_j}{\partial p_i}}_{V_i(\mathbf{p}^*)} = 0
(3)

The first two terms are identical to the single-product first-order condition: demand at the optimal price plus the margin times the own-price demand slope. The third term, Vi(p)V_i(\mathbf{p}^*), is new. It captures the cross-product profit effect—the change in profit on all other products caused by a marginal increase in pip_i.

Definition — Cross-Product Effect

The cross-product effect for product ii at prices p\mathbf{p}^* is:

Vi(p)=jidjpi(pjcj)V_i(\mathbf{p}^*) = \sum_{j \neq i} \frac{\partial d_j}{\partial p_i} \cdot (p_j^* - c_j)

When products are substitutes (dj/pi>0\partial d_j / \partial p_i > 0), raising pip_i increases demand for product jj, so Vi>0V_i > 0 whenever pj>cjp_j^* > c_j. When products are complements (dj/pi<0\partial d_j / \partial p_i < 0), Vi<0V_i < 0.

The Modified Pricing Rule

Rearranging the first-order condition (Eq. 3) and dividing by did_i gives a modified inverse-elasticity rule that accounts for cross-product spillovers (Phillips (2021)):

Joint Optimality Condition

At the jointly optimal prices p\mathbf{p}^*, each product’s price satisfies:

pi=ci+di(p)biVi(p)bip_i^* = c_i + \frac{d_i(\mathbf{p}^*)}{b_i} - \frac{V_i(\mathbf{p}^*)}{b_i}

Compared with the independent optimum piind=ci+di/bip_i^{\text{ind}} = c_i + d_i / b_i, the joint optimum shifts the price by Vi/bi-V_i / b_i. For substitutes where Vi>0V_i > 0, the joint optimum is lower than the independent margin formula might suggest but still higher than the independent optimum because the joint solution accounts for how the raised price on one product boosts demand on the other, effectively raising the demand intercepts that feed into the formula.

Closed-Form Solution (Two Products)

For the symmetric two-product case with linear demand (Eq. 1), the first-order conditions form a 2×22 \times 2 linear system. Solving it yields explicit formulas for the joint optimal prices as a function of the demand parameters and costs. The key structural result is that the joint optimal prices satisfy (Phillips (2021)):

pi=ai+bicidjicj2biγ+cross termsp_i^* = \frac{a_i + b_i c_i - d_{ji} c_j}{2b_i - \gamma} + \text{cross terms}
(4)

where γ=d12+d21\gamma = d_{12} + d_{21} aggregates the total cross-price effect. As γ0\gamma \to 0, the formula collapses to the independent solution pi=(ai+bici)/(2bi)p_i^* = (a_i + b_i c_i) / (2 b_i).

Two Substitutes

Consider two products with symmetric parameters: a1=a2=100a_1 = a_2 = 100, b1=b2=2b_1 = b_2 = 2, c1=c2=5c_1 = c_2 = 5, and cross-price coefficient d12=d21=0.3d_{12} = d_{21} = 0.3.

  • Independent optimum: piind=(100+2×5)/(2×2)=$27.50p_i^{\text{ind}} = (100 + 2 \times 5) / (2 \times 2) = \$27.50 each. Total profit: Πind=2×(27.505)(1002×27.50+0.3×27.50)=$2,296\Pi^{\text{ind}} = 2 \times (27.50 - 5)(100 - 2 \times 27.50 + 0.3 \times 27.50) = \$2{,}296.
  • Joint optimum: The system of first-order conditions yields pi$28.24p_i^* \approx \$28.24 each. Total profit: Π$2,306\Pi^* \approx \$2{,}306.
  • Profit gap: approximately $10\$10, or 0.4% of total profit. The joint prices are higher than the independent prices because the firm internalizes the substitution effect—raising both prices simultaneously loses fewer total units than raising either price alone.

Use the interactive heatmap below to verify these numbers and observe how the gap widens as the cross-elasticity increases.

Independent vs. Joint Optimization

The heatmap below displays the total profit surface Π(p1,p2)\Pi(p_1, p_2) over the feasible price region for a two-product portfolio with linear demand. Two markers show the independently optimal prices (star) and the jointly optimal prices (diamond). Adjust the cross-elasticity slider to observe how the gap between the two widens as the cross-price coefficient grows.

The heatmap shows joint profit Π(p1,p2)\Pi(p_1, p_2) over the price grid. Contour lines trace iso-profit curves. The diamond marks the joint optimum; the star marks the independent optima. The metric cards report the profit gap between the two solutions.

Reading the Visualization

Several patterns are visible in the heatmap:

  • Zero cross-elasticity. When d12=d21=0d_{12} = d_{21} = 0, the diamond and star coincide. The iso-profit contours are axis-aligned ellipses, confirming that the two products can be optimized separately.
  • Positive cross-elasticity (substitutes). The diamond shifts to higher prices than the star along both axes. The profit gap grows quadratically in the cross-price coefficient. At strong substitution levels (d1.0d \geq 1.0), the gap can exceed several percent of total profit.
  • Negative cross-elasticity (complements). The diamond shifts to lower prices than the star. The firm internalizes the demand-boosting effect of a price cut on the complementary product.
  • Asymmetric costs. Raise the cost of one product and observe that the joint optimum adjusts the price of both products—not just the one whose cost changed. The cross-product effect means that a cost shock in one product propagates through the portfolio.

Practical Implications

When the Gap Is Large

The profit difference between independent and joint optimization is largest when:

  • Cross-elasticities are high. Product lines with strong substitution (e.g., adjacent tiers, similar SKUs differing only in size or flavor) have the largest gaps. Dobson and Kalish (1988) show that product line positioning and pricing must be solved jointly to avoid cannibalization.
  • Margins differ across products. When a low-margin product substitutes against a high-margin product, independent pricing underprices the low-margin product, accelerating cannibalization of the profitable one.
  • The portfolio is small. With two or three products, each cross-price effect is a large fraction of total demand. In portfolios with hundreds of SKUs, any single cross-price effect is diluted, though aggregate cannibalization can still be substantial.

When Independent Pricing Suffices

If cross-price elasticities are near zero—because products serve distinct customer segments or operate in unrelated categories—the independent optimum is a close approximation to the joint optimum. The computational simplicity of solving nn independent one-dimensional problems rather than one nn-dimensional problem can be a practical advantage for large assortments.

Bundling and Product Line Design

Multi-product pricing extends naturally to bundling decisions. Hanson and Martin (1990) show that the optimal bundle price depends on the joint distribution of valuations across products and can be formulated as a mixed-integer programming problem. When components are complements, bundling at a discount can increase total profit by stimulating demand for the entire set. When components are substitutes, bundling is less attractive because customers who want only one product are forced to pay for unwanted items.

Computational Considerations

For the linear demand model, the joint optimality conditions reduce to a system of nn linear equations in nn unknowns and can be solved exactly. For nonlinear demand models such as logit or nested logit, the first-order conditions are nonlinear and require iterative methods—gradient descent, Newton’s method, or expectation–maximization. The revenue management literature provides efficient algorithms for these settings (Talluri and van Ryzin (2004)). The general structure of the problem—maximizing a concave function over a convex feasible set—guarantees that any local optimum is also a global optimum, provided the own-price effects dominate the cross-price effects.

References

  • Dobson, G. & Kalish, S. (1988). “Positioning and Pricing a Product Line.” Marketing Science, 7(2), 107–125.
  • Hanson, W. & Martin, R. K. (1990). “Optimal Bundle Pricing.” Management Science, 36(2), 155–174.
  • Phillips, R. L. (2021). Pricing and Revenue Optimization, 2nd ed.. Stanford University Press.