What’s Trending in Difference-in-Differences?
A synthesis of the recent econometrics literature
Roth · Sant’Anna · Bilinski · Poe — Journal of Econometrics (2023)
One-line thesis: start from one clean DiD model, then read the whole modern literature as relaxing one assumption at a time.
Why this paper exists
- DiD is everywhere in the social sciences.
- 2018–2022: a dizzying wave of new DiD methods papers.
- Practitioners can’t keep up; even experts can’t see how it all fits.
This paper is the map — plus a practitioner checklist and a package guide.
The big idea
Write down ONE canonical 2×2 model, then relax it three ways:
| Canonical piece | Strand that relaxes it |
|---|---|
| Same treatment time | 1. Staggered timing |
| Parallel trends holds | 2. PT violations |
| Many clean clusters | 3. Inference |
Running example throughout: states expanding Medicaid → effect on insurance coverage.
The canonical 2×2 setup
- Two periods; a treated group (expands Medicaid) and a comparison group (never does).
- We want the ATT: effect on coverage for the states that expanded.
- Problem: the treated group’s “no-expansion” outcome is never observed.
Two assumptions
Parallel Trends — absent treatment, both groups’ coverage would have changed by the same amount.
- Allows treated states to differ in levels (richer, bluer)…
- …but not in trends.
No Anticipation — treated states aren’t already reacting before expansion.
Identification = impute the counterfactual
Take the treated group’s pre-level, add the control group’s change as “what would’ve happened anyway,” and the leftover movement is the effect.
Run as TWFE; cluster SEs at the unit level. This is the room. Now remove furniture.
Strand 1: Staggered timing
Real policies roll out at different times (2014, 2015, never…).
Instinct: keep using TWFE (static or dynamic event-study).
It breaks — once treatment effects are heterogeneous.
Why TWFE breaks: forbidden comparisons
- TWFE = a weighted average of all 2×2 DiDs (Goodman-Bacon 2021).
- Some use already-treated units as “controls” → forbidden.
A 2014-expansion state used as a “control” for a 2016 state — but the 2014 state is already moving from its own effect.
The scary part: negative weights
- Every state’s true effect can be positive…
- …yet the TWFE coefficient comes out negative — the wrong sign.
- Pre-trend tests from staggered TWFE are also contaminated → unreliable.
Strand 1: The fix
Same recipe as 2×2 DiD, done carefully:
- Building block: group-time effect — cohort , time .
- Clean controls only: never- or not-yet-treated.
- Aggregate with weights you choose (cohort size, event-study profile).
✅ Valid under any heterogeneity ✅ Transparent comparison group
Strand 1: The estimator menu
| Estimator | Control group | Pre-periods |
|---|---|---|
| Callaway–Sant’Anna | never / not-yet | last pre-period |
| Borusyak et al. (imputation) | not-yet (impute) | all pre-periods |
| Sun–Abraham | never / last cohort | event-study |
| de Chaisemartin–D’Haultfœuille | not-yet; on/off OK | adjacent |
| Stacking | matched clean controls | per-event |
Tradeoff: more pre-periods → more efficient but needs PT over a longer horizon. In practice they usually agree.
Strand 2: Parallel trends may fail
Why worry?
- Time-varying confounders (bluer states expand and face different shocks).
- Functional form — PT in levels ≠ PT in logs, and which is right?
Three moves: condition, test honestly, bound the violation.
Move 1: Conditional parallel trends
Make PT hold only within covariate cells (e.g. partisan lean).
⚠️ Naive time in TWFE is not consistent under heterogeneity. Use:
- Regression adjustment (model control outcomes)
- IPW (model the propensity score)
- Doubly-robust ← recommended default: right if either model is right
Move 2: Pre-trends tests aren’t enough
Flat pre-trends feel reassuring, but:
Problem 1 — parallel ≠ parallel
Boys’ and girls’ heights move in parallel until age 13, then diverge. Flat pre-trends don’t guarantee parallel post-trends. (No, bar mitzvahs don’t cause height.)
Problem 2 — low power
A pre-trend big enough to seriously bias you is often not significant.
Detected only ~50% of the time → still produces a spurious significant effect ~50% of the time (≈10× the nominal 5%).
Problem 3 — pre-test bias
Keeping only analyses that “pass” the pre-test selects your sample and can make bias worse.
➡️ At minimum, report the power against relevant violations.
Move 3: Honest sensitivity analysis
Don’t assume PT holds — ask how big a violation would overturn the result?
Report the breakdown :
“Significant unless post-trends were 2× larger than the biggest pre-trend.”
Wider intervals when pre-trends are noisy — imprecision honestly costs you. (Rambachan–Roth; also bracketing bounds, Ye et al.)
Strand 3: Inference
Few clusters (e.g. 3 treated states): CLT fails; cluster shocks don’t average out.
- Donald–Lang, Conley–Taber, wild bootstrap, permutation/FRT — each needs extra assumptions. No free lunch.
Design-based view: units fixed, assignment is the randomness.
- Sampling-valid methods are usually design-valid too.
- ✅ Clear rule: cluster where treatment is assigned.
The practitioner checklist (Table 1)
- Same treatment time? No → heterogeneity-robust estimator.
- Sure about parallel trends? No → condition on covariates, plot event study, report pre-test power + sensitivity.
- Many clusters from a super-population? Few treated → small-cluster method; can’t define it → design-based, cluster at assignment level.
Five takeaways
- Canonical DiD = impute the counterfactual from the control’s change.
- Staggered TWFE → forbidden comparisons → wrong sign.
- Build from clean , aggregate with your weights.
- Flat pre-trends ≠ valid design — report power + breakdown.
- Cluster where treatment is assigned; go design-based when unsure.
Where to read next
Packages (Table 2): did/csdid, did2s, did_multiplegt, fixest,
staggered · DRDID · bacondecomp, TwoWayFEWeights · honestDiD,
pretrends
Vault notes: RothSantAnna2023-WhatsTrendingInDiD · RothSantAnna2023-WhatsTrendingInDiD-Explainer · GoodmanBacon2021-DiDVariationInTiming · SunAbraham2021-EventStudies · CallawaySantAnna2021-DiDMultiplePeriods · SantAnnaZhao2020-DoublyRobustDiD · RothPretrends2022-PretestWithCaution · RambachanRoth2023-MoreCredibleParallelTrends · BakerEtAl2025-DiDPractitionerGuide · DiD