Quant Memo
Advanced

Regression Discontinuity Design

A way to estimate a causal effect by exploiting a sharp, arbitrary cutoff rule — comparing units that barely qualified against units that barely missed, since near the threshold that's effectively a coin flip.

Prerequisites: Ordinary Least Squares (OLS), Correlation vs Causation

An index provider adds any stock whose market capitalization crosses $10 billion, and drops any stock that falls below it. You want to know whether index inclusion itself causes a valuation bump, separate from whatever made the stock big enough to qualify in the first place. Comparing the average valuation of all index members against all non-members is hopeless — index members are systematically bigger, more liquid, more mature companies, and any of that could explain a valuation difference on its own, with nothing to do with the index. What you actually want is a comparison between the stock that just barely crossed $10 billion and the stock that just barely missed it — two companies that, moments before the cutoff, were nearly identical, and where crossing the line was close to arbitrary.

An analogy: the driving test cutoff

Think of a driving test scored out of 100, where 60 is a pass. Someone who scores 59 and someone who scores 61 are, in every practical sense, equally skilled drivers — the one-point difference is closer to noise (a slightly harder question, a moment's hesitation) than to a real gap in ability. Yet one gets a license and the other doesn't. If you want to know whether having a license changes someone's driving behavior — do they drive more, take more risks — comparing the 61-scorers to the 59-scorers isolates that effect almost as cleanly as a randomized experiment would, because nothing else about them differs systematically at that exact boundary.

That's the entire logic of regression discontinuity design: find a rule with a sharp cutoff, trust that units on either side of the line right at the boundary are comparable, and measure the jump in outcome exactly at the threshold.

The design, one symbol at a time

Let RR (the running variable, also called the forcing variable) be the quantity that determines treatment — here, market capitalization. Let cc be the cutoff — $10 billion. Treatment DD is assigned deterministically by the rule

Di=1(Ric).D_i = \mathbb{1}(R_i \geq c) .

In plain English: a unit is treated exactly when its running variable clears the cutoff, and not otherwise — there's no randomness in who gets treated, only in where each unit happens to land relative to the line.

The causal effect at the cutoff is defined as the gap between two limits — the outcome YY as RR approaches cc from above, minus YY as RR approaches cc from below:

τRDD=limrcE[YR=r]    limrcE[YR=r].\tau_{RDD} = \lim_{r \downarrow c} E[Y \mid R = r] \;-\; \lim_{r \uparrow c} E[Y \mid R = r] .

In plain English: fit a smooth trend to the treated units and a separate smooth trend to the untreated units, and read off the size of the jump between the two trends exactly at the cutoff — not the overall difference in averages across the whole sample, just the gap right at the boundary.

In practice this is implemented by restricting to a bandwidth, hh, around the cutoff — only using observations with chRc+hc - h \leq R \leq c + h — and running two local regressions, one on each side:

Yi=α+β(Ric)+τDi+γDi(Ric)+εi,for Rich.Y_i = \alpha + \beta (R_i - c) + \tau\, D_i + \gamma\, D_i (R_i - c) + \varepsilon_i, \quad \text{for } |R_i - c| \leq h .

In plain English: fit a line (or a mild curve) to the data on each side of the cutoff, let the two sides have different slopes, and the coefficient τ\tau on the treatment indicator is the estimated jump — the RDD effect.

Worked example 1: the jump near a threshold

Ten stocks with market cap near the $10 billion cutoff (in $ billions) and their subsequent valuation multiple (P/E):

StockMarket cap ($B)Index member?P/E
18.5No14.0
29.0No14.4
39.4No14.7
49.7No15.0
59.9No15.2
610.1Yes17.3
710.3Yes17.5
810.6Yes17.8
911.0Yes18.1
1011.5Yes18.5

The below-cutoff points trend from 14.0 up to 15.2 as cap rises from 8.5 to 9.9 — a slope of about (15.214.0)/(9.98.5)=1.2/1.4=0.857(15.2-14.0)/(9.9-8.5) = 1.2/1.4 = 0.857 P/E points per $B. Extrapolating that trend to exactly $10B gives 15.2+0.857×0.1=15.2915.2 + 0.857 \times 0.1 = 15.29. The above-cutoff points trend from 17.3 at 10.1 up to 18.5 at 11.5, a slope of (18.517.3)/(11.510.1)=1.2/1.4=0.857(18.5-17.3)/(11.5-10.1) = 1.2/1.4 = 0.857 P/E points per $B as well — extrapolating backward to $10B gives 17.30.857×0.1=17.2117.3 - 0.857 \times 0.1 = 17.21.

The estimated jump at the cutoff is

τRDD=17.2115.29=1.92.\tau_{RDD} = 17.21 - 15.29 = 1.92 .

So index inclusion is associated with roughly a 1.9-point P/E premium, measured right at the boundary where the two groups of stocks were, moments earlier, essentially identical in size. Notice the underlying trend (rising P/E with market cap) is the same 0.857 slope on both sides — it's the discontinuous jump on top of that shared trend that RDD isolates, not the trend itself.

Worked example 2: how the estimate moves with bandwidth

Bandwidth choice trades off bias and precision. Using only the closest points to the cutoff reduces the risk that you're picking up an unrelated trend, but leaves fewer points to average over. Suppose you widen the sample:

Bandwidth (± $B around $10B)Stocks includedEstimated jump τ\tau
0.2 (very narrow)6, 7 vs. 4, 5 only2.15
0.5 (used above)6–8 vs. 3–51.92
1.5 (wide)all 10 stocks1.55

With the narrowest bandwidth, only the two closest points on each side are used, giving a jump of 2.15 — high precision loss (only 4 points) but minimal risk of mixing in the background trend. Widening to 1.5, using all ten stocks, pulls the estimate down to 1.55, because a wider window is more likely to average in points where the underlying (non-causal) relationship between market cap and valuation is doing more of the work, biasing the local jump toward the global trend. This is why RDD estimates are always reported alongside a bandwidth sensitivity check — a jump that only shows up at one specific bandwidth and vanishes at slightly wider or narrower windows is not trustworthy.

bandwidth (±\$B) estimate 0.2 → 2.15 0.5 → 1.92 1.5 → 1.55 narrow: less bias, more noise wide: more bias, less noise
As the bandwidth widens from ±0.2 to ±1.5, the RDD estimate drifts from 2.15 down to 1.55 — narrower windows trust the local jump more but rest on fewer points; wider windows average in more of the background trend.
market cap cutoff = \$10B jump = τ
Below-cutoff stocks (blue) and above-cutoff stocks (amber) each follow their own smooth trend. The vertical gap between the two trend lines exactly at the cutoff is the RDD estimate — not the difference in group averages.

What this means in practice

RDD applies wherever an arbitrary, sharp rule assigns treatment: index inclusion at a market-cap or float threshold, credit approval at a credit-score cutoff, exchange tick-size pilots applied by ticker-symbol rule, minimum-price listing requirements. It's attractive because, right at the cutoff, it approximates a randomized experiment without needing one — but it only tells you the effect for units near the cutoff, not for the whole population. A stock at $10.05B and one at $50B may respond to index inclusion completely differently, and RDD is silent about the second one. Quants use this for event-driven strategies around known threshold rules, and for evaluating market-structure changes rolled out by size or score bands.

The regression discontinuity estimate is the size of the jump between two locally fitted trends, evaluated exactly at the cutoff — not a comparison of far-apart group averages. It only identifies the causal effect locally, for units near the threshold, and that estimate should be checked for stability across a range of bandwidths before you trust it.

The classic failure mode is manipulation of the running variable — when units can influence which side of the cutoff they land on. If companies can manage earnings or buy back shares specifically to nudge market cap just over $10 billion, the stocks sitting just above the cutoff are no longer comparable to those just below: they're a self-selected group that wanted to cross. This shows up as a suspicious pile-up of observations just above the threshold, and it's the first thing to check (a density test on the running variable) before trusting any RDD estimate — a real discontinuity in outcome means nothing if there's also a manufactured discontinuity in who ends up on which side.

Related concepts

Practice in interviews

Further reading

  • Angrist & Pischke, Mostly Harmless Econometrics, ch. 6
  • Cunningham, Causal Inference: The Mixtape, ch. 6
ShareTwitterLinkedIn