Equilibrium marriage market models.
Switch branches/tags
Nothing to show
Clone or download



Build Status

The MarriageMarkets package currently provides two marriage market models as Julia types:

  • StaticMatch: computes the equilibrium of the static frictionless marriage market model from "Who Marries Whom and Why" (Choo & Siow, 2006).
  • SearchMatch: computes the equilibrium of variants on the search and matching model from "Assortative Matching and Search" (Shimer & Smith, 2000) and the empirical extension in "Marriage Gains" (Goussé, 2014).

SearchMatch also allows for inflows of new singles as well as deaths.


As described in the manual, to install unregistered packages, use Pkg.clone() with the repository url:


Julia version 0.5 or higher is required (install instructions here).


As SearchMatch supports a number of model variants, there are specific constructors for the two main types:

  • SearchClosed: closed-system where agents cycle between singlehood and marriage
  • SearchInflow: steady-state population is determined by exogenous inflows and type-specific death rates


The simple example below solves a search model with inflows and death. I use Gadfly to plot the match probability conditional on meeting.

using MarriageMarkets
using Gadfly
using Distributions

λ, δ = 500.0, 0.05 # arrival rates of meetings and divorce shocks
r = 0.05 # discount rate
σ = 1 # variance of Normally distributed match-specific productivity shocks
n = 50 # number of types
Θ = Vector(linspace(0.1, 1.0, n)) # types
f(x,y) = x*y # marital production function

γ = ones(n) ./ n # uniform inflows
ψ = ones(n) # uniform death rates

mgmkt = SearchInflow(λ, δ, r, σ, Θ, Θ, γ, γ, ψ, ψ, f)

plot(z=mgmkt.α, Geom.contour, Guide.title("Match probability conditional on meeting"))

Match function

The saddle shape indicates positive assortative matching, as expected, due to the supermodular production function f(x,y) = x*y.


In a Julia session, run Pkg.test("MarriageMarkets").