An Interactive Introduction to Search and Matching Models
A large-firm approach for undergraduate teaching
The live simulator below runs entirely in your browser—no installation, no internet connection required after the page loads. Mathematics is rendered by MathJax (loads from a CDN on first visit, then cached).
This page presents a simple search-and-matching model designed for undergraduate teaching, with an interactive simulator that runs directly in your browser. The framework combines labor-market frictions, vacancy creation, wage bargaining, and equilibrium unemployment in a transparent large-firm environment. Equilibrium is characterized geometrically as the intersection of an upward-sloping wage curve and a downward-sloping job creation curve.
§1Introduction
In real labor markets, unemployed workers do not instantly find jobs and firms do not instantly hire workers. Workers search for employment opportunities while firms post vacancies and recruit employees, and because matching takes time and resources, unemployment and vacancies coexist in equilibrium. The empirical regularity that emerges from this coexistence is the Beveridge curve: a downward-sloping relationship between the unemployment rate and the vacancy rate, traced out over the business cycle. The U.S. Bureau of Labor Statistics publishes an interactive version of this curve, updated monthly: The Beveridge Curve (job openings rate vs. unemployment rate), seasonally adjusted. The model presented on this page is, in essence, a theory of why this curve exists and what shifts it.
Search-and-matching models provide a unified framework for studying equilibrium unemployment, job creation, labor-market tightness, wage determination, the Beveridge curve, and labor-market policy. The version presented here uses a large-firm formulation in which a representative multi-worker firm chooses how many vacancies to post, taking the wage and the vacancy-filling rate as given.
By the end of this page you should be able to:
- explain why unemployment and vacancies coexist in equilibrium;
- locate equilibrium graphically as the intersection of the wage curve (WC) and the job creation curve (JC);
- compute equilibrium tightness, wages, and unemployment numerically;
- interpret the Beveridge curve;
- perform comparative statics with respect to the seven structural parameters;
- run policy experiments using the live simulator embedded in this page.
§2Environment
Time is continuous. The economy is populated by a unit mass of identical workers. The labor market features search frictions: workers and firms cannot meet instantaneously.
At each instant, a worker is either employed or unemployed. Let $e$ denote the aggregate employment rate and $u$ the aggregate unemployment rate. Because the labor force is normalized to one,
We use lowercase letters throughout the body for aggregate quantities ($e$ for employment, $u$ for unemployment, $v$ for vacancies). The matching function below uses these aggregates. Appendix A introduces uppercase $E$ and $V$ for the firm-level optimization problem and shows how per-firm and aggregate quantities are related.
§3Matching technology
Matches between unemployed workers and vacancies are created according to the matching function
where $v$ denotes vacancies, $\phi$ measures matching efficiency, and $\alpha$ is the elasticity of new matches with respect to vacancies.
Define labor-market tightness $\theta \equiv v/u$. The probability per unit of time that an unemployed worker finds a job (the job-finding rate) is
and the probability per unit of time that a vacancy is filled (the vacancy-filling rate) is
§4Firms
Each employed worker produces a constant flow of output equal to $A$, so aggregate output is $Y = A\, e$. Firms collectively pay a wage $w$ to each employed worker and post $v$ vacancies in total at flow cost $c$ per vacancy. Filled jobs separate exogenously at rate $s$.
Aggregate employment evolves according to
The first term captures successful hiring (the vacancy-filling rate times the stock of vacancies); the second captures job destruction (the separation rate times the stock of employed workers). Aggregate flow profits are $\Pi = A\, e - w\, e - c\, v$.
The optimization problem of an individual firm is set up at the firm level, with uppercase letters $E$ and $V$ for its own employment and vacancies. With $N_f$ identical firms in equilibrium, $e = N_f \cdot E$ and $v = N_f \cdot V$. Each firm takes aggregate tightness $\theta$ (and hence $q(\theta)$) as given. Appendix A works out the firm's problem explicitly and shows that the per-firm and aggregate flow balances are equivalent.
A reminder on method. The firm's optimization in the next section is solved as a steady-state reduced form, not as a fully intertemporal dynamic program with asset values for filled jobs and vacancies. This delivers the same job creation condition as the dynamic-programming formulation under our assumptions but avoids the Bellman-equation apparatus.
§5The job creation condition
Posting a vacancy costs $c$ per unit of time, but the vacancy is filled only at rate $q(\theta)$, so the expected cost of recruiting one worker is $c/q(\theta)$. Once filled, a job survives until it is destroyed at rate $s$, giving an expected duration of $1/s$. At the optimum the flow surplus from a worker, capitalized over the expected duration of the match, must equal the expected hiring cost.
The optimization problem leads to the job creation condition:
A formal derivation is given in Appendix A.
Solving for $w$ gives the job creation curve in $(\theta, w)$ space:
The JC curve slopes downward in $\theta$: a tighter market makes vacancies harder to fill, raising hiring costs and forcing wages down.
§6Wage determination
When a worker and the firm meet, the match generates a surplus that did not exist before they met. Wages are determined by Nash bargaining: the worker and the firm split the surplus according to the worker's bargaining power $\beta \in (0,1)$. Workers receive flow value $b$ when unemployed (unemployment benefits plus the value of leisure or home production).
The bargaining outcome is the wage curve:
A formal derivation is given in Appendix B.
The wage is a convex combination of the worker's outside option $b$ and the firm's full productive value $A + c\,\theta$. The term $c\,\theta$ captures the fact that, in a tight market, the firm has been saving on hiring costs (it could find a worker quickly) and the worker can credibly demand a share of those savings. The WC curve is therefore upward-sloping.
§7Equilibrium: where WC meets JC
The equilibrium of the model is the unique point at which the wage curve and the job creation curve cross. Setting $w^{WC}(\theta) = w^{JC}(\theta)$:
This pins down equilibrium tightness $\theta^*$. Since the WC curve is upward-sloping and the JC curve is downward-sloping, the solution is unique whenever $A > b$. Once $\theta^*$ is known, the equilibrium wage $w^*$ is read off either curve.
§8Steady-state unemployment and the Beveridge curve
Unemployment evolves according to $\dot u = s\, e - p(\theta)\, u$, where $e = 1 - u$. The first term captures inflows into unemployment (the separation rate times the stock of employed workers); the second captures outflows (the job-finding rate times the stock of unemployed workers). Setting $\dot u = 0$ gives the steady-state unemployment rate
Vacancies are then $v^* = \theta^*\, u^*$.
At the benchmark calibration, the equilibrium is approximately $\theta^* \approx 0.635$, $w^* \approx 0.996$, $u^* \approx 5.5\%$, $v^* \approx 3.5\%$.
§9Comparative statics
The clearest way to understand the model is to see how the equilibrium moves when a parameter changes. Two leading examples:
A productivity shock
Suppose productivity rises from $A = 1.00$ to $A = 1.15$. Both the WC and JC curves shift upward. Equilibrium tightness rises and the equilibrium wage rises; unemployment falls.
Higher unemployment benefits
Suppose unemployment benefits rise from $b = 0.41$ to $b = 0.65$. This shifts the wage curve upward but leaves the job creation curve unchanged. The new intersection lies up and to the left: tightness falls, the wage rises, and unemployment goes up.
| Shock | $\theta^*$ | $w^*$ | $u^*$ |
|---|---|---|---|
| Higher productivity $A$ | ↑ | ↑ | ↓ |
| Higher vacancy cost $c$ | ↓ | amb. | ↑ |
| Higher separation rate $s$ | ↓ | ↓ | ↑ |
| Higher unemployment benefit $b$ | ↓ | ↑ | ↑ |
| Higher matching efficiency $\phi$ | ↑ | ↑ | ↓ |
| Higher bargaining power $\beta$ | ↓ | ↑ | ↑ |
§10Live simulator
Push the sliders below to set counterfactual parameter values. The model is re-solved in real time, in your browser, by JavaScript that mirrors the same equations as the companion Python notebook. Solid lines correspond to the benchmark calibration; dashed lines correspond to the counterfactual. The black dot is the benchmark equilibrium, the red dot is the counterfactual.
Benchmark
w=—
p=—
q=—
u=—
v=—
Counterfactual
w=—
p=—
q=—
u=—
v=—
Suggested labs
§11Policy applications
- Unemployment insurance. Higher $b$ shifts WC up, lowering tightness, raising wages, and increasing unemployment.
- Hiring subsidies. Lower $c$ shifts JC up, raising tightness and reducing unemployment.
- Firing costs. In this simplified framework, firing costs can be represented as raising the effective cost of maintaining employment relationships, with broadly negative effects on net job creation. In richer models with endogenous separations, however, firing costs also reduce the destruction margin and alter how match surplus is split, so the net labor-market effect is more nuanced than a higher effective $s$ alone would suggest.
- Matching technology improvements. Higher $\phi$ (better employment services, online platforms, retraining) raises both $p(\theta)$ and $q(\theta)$ and reduces unemployment.
§12Connections to the literature
- The framework. Mortensen and Pissarides (1994) introduce the modern search-and-matching model with endogenous job destruction; they share the 2010 Nobel Prize with Peter Diamond. Pissarides (2000) is the canonical textbook treatment.
- Calibration. Shimer (2005) provides the calibration strategy followed in Appendix C: target steady-state unemployment and vacancy rates.
- Vacancy posting costs. Silva and Toledo (2009) estimate that hiring costs represent about 4% of quarterly wages, the basis for the benchmark $c = 0.12$.
- Wage rigidity. Shimer (2005) shows that, under Nash bargaining, the model generates too little volatility in unemployment and vacancies relative to the data. Hall (2005) responds by replacing flexible Nash bargaining with sticky wages.
§13What this model leaves out
The framework presented here is deliberately simplified for teaching. Students should be aware of the main features it abstracts from, both to avoid drawing over-strong conclusions from the simulator and to see where the modern research frontier lies. The most important omissions are:
- Endogenous separations. The job-destruction rate $s$ is exogenous. In Mortensen and Pissarides (1994), $s$ is determined by an idiosyncratic productivity shock and a reservation-productivity threshold, so policies that affect the separation margin (such as employment protection) have first-order effects this model cannot capture.
- Worker heterogeneity. Workers are identical here. Real labor markets feature heterogeneous skills, demographics, and reservation wages, which generate composition effects in unemployment dynamics.
- On-the-job search. Employed workers cannot search here; in reality much of the labor market's reallocation happens through job-to-job transitions, which moderate the wage and tightness responses to shocks.
- Wage rigidity and the volatility puzzle. Nash bargaining delivers wages that are too flexible to match the cyclical volatility of unemployment and vacancies in the data (Shimer, 2005). Hall (2005) addresses this by replacing Nash bargaining with sticky wages.
- Business cycles and aggregate dynamics. The model is purely steady-state. Transitional dynamics, cyclical comovement, and the interaction with monetary or fiscal policy are outside its scope.
- Firm dynamics. Firms are identical and infinitely lived; there is no entry, exit, or firm size distribution. Models of labor-market dynamics with firm heterogeneity (e.g., Elsby & Michaels, 2013) generate richer flows.
- Directed search. Workers and vacancies meet randomly through the matching function $M(u, v)$. In directed-search models, workers and firms condition their search on observable wages or types, which changes the welfare properties of the equilibrium.
- Monopsony and labor-market concentration. Firms here take the wage as the outcome of bilateral bargaining. A growing literature (e.g., Berger, Herkenhoff & Mongey 2022) emphasizes that firms also have wage-setting power, which depresses wages and employment relative to the bargaining benchmark.
- Imperfect product-market competition. Firms here are price-takers. Allowing firms to charge a markup over marginal cost (Dixit & Stiglitz, 1977) modifies both the JC and WC conditions and links the labor-market block to the modern markup literature (De Loecker, Eeckhout & Unger, 2020).
These extensions are active research areas. A natural next step for students who finish this page is to choose one of them and explore how it modifies the simple WC–JC equilibrium developed here.
§AAppendix A: Deriving the job creation condition
This appendix derives the JC condition from the firm's profit-maximization problem in steady state. We make the firm/aggregate distinction explicit: uppercase letters $E$ and $V$ denote the firm's own employment and vacancies, while lowercase letters $e, u, v$ denote aggregates (as in the body). With $N_f$ identical firms in equilibrium,
Each firm takes the aggregate tightness $\theta$ (and hence $p(\theta)$ and $q(\theta)$) as given.
The firm
A representative firm produces $Y = A\, E$, where $A$ is productivity per worker and $E$ is the firm's employment. A fraction $s$ of employed workers separate at each instant, so the firm posts $V$ vacancies at flow cost $c$ each to replace them. Flow profits are $\Pi = A\, E - w\, E - c\, V$.
Steady-state flows
At the firm level, inflows equal outflows in steady state:
Aggregating across the $N_f$ identical firms (multiplying both sides by $N_f$) recovers the aggregate flow balance $q(\theta)\, v = s\, e$, equivalent to $p(\theta)\, u = s\, e$ by the definition of tightness, since $q(\theta)\, v = q(\theta)\, u\, \theta = p(\theta)\, u$. This is the body's $\dot e = q(\theta)v - se$ at $\dot e = 0$.
Solving the firm-level balance for $V$:
Profit maximization
Substituting into profits, the firm's problem reduces to a one-variable maximization in $E$:
The first-order condition with respect to $E$ delivers the JC condition: $A = w + sc/q(\theta)$, or equivalently $A - w = sc/q(\theta)$, exactly as in the body.
§BAppendix B: Deriving the wage equation
The Nash bargain over the joint match surplus is:
Take logs and differentiate
Equivalently, maximize $\beta \ln(w-b) + (1-\beta)\ln(A - w + c\theta)$. Differentiating with respect to $w$ and setting to zero:
Solving for the wage
Solving for $w$ delivers the wage curve:
Setting $\beta = 0$ gives $w = b$: with no bargaining power, the worker receives only the outside option. Setting $\beta = 1$ gives $w = A + c\,\theta$: the worker captures the entire productive value, including the recruiting cost the firm has saved by filling the vacancy.
§CAppendix C: Calibration
The model is calibrated to U.S. data averaged over 2002–2025, following the spirit of Shimer (2005)—targeting steady-state labor-market outcomes. We fix $\alpha = 0.5$ and treat the following as externally given:
- $s = 0.035$ (separation rate);
- $c = 0.12$ following Silva and Toledo (2009): hiring costs are about 4% of quarterly wages, so $c = 0.04 \times 3$;
- $A = 1$ (normalization);
- $b = 0.41$, the proportion of earnings lost to taxes and benefit reduction when starting a new job in the U.S. (OECD, 2023);
- data targets $u_\text{data} = 0.05$, $v_\text{data} = 0.035$, implying $\theta_\text{data} = 0.636$.
The remaining unknowns—$\phi$, $\beta$, $p(\theta^*)$, $q(\theta^*)$, and $w^*$—must satisfy the five steady-state equilibrium conditions: the unemployment relation, the JC condition, the matching rates, and the wage curve. Five equations, five unknowns. Solving numerically (Excel Solver, or the Python code that powers the simulator above) gives:
The benchmark equilibrium delivers $\theta^* \approx 0.635$, $u^* \approx 0.055$, $v^* \approx 0.035$, against the data targets $\theta_\text{data} = 0.636$, $u_\text{data} = 0.05$, $v_\text{data} = 0.035$. The small discrepancies reflect the simplicity of the model.
§DAppendix D: The companion notebook
The simulator on this page runs the same Python code as the companion Colab notebook. The five core functions are:
If you want to run the model in a Python environment of your own, download the notebook or the plain script.