Propensity Score Methods
A way to compare a treated group against an untreated group as if treatment had been handed out at random, by first summarizing every unit's covariates into a single number — its odds of being treated — and matching or weighting on that number instead of on the raw covariates.
Prerequisites: The Potential Outcomes Framework, Hypothesis Testing
You want to know whether adding a stock to an index causes its liquidity to improve, or whether index funds only ever add stocks that were already becoming more liquid. You can't run a randomized experiment — nobody assigns index membership by coin flip. What you have instead is a pile of stocks that got added and a pile that didn't, differing on dozens of characteristics: market cap, sector, existing volume, volatility. A naive comparison of average liquidity between the two groups mixes the effect you want with every one of those pre-existing differences. You need a way to compare only the stocks that were genuinely similar before treatment, so that whatever gap remains after the fact is plausibly the treatment's doing.
An analogy: finding your twin
Imagine you're trying to measure whether a new diet works, using observational data where nobody was randomly assigned to it. The gold-standard approach, if you had unlimited data, would be to find pairs of people who are identical in every relevant way — same age, same starting weight, same activity level, same genetics — except that one went on the diet and the other didn't. Compare their outcomes and you've isolated the diet's effect, because everything else was held fixed by construction.
The problem is that matching on every characteristic at once is nearly impossible once you have more than two or three variables — you'll almost never find an exact twin. The propensity score is the trick that makes this tractable: instead of matching on ten characteristics separately, you compress all ten into a single number — each person's probability of having chosen the diet, given their characteristics — and match on that one number instead. Two people with the same propensity score are, on average, comparable across every characteristic that went into computing it.
The score, one symbol at a time
Let be the treatment indicator — if a unit is treated, if not (in our example, means "was added to the index"). Let be the vector of observed covariates — market cap, sector, prior volume, whatever you believe drives both treatment and outcome. The propensity score, , is defined as
In plain English: the propensity score is the probability that a unit with covariates receives treatment, estimated from the data you have. It is not observed directly — you estimate it, almost always with logistic regression:
In plain English: the log-odds of being treated is modeled as a linear function of the covariates, and inverting that logistic-regression fit gives each unit its predicted probability of treatment.
Once every unit has a score, you can use it two ways. Matching: pair each treated unit with an untreated unit that has a nearly identical score, then compare outcomes within pairs. Inverse probability weighting (IPW): reweight every unit by the inverse of the probability of receiving the treatment status it actually got,
In plain English: treated units are up-weighted by how unlikely their treatment was, and untreated units are up-weighted by how unlikely their non-treatment was — so a treated unit that looked like it "shouldn't" have been treated counts extra, correcting for the fact that treatment wasn't randomly assigned.
Worked example 1: computing scores and matching by hand
Eight stocks, each with a covariate = prior-year trading volume (in millions of shares) and = whether the stock was added to an index this year.
| Stock | X (volume, M) | D (added) |
|---|---|---|
| A | 2 | 0 |
| B | 3 | 0 |
| C | 5 | 0 |
| D | 6 | 1 |
| E | 8 | 0 |
| F | 9 | 1 |
| G | 12 | 1 |
| H | 14 | 1 |
Suppose fitting a logistic regression of on to this data yields, after estimation, fitted probabilities (propensity scores) roughly as follows — these are the model's output, not something you compute by hand from 8 points, so take them as given:
| Stock | X | D | Propensity score |
|---|---|---|---|
| A | 2 | 0 | 0.05 |
| B | 3 | 0 | 0.10 |
| C | 5 | 0 | 0.30 |
| D | 6 | 1 | 0.42 |
| E | 8 | 0 | 0.55 |
| F | 9 | 1 | 0.62 |
| G | 12 | 1 | 0.80 |
| H | 14 | 1 | 0.90 |
Nearest-neighbor matching on the score: D (0.42) matches to E (0.55) — closest untreated score, gap 0.13. F (0.62) also matches to E if we allow reuse, or to C (0.30) if not — take nearest unused, E is taken, so F matches to C, gap 0.32 (worse, illustrating a thin overlap region). G (0.80) has no close untreated match at all — the nearest is E at 0.55, a gap of 0.25, a warning sign of poor overlap for high-volume stocks. This already tells you something useful before computing any effect: matches are only trustworthy for D and E, the pair with genuinely comparable scores; G and H sit in a region with no untreated comparison stocks, so any conclusion about their effect is extrapolation, not comparison.
Worked example 2: estimating an average treatment effect via IPW
Take the same eight stocks and suppose you observe a post-treatment liquidity outcome (a liquidity index, higher is better) for each:
| Stock | D | Y | Weight | Weighted contribution | |
|---|---|---|---|---|---|
| A | 0 | 0.05 | 40 | ||
| B | 0 | 0.10 | 42 | ||
| C | 0 | 0.30 | 45 | ||
| D | 1 | 0.42 | 60 | ||
| E | 0 | 0.55 | 50 | ||
| F | 1 | 0.62 | 65 | ||
| G | 1 | 0.80 | 70 | ||
| H | 1 | 0.90 | 75 |
Sum the treated contributions: . Sum the untreated contributions (as positive magnitudes): . The IPW estimator is
So the estimated effect of index inclusion on liquidity is about points. Compare this to the naive difference in raw group means — treated mean , untreated mean , difference — and you can see IPW pulled the estimate down, because it downweights the comparison toward stocks with more balanced scores (like the D–E pair) and away from the poorly-overlapped extremes.
To see why the weights behave this way in general, and to build intuition for how logistic regression turns covariates into a bounded probability in the first place, it helps to watch a fitted curve respond to data directly.
What this means in practice
Propensity score methods show up wherever a quant wants to evaluate an intervention that wasn't randomized — index additions, a broker's algo-routing change rolled out to some accounts but not others, a company's decision to buy back stock, or a regulatory rule that applied to some firms but not others based on size. In every case, the units that "chose" or "received" treatment differ systematically from those that didn't, and a naive before/after or treated/control comparison bakes in that selection. Propensity scores only remove the bias coming from observed covariates — anything driving treatment that you didn't measure still contaminates the estimate, which is why this method lives or dies on the DAG-level question of whether you've captured every confounder, discussed in DAGs for causality.
The propensity score compresses many covariates into one number — the probability of treatment — and matching or weighting on that single number balances all of them at once, provided every real confounder was included when the score was estimated. It fixes selection on observables; it cannot fix selection on unobservables.
A common confusion is treating a good propensity-score balance check as proof of a valid causal estimate. Balance only confirms that the observed covariates are similar across matched treated and untreated groups — it says nothing about unobserved confounders. Two stocks can have identical propensity scores derived from volume and sector, and still differ on something unmeasured (say, an analyst's private expectation of index inclusion) that also drives the outcome. Propensity score methods assume "unconfoundedness" — that conditional on , treatment is as good as random — and this assumption is never testable from the data itself, only arguable from domain knowledge.
Related concepts
Practice in interviews
Further reading
- Rosenbaum & Rubin, 'The Central Role of the Propensity Score in Observational Studies', Biometrika 1983
- Cunningham, Causal Inference: The Mixtape, ch. 5