Monopoly
The setup
In a competitive market, firms are “not special” — they’re price takers, they earn zero economic profits in the long run, and nobody enjoys any market power. This lecture is about what happens when a firm is special: the only seller in its market, with no immediate threat of entry. The firm benefits from this position. Consumers, as we’ll see, pay for it. The interesting question is whether the firm’s gain outweighs the consumers’ loss. (Short answer: no, it doesn’t — that’s the welfare story.)
What makes a market monopolized?
Pure monopolies don’t fall from the sky. The reasons one firm ends up alone in a market are usually one of these:
- A legal grant that gives a firm exclusive rights in a market.
- Patents, which create a time-limited monopoly on the protected invention.
- Sole ownership of a critical resource, where one firm controls something its potential competitors can’t replicate.
- A cartel — formerly-competing firms colluding to act as a single seller.
- Large economies of scale, where average cost falls so much with output that one firm can supply the whole market more cheaply than several smaller firms could. This case is called a natural monopoly and we’ll come back to it.
For most of what follows we’ll just assume the monopoly exists, however it got there, and won’t be threatened by a new entrant. That lets us focus on the firm’s decision problem.
The defining feature
In a competitive market the firm is one of many sellers, each so small that its choice of output level doesn’t move the market price. Marginal revenue equals the price: sell one more unit, gain exactly \(p\) in revenue.
A monopolist is in a different situation. She faces the full downward-sloping market demand curve. When she sells more, the price falls — not just on the new unit, but on every unit she’s already selling. So her revenue from selling one more unit is the price of that marginal unit minus the lost revenue on every infra-marginal unit. For a monopolist, marginal revenue is less than price, and at high enough output levels marginal revenue can even be negative.
The math
The monopolist chooses output \(y\) to maximize profit: \[ \Pi(y) \;=\; \underbrace{p(y) \cdot y}_{R(y) \text{ — revenue}} \;-\; \underbrace{c(y)}_{\text{cost}}. \] The key difference from competitive theory is that \(p\) now depends on \(y\). Differentiate and set to zero: \[ \frac{d\Pi}{dy} = \frac{d(p(y) y)}{dy} - \frac{dc(y)}{dy} = 0 \;\;\Longrightarrow\;\; \boxed{MR(y^*) = MC(y^*).} \] Marginal revenue equals marginal cost at the profit-maximizing quantity. Same rule as for a competitive firm — but here \(MR \neq p\).
Expanding the derivative: \[ MR(y) = \frac{d}{dy}\bigl(p(y) y\bigr) = p(y) + y \cdot \frac{dp(y)}{dy}. \] Two effects when output rises by one unit:
- Direct effect. Revenue goes up by the price of that extra unit, \(p(y)\).
- Price effect. To sell the extra unit the price had to fall (since \(dp/dy < 0\)), which means revenue from every infra-marginal unit goes down. The firm loses \(y \cdot dp/dy\) on the units it was already selling.
Since \(dp/dy < 0\), the price effect is negative and \(MR(y) < p(y)\) for any \(y > 0\).
For a price-taking competitive firm, \(dp/dy = 0\), the price effect vanishes, and \(MR = p\). That’s the only thing that’s different.
Worked example: linear demand and quadratic cost
Take inverse demand \(p(y) = a - by\) and cost \(c(y) = F + \alpha y + \beta y^2\). Marginal revenue and marginal cost are then \[ MR(y) = a - 2by, \qquad MC(y) = \alpha + 2\beta y. \] The MR curve has the same intercept as demand but twice the slope — a useful fact to memorize. Setting \(MR = MC\): \[ a - 2 b y^* = \alpha + 2 \beta y^* \;\;\Longrightarrow\;\; \boxed{\; y^* \;=\; \frac{a - \alpha}{2(b + \beta)}, \qquad p^* = a - b y^*. \;} \] A clean closed form to compare against the competitive benchmark, which we’ll derive next.
#| standalone: true
#| viewerHeight: 660
library(shiny)
ui <- fluidPage(
titlePanel("Monopoly vs. Competition"),
sidebarLayout(
sidebarPanel(
width = 4,
sliderInput("a", "Demand intercept (a):",
min = 50, max = 200, value = 100, step = 10),
sliderInput("b", "Demand slope (b):",
min = 0.5, max = 5, value = 1.5, step = 0.1),
sliderInput("alpha", "MC intercept (α):",
min = 0, max = 80, value = 20, step = 5),
sliderInput("beta", "MC slope (β):",
min = 0, max = 2, value = 0, step = 0.1),
hr(),
checkboxInput("show_comp", "Show competitive (efficient) outcome", value = TRUE),
checkboxInput("show_dwl", "Shade deadweight loss", value = TRUE),
htmlOutput("readout")
),
mainPanel(
width = 8,
plotOutput("monop_plot", height = "520px")
)
)
)
server <- function(input, output, session) {
results <- reactive({
a <- input$a; b <- input$b; al <- input$alpha; be <- input$beta
q_mon <- (a - al) / (2 * (b + be))
p_mon <- a - b * q_mon
mc_mon <- al + 2 * be * q_mon
# Efficient: p(y) = MC(y) => a - by = alpha + 2 beta y => y_e = (a-alpha)/(b+2beta)
q_eff <- (a - al) / (b + 2 * be)
p_eff <- a - b * q_eff
cs_mon <- 0.5 * (a - p_mon) * q_mon
cs_eff <- 0.5 * (a - p_eff) * q_eff
# DWL: triangle between demand and MC from q_mon to q_eff
dwl <- 0.5 * (q_eff - q_mon) * (p_mon - mc_mon)
profit <- p_mon * q_mon - (input$alpha * q_mon + input$beta * q_mon^2)
list(a = a, b = b, al = al, be = be,
q_mon = q_mon, p_mon = p_mon, mc_mon = mc_mon,
q_eff = q_eff, p_eff = p_eff,
cs_mon = cs_mon, cs_eff = cs_eff, dwl = dwl, profit = profit)
})
output$monop_plot <- renderPlot({
r <- results()
q_seq <- seq(0, r$a / r$b, length.out = 400)
p_d <- r$a - r$b * q_seq
p_mr <- r$a - 2 * r$b * q_seq
p_mr[p_mr < 0] <- NA
p_mc <- r$al + 2 * r$be * q_seq
xmax <- r$a / r$b
ymax <- r$a * 1.05
par(mar = c(4.2, 4.5, 1, 1))
plot(NA, xlim = c(0, xmax), ylim = c(0, ymax),
xlab = "Quantity (y)", ylab = "Price (p)", main = "")
# MC
lines(q_seq, p_mc, col = "#7f8c8d", lwd = 2, lty = 2)
text(xmax * 0.95, r$al + 2 * r$be * xmax * 0.95, "MC", pos = 3, col = "#7f8c8d", cex = 0.95)
# Demand and MR
lines(q_seq, p_d, col = "#185FA5", lwd = 2.5)
lines(q_seq, p_mr, col = "#c0392b", lwd = 2, lty = 2)
text(q_seq[10], p_d[10], "Demand", pos = 4, col = "#185FA5", cex = 0.95)
text(q_seq[10], p_mr[10], "MR", pos = 4, col = "#c0392b", cex = 0.95)
# DWL triangle
if (isTRUE(input$show_dwl)) {
polygon(c(r$q_mon, r$q_eff, r$q_mon),
c(r$p_mon, r$p_eff, r$mc_mon),
col = adjustcolor("#e67e22", 0.30), border = NA)
text(mean(c(r$q_mon, r$q_eff)),
(r$p_mon + r$mc_mon) / 2,
"DWL", col = "#a04000", cex = 0.95, font = 2)
}
# Monopoly outcome
segments(r$q_mon, 0, r$q_mon, r$p_mon, col = "#27ae60", lwd = 1.5, lty = 3)
segments(0, r$p_mon, r$q_mon, r$p_mon, col = "#27ae60", lwd = 1.5, lty = 3)
points(r$q_mon, r$p_mon, pch = 19, col = "#27ae60", cex = 1.7)
text(r$q_mon, r$p_mon, sprintf(" (%.1f, %.1f)", r$q_mon, r$p_mon),
pos = 4, col = "#27ae60", cex = 0.95)
# Competitive (efficient) outcome
if (isTRUE(input$show_comp)) {
points(r$q_eff, r$p_eff, pch = 19, col = "#8e44ad", cex = 1.6)
text(r$q_eff, r$p_eff, sprintf(" (%.1f, %.1f)", r$q_eff, r$p_eff),
pos = 4, col = "#8e44ad", cex = 0.95)
}
legend("topright",
legend = c("Demand", "MR", "MC",
"Monopoly (y*, p*)",
if (isTRUE(input$show_comp)) "Efficient (yᵉ, p(yᵉ))" else NULL,
if (isTRUE(input$show_dwl)) "Deadweight loss" else NULL),
col = c("#185FA5", "#c0392b", "#7f8c8d", "#27ae60",
if (isTRUE(input$show_comp)) "#8e44ad" else NULL,
if (isTRUE(input$show_dwl)) adjustcolor("#e67e22", 0.5) else NULL),
lwd = c(2.5, 2, 2, NA,
if (isTRUE(input$show_comp)) NA else NULL,
if (isTRUE(input$show_dwl)) NA else NULL),
lty = c(1, 2, 2, NA,
if (isTRUE(input$show_comp)) NA else NULL,
if (isTRUE(input$show_dwl)) NA else NULL),
pch = c(NA, NA, NA, 19,
if (isTRUE(input$show_comp)) 19 else NULL,
if (isTRUE(input$show_dwl)) 15 else NULL),
bty = "n", cex = 0.85)
})
output$readout <- renderUI({
r <- results()
HTML(sprintf(paste(
"<div style='margin-top:10px;font-size:13px;line-height:1.7;'>",
"<b>Monopoly:</b> y* = %.1f, p* = %.1f, profit ≈ %.1f<br>",
"<b>Efficient (p = MC):</b> yᵉ = %.1f, p(yᵉ) = %.1f<br>",
"<b>Consumer surplus (monopoly):</b> %.1f<br>",
"<b>Consumer surplus (efficient):</b> %.1f<br>",
"<b>Deadweight loss:</b> <span style='color:#a04000;font-weight:bold;'>%.2f</span>",
"</div>"
),
r$q_mon, r$p_mon, r$profit,
r$q_eff, r$p_eff,
r$cs_mon, r$cs_eff, r$dwl))
})
}
shinyApp(ui, server)
Why monopoly is inefficient: the welfare argument
Take any monopoly outcome \((y^*, p^*)\) where \(MR(y^*) = MC(y^*) < p(y^*)\). Consider the would-be \((y^* + 1)\)-th unit. The marginal consumer is willing to pay \(p(y^* + 1)\), which is just under \(p(y^*)\). The cost of producing it is \(MC(y^* + 1)\), which is approximately \(MC(y^*) < p(y^*)\). So there’s a unit that could be produced, that the consumer would happily buy at a price between cost and willingness-to-pay, and that the monopolist refuses to produce. Both the buyer and the seller would be better off if that trade happened. The market isn’t taking advantage of all the gains from trade.
That’s the definition of Pareto inefficiency. The monopolist’s choice to constrict supply leaves gains-to-trade on the table.
Geometrically, the deadweight loss is the triangular region between the demand curve and the MC curve, from \(y^*\) to \(y^e\) (the efficient quantity where \(p(y^e) = MC(y^e)\)). Same shape, same intuition as the deadweight loss from a tax — both are quantity distortions. With a tax, the wedge is artificial. With a monopoly, the wedge is the gap between price and marginal revenue. Either way, fewer trades happen than would maximize total surplus.
The First Welfare Theorem says competitive markets produce Pareto-efficient outcomes under a list of assumptions, and that any violation of those assumptions is called a market failure. Monopoly violates one of the central assumptions (price-taking behavior), so monopoly is a market failure.
Natural monopoly: when scale economies make one firm cheapest
A natural monopoly is a firm whose technology has economies of scale so strong that one firm can supply the entire market at lower average cost than two or more firms could. Average total cost slopes downward over the relevant range of output.
Two questions become interesting:
Why isn’t the natural monopoly disciplined by entry? Suppose a competitor tries to enter and grab a quarter of the market. The incumbent, with three-quarters of demand, sits on the downward-sloping part of ATC at a lower average cost than the new entrant can achieve. The incumbent can cut its price — what’s called predatory pricing — to a level between its own ATC and the entrant’s ATC. The entrant loses money, exits, and the incumbent restores its price. Anyone considering entry knows this in advance, so few try.
Can a regulator force the natural monopolist to act efficiently? Marginal-cost pricing would make \(p = MC\) and eliminate the deadweight loss — but with declining ATC, \(MC\) lies below \(ATC\), so the firm makes an economic loss at the regulated efficient quantity. The firm exits, the market disappears, all the gains from trade are lost. So regulators face a constrained problem: get the firm to produce more (toward \(y^e\)) without driving it to exit. In practice this leads to average-cost regulation (set \(p = ATC\) so the firm at least breaks even — efficient enough, inefficient still) or two-part tariffs (a fixed access fee covering the ATC-MC gap, with marginal price equal to MC).
Monopsony: one buyer, mirror image of monopoly
A monopoly is a market with one seller. A monopsony is a market with one buyer. The math is exactly mirror-image and the welfare conclusion is the same: monopsony also creates a deadweight loss, in this case by under-buying.
A monopolist faces \(MR < p\) because raising \(y\) forces \(p\) down. A monopsonist faces \(MC_{\text{input}} > w\) because raising input use forces \(w\) up: to hire one more unit of the input, the firm must offer a higher wage, and (if it can’t wage-discriminate) it pays that higher wage to every existing employee too. Both situations create a wedge between price and marginal value, and both leave socially beneficial trades unmade.
Did you know?
- The “twice the slope” rule for MR is a feature of linear demand only. With constant-elasticity demand (\(p = A q^{-1/\varepsilon}\)), the markup-to-price ratio \((p - MC)/p\) equals \(1/|\varepsilon|\) — a constant, regardless of cost. This is the Lerner index and it’s the standard quantitative measure of market power in modern antitrust analysis.
- First-degree price discrimination — the monopolist charges every consumer their exact willingness-to-pay — eliminates the deadweight loss. Quantity returns to the efficient level. The catch is that all the surplus goes to the firm; consumer surplus disappears. Efficient but very unequal.
- The patent system is a deliberate temporary monopoly. The deadweight loss during the patent period is the price society pays for the incentive to invent. Generic-drug competition after patent expiry restores efficient pricing. Whether the trade-off is worth it depends on how much innovation the monopoly rents actually buy — an empirical question that’s still actively debated.