Market shares and markups
A firm’s size changes the demand elasticity it faces.
This guide draws on the nested-demand framework of Atkeson and Burstein (2008), using simplified teaching examples.
Follow the mechanismSubstitute within.
Substitute across.
Across sectors · θ
Within each sector · η
Across sectors
How easily spending leaves a sector.
Within a sector
How easily buyers switch among its firms.
η > θ > 1. Foundation: Edmond, pp. 4–10 ↗
Share changes pricing power.
sᵢ is the firm’s revenue share within its sector. Higher sᵢ lowers εᵢ and raises μᵢ = εᵢ/(εᵢ − 1). Conduct comparison: Trottner, pp. 35–37 ↗
Tiny firm: ε → η. Monopolist: ε = θ.
Give one firm an advantage.
Illustrative constants: η = 5.
Fixed firms, constant returns.
| Firm | Revenue share | Markup μ |
|---|
Unit factor cost: mcᵢ = 1/zᵢ. Price: pᵢ = μᵢ/zᵢ.
Inspect costs, elasticities and prices
| Firm | z | ε | p |
|---|
Prices and shares must agree.
s′ᵢ = pᵢ1−η / Σₖ pₖ1−η. Repeat until s′ agrees with s.
One block of the full economy.
- 01 Moment Matching: a parameter changes an observable statistic.
- 02 One Economy: add production, fixed labor, labor clearing and entry.
- 03 Estimation: repeat that economy to compare parameters.
Scope & notation
- This sector example has no entry or aggregate labor clearing.
- The full course adds nonconstant returns and two periods.
- Edmond’s within-sector γ is our η; our γ denotes returns to scale.
- Trottner’s within-sector ρ is our η; the course’s ρ governs productivity persistence.
- Its constants are for the example only; the course’s model uses its own values.
solve_sector([1.6, 1.0, 0.8],
theta=1.5, eta=5.0,
conduct="cournot")Try it yourself
Solve the default sector on your computer.
Download the Python example and run it in the folder where you saved it. It needs Python 3.10 or later with NumPy, and takes under a second. In the course repository, run python lessons/00_prerequisites/ab08.py from the root instead.
python ab08.pyIt solves the page’s default sector, where A has an advantage and θ = 1.5, first under Cournot and then under Bertrand conduct, and prints each firm’s share, elasticity, markup and price. Add --self-test to run the checks first.
Check your result
Under Cournot, firm 1 (A on this page) has share 0.595718, elasticity 2.092042, markup 1.915716 and price 1.197322; the page shows 59.57%, 2.092, 1.916 and 1.197. Firms 2 and 3 have shares of 25.98% and 14.44%. Choose Bertrand on the page to compare the second table: firm 1’s share is 66.87% and its markup 1.603. With --self-test, the first line reads “AB08 checks passed: monopoly, symmetry, both conduct rules, residuals.”
Code on GitHub lessons/ ↗