A practitioner’s decision tree#

mlsynth ships dozens of estimators because each one is a named answer to a specific complication that breaks the method before it. The trick to not drowning is to start with the simplest credible method and escalate only when a concrete complication forces you to. That is exactly how this page is organised: a few identification gates first, then – within each branch – a ladder that runs from the easy, canonical case to the specialised, harder ones.

Answer each question yes or no. A yes sends you to a method (or a short list); a no moves you to the next question.

Reason forward: data, then estimand, then assumptions#

Before you open this tree, adopt the discipline that Baker, Callaway, Cunningham, Goodman-Bacon and Sant’Anna call forward engineering (Difference-in-Differences Designs: A Practitioner’s Guide, 2025, arXiv:2503.13323). The temptation many analysts face is to reverse-engineer: reach for a method because it sounds powerful or modern, run it, and only then back out later after they discover their assumptions were incorrect. Forward engineering goes the other way – and it is the right way:

  1. What state are your data in? Take honest stock first: panel or a single series, how many treated units and whether they adopt at the same time, whether assignment was randomized, the length of the pre-period versus the number of donors (\(N\) vs \(T_0\)), missing cells, stationarity, plausible spillovers, the presence of covariates or an instrument.

  2. Given a data structure, what estimand can those data actually support? Fix the target parameter before the estimator – a mean ATT, a population ATE, a per-arm contrast, a quantile / distributional effect. Do not aim at a parameter your design cannot identify just because a method will return a number for it.

  3. Which identifying assumptions are most defensible for that estimand, given that data state? Parallel trends? The convex-hull / no-extrapolation condition? No interference (SUTVA)? Exogeneity conditional on the latent factors? Proxy or instrument validity? Then, and only then, choose the method whose assumptions you can actually defend.

The questions below operationalize exactly that order as best as possible – data state, then estimand, then assumptions. But one caveat matters more than any single gate: this tree routes you to a method whose assumptions match your answers; it does not verify those assumptions for you.

Each estimator encodes technical conditions a one-line summary cannot capture. Follow the link at every leaf and read the original paper for the precise assumptions, the inference theory, and the documented failure modes. Treat no method as infallible: every estimate here is conditional on assumptions that are your job to defend, not the software’s.

Note

The gates are a guide, not a strict partition: several methods answer more than one question, and a real problem can trip two at once.

At a glance#

GATE 0 — Identification pre-screen (answer these first)
────────────────────────────────────────────────────────
Are you DESIGNING the experiment (treatment not yet assigned)?  ── yes ─► PART 3
Is assignment RANDOMIZED?                  ── yes, many small units ─► difference-in-means
                                           └─ yes, few large units  ─► MUSC
Do CONTROL UNITS exist at all?             ── no (everyone treated) ─► SHC
Is treatment ENDOGENOUS (SC can't absorb)? ── have an instrument    ─► SIV
                                           └─ have proxies / NCs     ─► PROXIMAL
Do parallel trends hold AND fixed-T/large-N? ── yes ─► plain Difference-in-Differences
                                                           (you may not need SC)
…otherwise:  HOW MANY TREATED UNITS?  ── one ─► PART 1   └─ more than one ─► PART 2

PART 1 — ONE treated unit   (easy ───────────────────────► hard)
─────────────────────────────────────────────────────────────────
Start:  FDID   (or VanillaSC -- simplex SC by default, with ols/lasso/ridge weights,
                ridge augmentation and eight inference modes; TSSC for a pre-trends test)
  ↓ then escalate ONLY if one of these is true:
Spillovers onto donors (SUTVA)?      ─► SPILLSYNTH · SpSyDiD (spatial) · BPSCS (spatial, unknown which) · SPOTSYNTH (unknown which) · ISCM (outside hull)
Nonstationary / spurious trend?      ─► SBC · HSC
Time-varying dynamics / heavy noise? ─► TASC · DSCAR · FMA · BFSC (Bayesian, credible band)
Donors right in shape, wrong in TIMING? ─► DTWSC (warp donor speeds, then SC)
Nonlinear outcome surface?           ─► NSC
Donor pool N ≳ T0 (overfitting)?     ─► CLUSTERSC · SparseSC · PDA · RESCM · FSCM · BVSS
Missing cells in the panel?          ─► SNN · MCNNM · RMSI (side information)
Interpolation across dissimilar donors? ─► MASC
Grouped microdata / repeated cross-sections? ─► SCD (differenced group means, √n bands) · DSC (distribution) · DRSC (distribution | covariates)
Different ESTIMAND / treatment type? ─► DSC (dist.) · DRSC (cond. dist.) · CTSC (dose) · SCMO (multi-outcome) · SI (arms)
Forecasting a unit that has NOT adopted yet? ─► TWSF (prospective, past the end of the panel)

PART 2 — MANY treated units   (easy ─────────────────────► hard)
─────────────────────────────────────────────────────────────────
Same adoption time?  ─► SDID            (micro units ─► MicroSynth; two-level ─► MLSC)
  + many treated at once, disaggregated/high-dim donors ─► MSQRT
Staggered (different times)?  ─► SDID · ROLLDID (rolling-transformation DiD)
  + simplex SC per unit, never-treated pool, CFPT intervals ─► VanillaSC (staggered)
  + unit sizes differ by orders of magnitude, want % effects ─► STACKEDSC
  + want pooling / oracle efficiency  ─► PPSCM · SequentialSDID
  + want the Callaway-Sant'Anna / Sun-Abraham group-time ATT ─► PPSCM (method="callaway_santanna")
  + latent factors, unit-specific loadings, never-treated pool ─► GSYNTH
  + long pre-period, few never-treated, event study ─► SSC
  + spillovers                        ─► SpSyDiD
  + missing cells / gaps              ─► MCNNM

PART 3 — DESIGNING an experiment   (by what you care about)
─────────────────────────────────────────────────────────────────
Care only about the ATT (effect on the treated)? ─► SYNDES · SPCD · weakly-targeted MAREX
Care about the ATE (population effect)?           ─► MAREX · LEXSCM
Geo roll-out — every unit treated or control, no pure donors? ─► PANGEO (supergeo)
Geo lift test — pick which markets to treat under a budget?    ─► SYNDES · LEXSCM · MAREX

Gate 0 — Identification pre-screen#

These come first because they decide whether synthetic control is even the right family. Get one wrong and no amount of donor weighting saves you.

Q0.1 · Are you designing the experiment? Has the treatment not yet been assigned, and you are choosing whom to treat?

  • Yes – jump to Part 3 (experimental design).

  • No, and some units have already adopted while the one you care about has not – you are asking a prospective question: what will this unit do if it adopts next month? That is a different estimand from everything below, which imputes a cell inside the observed window. Go to Two-Way Synthetic Forecasting (TWSF), which forecasts the treated outcome of a never-treated unit past the end of the panel by learning the treated regime’s dynamics from the units already in it. It needs donors that have run under the intervention long enough to show how it behaves, and a short horizon.

  • No, and you want to know what the units that did adopt would have done otherwise – the treatment already happened; continue.

Q0.2 · Is assignment randomized (or as-good-as-random)?

  • Yes, and you have many small exchangeable units – you do not need synthetic control; a difference-in-means (or a regression with controls) is unbiased.

  • Yes, but only one or a few large aggregate units (markets, states) – a single random draw can still leave baselines far apart. Modified Unbiased Synthetic Control makes the effect finite-sample unbiased under random assignment and is the only estimator here with an unbiased finite-sample variance and exact randomization intervals.

  • No – continue.

Q0.3 · Do control units exist at all?

  • No – every unit is treated (a nationwide policy, a court ruling, a global shock like COVID-19), so there is no donor pool and the comparison has to come from the treated unit’s own past. Two estimators do this, and they divide on whether you can name the cycle in the series. Synthetic Historical Control (SHC) rebuilds the comparison from overlapping historical blocks of the same series, so it needs recurring local structure but not strict periodicity, and it infers by conformal permutation. Gaussian-Process Interrupted Time Series (GPITS) puts a Gaussian-process prior on the trend with a kernel you specify – a seasonal component at a period you give it, plus a linear trend – and its interval widens with the forecast horizon instead of staying flat. Reach for Gaussian-Process Interrupted Time Series (GPITS) when the series is seasonal at a known period or the horizon is long enough that a flat interval would understate the extrapolation; reach for Synthetic Historical Control (SHC) when the structure recurs but no single period describes it. Both are most credible over short post-treatment windows.

  • Yes – continue.

Q0.4 · Is the treatment endogenous in a way SC cannot absorb? This is the home of the proximal methods: they are fundamentally tools for unmeasured confounding / endogeneity, not for any particular outcome shape. The danger is selection on time-varying unobservables – the pre-fit can look perfect and the ATT still be biased.

  • You have a (partially valid) instrument – a shift-share, a tariff schedule, a supply shock – Synthetic IV SC-debiases the (outcome, treatment, instrument) triple, then runs 2SLS; the instrument need only be valid conditional on the factors.

  • You have valid proxies / negative controls – extra controls associated with the latent confounder but with no direct path to the outcome – Proximal Inference Synthetic Control (PROXIMAL) instruments the confounder via GMM (and also covers the single-proxy, doubly-robust, and surrogate variants).

  • Neither – selection is on the latent factors only (SC’s standard premise) – continue.

Within the proximal family: instrument, two proxies, one proxy, or surrogates. These methods share a single premise – some donors are not valid members of the synthetic control but are still informative about the latent confounder, so they can be repurposed as proxies (or negative controls), not discarded – yet the authors motivate four distinct entry points. Shi, Li, Miao and Tchetgen Tchetgen (2026) give the foundational Proximal Inference Synthetic Control (PROXIMAL) framework: classical SC was built for settings with a near-perfect pre-treatment fit, and when that fit is poor even with a long pre-period, control units that do not help the fit can serve as proxies of the unmeasured confounders, identifying the ATT through a confounding bridge function (and extending naturally to nonlinear, binary, and count outcomes the standard linear SC literature leaves understudied). Their construction needs two kinds of proxy. Qiu, Shi, Miao, Dobriban and Tchetgen Tchetgen (2024) relax the modelling burden: their doubly robust variant pairs an outcome model with a weighting model and stays consistent if either is correct, so you are not forced to specify the confounding-bridge outcome model exactly. Park and Tchetgen Tchetgen (2025) cut the proxy requirement instead of the model requirement: their single-proxy approach views the donor outcomes themselves as the only proxies needed – no separate group of treatment proxies – and pairs it with conformal inference, which buys valid intervals without a long post-treatment series. Liu, Tchetgen Tchetgen and Varjão (2024) point the framework forward in time: when the pre-period is short or the post-period long, post-intervention surrogates (time-varying correlates of the effect) sharpen estimation, and they show conditions under which post-treatment data alone can identify the effect. So reach for Synthetic IV when you hold a genuine instrument and the worry is endogenous exposure; reach for Proximal Inference Synthetic Control (PROXIMAL) when you hold proxies/negative controls instead – the doubly robust route when you distrust your outcome model, the single-proxy route when you have only one kind of proxy and a short post-period, and the surrogate route when the leverage is in post-treatment correlates, not a long clean pre-period.

Q0.5 · Do parallel trends hold, and are you in a fixed-T / large-N regime?

Q0.6 · How many treated units?

  • One – go to Part 1.

  • More than one – go to Part 2.

Part 1 — A single treated unit#

Begin with the simplest method that could work and escalate only when a named complication applies.

Start here#

With one treated unit, a sharp intervention, and a scalar ATT, start with Forward Difference-in-Differences (FDID) – Forward DiD greedily selects the donors that share the treated trend, needs no convex-hull assumption, and gives valid inference even under nonstationarity, all with one estimated parameter. If you want the textbook simplex synthetic control of Abadie and co-authors, that is Vanilla Synthetic Control (VanillaSC); if the Forward Parallel Trends Assumption does not hold and you want a formal pre-trends test, use Two-Step Synthetic Control. If none of the escalations below applies, you are done.

FDID versus SCM. Forward DiD is arguably simpler than synthetic control and, as Li (2024) frames it, the natural first stop. Standard difference-in-differences puts equal weights on all donors and so needs every donor to parallel-trend with the treated unit – usually too much to ask; synthetic control instead solves for convex weights, which is more flexible but estimates one weight per donor (and can overfit), requires the treated unit inside the donors’ convex hull, carries no intercept, and – Li stresses – relies on inference theory that does not hold under nonstationarity of unknown structure. Forward DiD splits the difference: it forward-selects the subset of donors that best matches the treated unit’s pre-period and then runs plain DiD on that subset. Each candidate model has a single unknown parameter (the DiD intercept \(\alpha\)), so there is no overfitting however many donors there are; the intercept absorbs a level gap (as in DiD, unlike SCM); the pre-period \(R^2\) is a transparent fit diagnostic; and the inference is valid for stationary and nonstationary data. So when a selected subset of donors genuinely parallel-trends with the treated unit – a condition you can read off that \(R^2\) – Forward DiD is the simpler, lower-variance choice and you need go no further. Escalate to Vanilla Synthetic Control (VanillaSC) when even the best equal-weighted subset cannot track the treated unit and you need flexible convex weights to balance heterogeneous factor loadings: that is the off-ramp back to SCM, taken only when FDID’s parallel-trends-on-a-subset assumption fails.

Now walk the escalations, easy to hard:

Q1.1 · Are your donors contaminated by the treatment (SUTVA / spillovers)?

Which spillover method? (the beast). mlsynth offers a whole family here because spillover problems differ along three axes: whether you know which donors are contaminated, whether the contamination is spatial / network-structured, and whether the spillover is a nuisance to purge or an effect to estimate. Take them in turn. When you do not know which donors are affected – a large pool with no a-priori validity knowledge, or a suspiciously good-fitting donor – Spillover-Detecting Synthetic Control (SPOTSYNTH) (O’Riordan and Gilligan-Lee, 2025) detects it: a theorem from proximal causal inference says a clean donor’s post-treatment values are forecastable from pre-treatment data alone, so a donor that fails that forecast test has either changed regime or been hit by spillover; it screens out the failures and bounds the residual bias by sensitivity analysis. When you do know the affected set, the rest of the family (the Spillover-Aware Synthetic Control (SPILLSYNTH) dispatcher, plus Spatial Synthetic Difference-in-Differences (SpSyDiD)) divides as follows. If the spillover is spatial with a known weight matrix \(W\): Spatial Synthetic Difference-in-Differences (SpSyDiD) (Serenini and Masek) extends synthetic DiD, so it keeps SyDiD’s intercept and time weights (a robust direct effect under relaxed parallel trends) and splits the effect into direct and indirect parts – use it when you want the spillover and DiD-style robustness; method="sar" (Sakaguchi and Tagawa, 2026) instead models the outcomes with a spatial-autoregressive process and does Bayesian inference (horseshoe priors), the better choice in small samples (few units, short pre-period). If the spillover is not spatial but its structure is specifiable (linear in unknown parameters), method="cd" (Cao and Dowd) estimates direct and spillover effects from all units – the one option that still works when every unit is contaminated, and it ships a test for the assumed structure. If the spillover is itself a quantity of interest and you have clean, far-away donors that still fit well, method="grossi" (Grossi et al., 2025) restricts the pool to the unaffected units and estimates direct and spillover effects under partial interference. Finally, if excluding the affected donors would wreck the pre-treatment fit – the textbook case being a heavily weighted affected donor, like Austria’s 42 percent in synthetic West Germany – method="iscm" (Di Stefano and Mellace, 2024; also Imperfect Synthetic Controls (ISCM)) keeps those donors and nets out their intervention effects through a small system of equations; Melnychuk’s (2024) simulation study finds iSCM the most accurate of the family, with his method="iterative" waterfall a close, simpler-to-implement second. A different tack when you have per-unit coordinates and covariates but cannot name the contaminated donors: Bayesian Penalized Synthetic Control under Spillovers (BPSCS) (Fernández-Morales et al., 2026) assumes only that spillover risk grows with proximity and softly down-weights likely-affected neighbours through a Bayesian shrinkage prior whose scale blends spatial distance and covariate similarity – it keeps every donor (no hard exclusion) and returns a full posterior band, at the cost of the [bayes] (NumPyro) dependency. In short: unknown affected set -> spotsynth; spatial with known W -> Spatial Synthetic Difference-in-Differences (SpSyDiD) (robust direct effect) or sar (Bayesian, small samples); spatial but the affected set is unknown and you have coordinates -> Bayesian Penalized Synthetic Control under Spillovers (BPSCS) (distance-based shrinkage); specifiable structure with everyone possibly hit -> cd; spillover of interest with clean donors -> grossi; affected donors too good to drop -> iscm (or iterative for simplicity).

Q1.2 · Is the treated unit outside the donors’ convex hull even without spillovers (a true outlier)?

A different worry at this gate is not being outside the hull but the donors being highly correlated inside it, so many weightings fit the pre-period equally well and the effect you read off is unstable – or the treated-control relationship shifting across the intervention. Distributionally Robust Synthetic Control (DROSC) addresses both: it reports a worst-case effect over the whole set of weights compatible with the pre-treatment moments, indexed by a robustness radius, and sweeping that radius shows how much robustness the conclusion can absorb before it reaches zero. Use it when you want a deliberately conservative effect and a valid (non-regular) interval precisely where the standard identification is shaky; use Lexicographic Synthetic Control (LEXSCM) instead if you only need a stable deterministic tie-break for the non-uniqueness.

PDA versus SCM. This convex-hull gate is exactly where the panel data approach and synthetic control part ways, and the two camps argue it on their own terms. Wan, Xie and Hsiao (2018) cast it as constrained versus unconstrained regression: SCM forces convex weights (non-negative, summing to one) and no intercept, whereas PDA leaves the weights free and adds an intercept that absorbs a level (fixed-effect) gap between the treated unit and its donors. When SCM’s constraints hold – the treated unit lies in the donors’ convex hull and shares their level – they are valid restrictions and SCM is the more efficient estimator; Gardeazabal and Vega-Bayo (2017) find it then gives a smaller, tighter-spread post-treatment error (more so with covariates and a longer pre-period) and is more robust to changes in the donor pool. When the constraints are invalid – no convex combination of donors reproduces the treated unit, or a persistent level difference remains – SCM is biased, while PDA’s free weights and intercept stay unbiased, and PDA’s accuracy improves as the pre-period lengthens. So prefer SCM when you have a genuine convex match; prefer Panel Data Approach (PDA) when the treated unit sits outside the hull or at a different level. With a large donor pool the unconstrained regression must be regularised – which PDA variant to use is the next remark.

Within PDA: which regulariser? Panel Data Approach (PDA) bundles four ways to fit the unconstrained regression, and the choice is governed by the size of the donor pool relative to the pre-period and by whether a few donors or many carry the signal. The original Hsiao–Ching–Wan best subset (method="hcw") picks the donor subset by AICc; it is exact and certifiable but enumerates \(2^N\) candidate models and, being least squares, needs fewer donors than pre-periods (\(N < T_0\)) – so it suits a small pool. When the pool is large, best-subset becomes infeasible and HCW’s fixed-\(N\), large-\(T\) asymptotics degrade. Li and Bell (2017) propose Lasso (method="lasso") for exactly this case: it allows more donors than pre-periods (\(N > T_0\)), is far cheaper than AICc/BIC, and lowers the ATE’s predictive error – use it when a sparse handful of donors is plausibly relevant. Shi and Huang (2023) propose forward selection (method="fs"): a sequence of OLS fits that approximates best-subset at scale (valid even as \(N/T \to \infty\)) and – its headline contribution – supplies valid post-selection inference on the ATE (a conditional \(t\)-test), whether the underlying coefficients are sparse or dense; use it when you want HCW-style selection with a defensible standard error in a large pool. Shi and Wang (2024) L2-relaxation (method="l2") targets the opposite end of the sparse–dense axis: when the donors share a latent-factor structure so that all of them are weakly relevant and no sparse few stand out, its dense weighting diversifies prediction risk and attains oracle accuracy. In short: small pool -> hcw; large and sparse -> lasso (or fs when you also want inference); large and dense -> l2.

Q1.3 · Is the outcome nonstationary, so a tight pre-fit might be a spurious match?

Spurious fit on nonstationary data – SBC versus HSC versus plain SC. Both papers behind this gate warn that the standard synthetic control of Part 1 is unsafe on nonstationary macro series: a convex combination of donors can track the treated unit’s pre-period through coincidental co-movement of unit-specific stochastic trends, giving an excellent in-sample fit with no out-of-sample validity – the spurious synthetic control problem (Shi, Xi and Xie, 2025; Liu and Xu, 2026), an instance of spurious regression that does not go away as the pre-period lengthens. So plain Vanilla Synthetic Control (VanillaSC) is appropriate only when the outcome is stationary (or its stochastic trend is genuinely shared across units). The two fixes differ in how much they assume. Synthetic Business Cycle (SBC) (Shi, Xi and Xie, 2025) commits to a trend/cycle split: it treats the nonstationary trend as unit-specific and forecasts it from the treated unit’s own history, and uses the donors only for the common business cycle – the right division when comovement genuinely lives in the cycle (a country’s idiosyncratic growth path plus a synchronised global cycle). Harmonic Synthetic Control (HSC) (Liu and Xu, 2026) refuses to commit, because whether the stochastic trend is shared (which SC should keep for matching) or idiosyncratic (which it must remove) is usually unknown ex ante, and a binary choice to difference or not fails in whichever regime is wrong. HSC instead softly allocates between donor matching and a treated-unit-specific self-forecast, with a tuning parameter chosen by rolling-origin cross-validation that interpolates continuously between SC on differenced outcomes and SC on raw outcomes with a trend; it adapts across regimes where an estimator fixed to one can fail. So prefer Synthetic Business Cycle (SBC) when you are confident the matchable comovement is the business cycle and the trend is the treated unit’s own; prefer Harmonic Synthetic Control (HSC) when you are unsure whether the nonstationarity is shared or idiosyncratic and want the data to decide.

Q1.3b · Do you want the mechanism – how much of the effect runs through one observed channel (a mediator)?

Decomposing the effect into channels – MEDSC. Everything else in Part 1 targets the total effect. Mediation Analysis Synthetic Control (MEDSC) (Mellace and Pasquini, 2022) goes one step further when you also observe a mediator – a channel variable the intervention moves and that in turn moves the outcome (for Proposition 99, the retail price of cigarettes). It splits the synthetic-control effect into a direct effect and an indirect effect that runs through the mediator, by building a second, cross-world synthetic control that matches not only the treated unit’s pre-treatment outcome path but also its post-treatment mediator path; the gap between the two controls is the channel. Reach for it only when the mechanism is the question and the “treatment moves mediator moves outcome” ordering is credible; for the total effect alone, a plain Vanilla Synthetic Control (VanillaSC) is simpler. It needs a donor pool wide enough to bracket the treated unit’s post-treatment mediator values – so it exposes two donor pools, the wider one for the direct fit.

Q1.4 · Are there persistent latent factors / time-varying dynamics / heavy observation noise?

FMA versus BFSC – frequentist or Bayesian factor SC. Both fit the untreated outcome with a latent-factor model, not a donor weighting, so both handle a treated unit outside the donors’ convex hull. Factor Model Approach (FMA) (Li and Sonnier, 2023) estimates the factors by principal components, regresses the treated unit on the estimated loadings, and contributes a formal inference theory (a residual bootstrap giving valid intervals without the equal-variance assumption). Bayesian Factor Synthetic Control (BFSC) (Pinkney, 2021) instead estimates the factors and loadings jointly in one Bayesian model, masks the treated post-period as missing data, and reads the counterfactual off the posterior – so the credible band propagates the uncertainty in the factors themselves, and a horseshoe+ prior on the loadings makes the factor count a soft upper bound, not a choice you must commit to. Prefer Factor Model Approach (FMA) when you want a fast, dependency-free point estimate with bootstrap intervals; prefer Bayesian Factor Synthetic Control (BFSC) when you want a full posterior band and would prefer not to fix the number of factors, and you can take on the [bayes] (NumPyro) dependency.

Factor SC with covariate-instrumented loadings. Counterfactual Synthetic Control with Instrumented PCA (CSC-IPCA) (Wang, 2024) is the factor estimator to reach for when you observe many time-varying covariates that plausibly drive the outcome. Instead of learning a free loading for each unit from its outcome history, it projects the loadings onto the covariates (instrumented principal component analysis), so the covariates – not a convex-hull condition – carry the counterfactual, and the treated unit may sit well outside the donor range. Its edge over an outcome-only factor model (Factor Model Approach (FMA), Causal Factor Model (CFM)) appears precisely when the covariates are informative and only partially observed, and vanishes when every relevant covariate is already in hand. It needs at least as many covariates as factors and a pre-period longer than covariates-times-factors, and reports a per-period moving-block conformal band. With no covariates, use Factor Model Approach (FMA) or Causal Factor Model (CFM).

Which Bayesian synthetic control? Six estimators are Bayesian, and they split on what carries the prior. Bayesian Synthetic Control of Martinez & Vives-i-Bastida (MVBBSC), Bayesian Synthetic Control Methods (BSCM), and Bayesian Synthetic Control with a Soft Simplex Constraint (BVS-SS) put a prior on the donor weights and all report donor weights – reach for them, at Q1.2 or Q1.6, when you want interpretable weights with a credible interval. They differ in the constraint: Bayesian Synthetic Control of Martinez & Vives-i-Bastida (MVBBSC) (Martinez and Vives-i-Bastida) keeps the hard simplex with a uniform prior, standardizes internally so the fit is unit-free, and carries a Bernstein-von Mises guarantee that makes its credible interval a valid confidence interval – the choice when the treated unit is inside the donors’ hull and you want principled inference on the classical convex-combination model; Bayesian Synthetic Control Methods (BSCM) drops the simplex for shrinkage (horseshoe or spike-and-slab) on unconstrained weights; Bayesian Synthetic Control with a Soft Simplex Constraint (BVS-SS) keeps a soft simplex and adds spike-and-slab donor selection with inclusion probabilities. Bayesian Factor Synthetic Control (BFSC) and Multitask Gaussian Process Synthetic Control (MTGP) put the prior on a latent-factor model of the outcome and report a counterfactual band with no donor weights – reach for them when a shared factor structure, not a weighted average of donors is the right model. The two factor models differ in one thing: Bayesian Factor Synthetic Control (BFSC) leaves the factors unconstrained over time, while Multitask Gaussian Process Synthetic Control (MTGP) puts a Gaussian-process (squared-exponential) prior on them, so its factor paths are smooth and its post-period band grows with extrapolation distance. Prefer Multitask Gaussian Process Synthetic Control (MTGP) when the untreated series are smooth trends and you want that widening band; prefer Bayesian Factor Synthetic Control (BFSC) when the shared structure is best left unconstrained. The sixth, Bayesian Penalized Synthetic Control under Spillovers (BPSCS), puts the prior on donor coefficients but scales it by an external covariate-and-distance utility – reach for it, at Q1.1, when the concern is spatial spillover contaminating the donor pool and you want close-by donors down-weighted, not trusted or dropped.

When the outcome is not Gaussian. Every estimator above puts its prior somewhere – on the weights, on the factors, on the donor coefficients – and all of them assume the outcome itself is well described by a Gaussian model. For a count that is often wrong: case counts, crime incidents, claims and conversions are non-negative integers whose spread grows with their level, and a least-squares fit to them can return a counterfactual with negative values in it. Many-outcomes Synthetic Control (MOSC) (Wang, Schein, Shou and Blei) is the entry point that lets you choose the likelihood instead, fitting a gamma-Poisson factor model to the panel and adjusting for the per-unit loadings it returns as though they were observed confounders. Its justification is what makes this legitimate: it replaces the linear factor model with an argument from negative control outcomes – every pre-intervention observation and every untreated unit is one – so nothing in the identification requires linearity. Reach for it when the panel is wide, the pre-period long, and the outcome’s distribution is what your other options are getting wrong. Two things bound it. Like Bayesian Factor Synthetic Control (BFSC) and Multitask Gaussian Process Synthetic Control (MTGP) it reports no donor weights at all, since the counterfactual is a regression prediction from latent loadings, not a weighted average of donors. And it needs a real donor pool – the outcome model fits a coefficient per latent factor across units, so it refuses a panel with fewer than n_factors + 3 of them. With a small pool and a Gaussian outcome, Generalized Synthetic Control (GSYNTH) or Matrix Completion with Nuclear Norm Minimization (MCNNM) remain the better tools. The neighbouring choice for counts is Flexible Count Synthetic Control (CSCM), which keeps the donor-weight story and enforces non-negativity at the weighting step; prefer it when the weights are the deliverable and the pool is small, and Many-outcomes Synthetic Control (MOSC) when the likelihood is the thing you need to get right. The sharper comparison, though, is against Cluster Synthetic Controls (CLUSTERSC)’s robust synthetic control, and it is a comparison of assumptions and not of flexibility. Robust SC already permits an arbitrary nonlinear latent function; what it requires is that the treated unit’s mean path lie in the linear span of the donors’, carrying to the post-period under a rank condition, and it requires nothing whatsoever about how treatment was assigned. Many-outcomes Synthetic Control (MOSC) drops the span requirement and pays for it with unconfoundedness given a latent recovered from the outcomes – a much stronger claim, in a literature usually applied where assignment is plainly not ignorable. Robust SC also carries a finite-sample error bound and imputes missing cells, neither of which Many-outcomes Synthetic Control (MOSC) offers. What robust SC assumes and a count panel denies is a single noise variance common to every unit and period, since a Poisson variance equals its mean; that, and not linearity, is the reason to switch. So: Cluster Synthetic Controls (CLUSTERSC) unless the outcome’s distribution is what is going wrong, and a placebo run under either.

DSCAR – a different beast. Dynamic Synthetic Control for Auto-Regressive processes (DSCAR) (Zheng and Chen, 2024) is not a variant of the synthetic control above; it is best understood by contrast with the vanilla method. Standard SC builds fixed weights that match the treated unit’s whole pre-treatment outcome trajectory, identifies the counterfactual through a latent factor model and the convex hull, and is built for a single aggregate treated unit with no time-varying confounders. DSCAR changes nearly all of that. It is designed for micro-level panels – many units, often many treated ones (monitoring sites, wearables, individuals) – in which the outcome is strongly autoregressive, the confounders are time-varying and observed, and the units are spatially dependent. Instead of one fixed weight vector it constructs dynamic (time-varying) weights by maximising an empirical likelihood subject to matching the current state of the time-varying confounders and the lagged outcome at each period; because the match is to the current confounder state, not to a long pre-treatment path, an exact match is attainable with probability approaching one. And it identifies the effect through unconfoundedness conditional on the covariates and the lagged outcome – a selection-on-observables assumption testable on the pre-period –, not SC’s factor structure. So prefer Dynamic Synthetic Control for Auto-Regressive processes (DSCAR) over Vanilla Synthetic Control (VanillaSC) when the data are micro-level with observed time-varying confounders, autocorrelated outcomes, spatial dependence, or multiple treated units; stay with the vanilla synthetic control when you have a single aggregate treated unit, time-invariant structure, and the factor-model / convex-hull premise is what you are willing to assume.

Low-rank (matrix) methods – when the donor matrix has factor structure. This gate is also the entry point to a family that takes the latent-factor view literally: if a few common factors drive every unit, the untreated outcome matrix is approximately low-rank, so one can denoise or complete it before fitting weights. They divide by what corruption they guard against. When the data are disaggregate (individual-level: health records, income, store sales) so the donor count dwarfs the pre-period (\(n \gg T_0\)) and the panel is noisy, Cluster Synthetic Controls (CLUSTERSC) (Rho et al., 2025) first clusters donors by their latent-factor signature – keeping only the group that behaves like the target – then denoises: method="pcr" keeps the top singular values by hard thresholding (Amjad et al., 2018; Agarwal et al., 2021), good for Gaussian noise, while method="rpca" uses robust PCA / principal component pursuit (Candes et al.), separating a low-rank part from a sparse one and so tolerating outliers and missing entries. Factor Model Approach (FMA) (Li and Sonnier, 2023) takes the factor model head-on – it projects the donors onto a low-dimensional factor space and regresses the treated unit on the estimated loadings with no simplex or convex-hull constraint, so it handles a treated unit outside the donors’ range and many treated units; its contribution is a formal inference theory (valid confidence intervals without the equal-variance assumption the usual factor-model bootstrap needs), at the cost of overfitting if the donor pool is large. Time-Aware Synthetic Control (TASC) (Rho et al., 2025) observes that all of the above are time-agnostic – permuting the time index leaves the matrix spectrum unchanged – and embeds the low-rank panel in a state-space model (Kalman filter / RTS smoother) to exploit the temporal structure too, which pays off under strong trends and high observation noise. And Robust Matrix estimation with Side Information (RMSI) (Agarwal et al., 2026) extends low-rank completion to use row- and column-side covariates, decomposing the matrix into covariate-driven and residual low-rank parts – preferable when you have informative side information and missing cells (including the block-missing pattern of a causal panel). Rule of thumb: disaggregate and noisy -> Cluster Synthetic Controls (CLUSTERSC) (pcr for noise, rpca for outliers/missing); treated outside the hull or you need valid factor-model inference -> Factor Model Approach (FMA); strong trends plus noise -> Time-Aware Synthetic Control (TASC); informative covariates with missing cells -> Robust Matrix estimation with Side Information (RMSI).

Q1.5 · Is the untreated outcome a nonlinear function of the predictors?

Q1.6 · Is the donor pool large relative to the pre-period (N >> T0)? This is the most common reason to leave the standard workhorses: unrestricted fits overfit the pre-period and predict the post-period worse.

A privacy constraint on the donors. If the donor pool is sensitive – patient records in a clinical external-control arm, proprietary firm-level series in a data cooperative – and the counterfactual must be released externally, Differentially Private Synthetic Control (DPSC) (Rho, Cummings and Misra, 2023) is the only estimator here with a formal privacy guarantee: a ridge synthetic control fitted with differentially private empirical risk minimisation, so publishing the effect leaks a provably bounded amount about any single donor. It buys a privacy certificate, not a better point estimate, and it is worth its accuracy cost only when the donor pool is large and the pre-period long; on the usual small donor pool, and for public aggregates, prefer Vanilla Synthetic Control (VanillaSC).

Dense versus sparse weights – when to relax SCM. Standard synthetic control constrains the weights to the simplex, which (as Doudchenko and Imbens (2016) observe) tends to produce sparse solutions loading on a handful of donors. Two recent papers argue this sparsity is a mechanical byproduct of the optimisation, not a virtue, and motivate the Relaxed / Penalized Synthetic Control (RESCM) family – a relaxed program spanning simplex SC, the \(L_\infty\) (dense) norm, and DiD. Liao, Shi and Zheng (2025) note that once you have invested in a large donor pool there is often no reason to believe only a few controls are relevant: a dense scheme that uses them all – spreading weight evenly within latent donor groups – diversifies prediction risk and reaches oracle accuracy even when the donor count exceeds the pre-period (\(J \gg T_0\)). Wang, Xing and Ye (2025) make the same case via the \(L_\infty\) norm: concentrating weight on a few units amplifies sensitivity to their idiosyncrasies (higher variance, and bias if one key donor deviates), which bites hardest in volatile environments or when control units differ in dynamics; their dense scheme reduces that over-reliance, raises the chance of satisfying parallel trends, and – like DiD – admits a level intercept and valid long-panel asymptotics. So prefer Relaxed / Penalized Synthetic Control (RESCM) over standard SCM when the donor pool is large and broadly relevant, when robustness to any single donor matters, or when the outcome is volatile; keep the sparse, transparent standard SC when a few genuinely similar donors match well in a stable setting (the canonical Proposition 99 case).

Q1.7 · Are there missing cells in the panel?

Which matrix-completion estimator – and why the missingness mechanism decides. The three estimators differ less in the imputation machinery than in what they assume about why cells are missing. Matrix Completion with Nuclear Norm Minimization (MCNNM) (Athey, Bayati, Doudchenko, Imbens and Khosravi (2021)) imputes the untreated potential outcomes by nuclear-norm-regularised low-rank completion of the whole panel, with two-way fixed effects. Their headline argument is regime-robustness: synthetic control and the unconfoundedness/horizontal regression each work well only in one shape of panel – unconfoundedness fails when \(T \gg N\), synthetic control fails when \(N \gg T\) – whereas the completion objective nests both as special cases (differing only in how hard a restriction they place on the factorisation) and stays accurate across all regimes and arbitrary, staggered missing patterns. That argument presumes the pattern of missingness is essentially ignorable (missing at random given the low-rank structure). Synthetic Nearest Neighbors / Causal Matrix Completion (SNN) (Agarwal, Dahleh, Shah and Shen (2021)) is built for exactly the case MCNNM sets aside: missingness that is not at random – the probability a cell is observed depends on the cell’s own latent value (a policymaker adopts where outcomes are favourable; a user only rates films they chose to watch), entries can be deterministically missing (positivity violated), and the missingness of one cell can depend on others. SNN imputes each target cell from a fully observed anchor block of rows and columns and delivers entry-wise (max-norm) guarantees – accurate inference for each individual \((i,j)\) cell, not for a row average. So prefer Matrix Completion with Nuclear Norm Minimization (MCNNM) when the gaps are plausibly incidental and you want one estimator that travels across short, long, and square panels; prefer Synthetic Nearest Neighbors / Causal Matrix Completion (SNN) when the gaps are informative – selected on the outcome itself – and you need a credible counterfactual for specific cells; reach for Robust Matrix estimation with Side Information (RMSI) when the missing block is the treated region and you have margin covariates that carry signal about it.

Local Principal Component Analysis (LPCA) (Feng (2024)) splits from all three on a prior question: whether the outcome matrix is low rank at all. The other three assume the untreated outcome is a linear combination of a few common factors, which is what makes the matrix low rank and the completion machinery apply. Feng assumes only that outcomes are some smooth, possibly nonlinear function of a few latent variables – which generally makes the matrix full rank, so nuclear-norm shrinkage and global principal components both misread it. The fix is locality: units matched to their nearest neighbours share a latent neighbourhood, and on that neighbourhood a first-order expansion makes the structure approximately linear, so principal components apply there even though they fail globally. The price is appetite for data – neighbours are only close when many units compete to be one, and half the periods are spent finding them – so Local Principal Component Analysis (LPCA) belongs on wide panels and not on a thirty-donor case study, where Matrix Completion with Nuclear Norm Minimization (MCNNM) remains the better bet.

Q1.8 · Is your estimand or treatment effect non-standard (not a scalar mean ATT for one binary treatment)?

When to reach for Functional Synthetic Controls. Functional Synthetic Control (FSC) (Okano and Kurisu (2026)) is for the case where each unit-period holds an object with internal structure worth preserving: an age-specific fertility profile, an age-at-death distribution, a covariance matrix across product lines. You can always collapse such an object to a scalar and run an ordinary synthetic control, and the question is what that costs. East Germany’s 1972 abortion law moved fertility sharply at ages 20 to 30 and barely at all elsewhere; as a total fertility rate that is one negative number, and the shape – the actual finding – is gone. The obstacle FSC removes is that these objects have no linear structure, so the weighted-average counterfactual is not even well defined; it carries them into a Hilbert space through a distance-preserving embedding, runs the ordinary simplex fit there, and maps back. It also carries the ridge augmentation of Vanilla Synthetic Control (VanillaSC) into that space, which is what lets it close a pre-treatment gap the simplex cannot. The boundary against its neighbours is sharp: Distributional Synthetic Control (DSC) and Distribution-Regression Synthetic Control (DRSC) want individual-level microdata and give you quantile effects from it, whereas FSC wants the object already assembled per cell; and COMPSC — Compositional Synthetic Controls in the Aitchison Geometry handles the compositional case, which FSC’s framework covers in principle but which COMPSC treats with a purpose-built log-ratio model.

When to reach for Compositional Synthetic Controls. COMPSC — Compositional Synthetic Controls in the Aitchison Geometry (Boussim (2026)) is for outcomes that live on the simplex, where a gain in one share is mechanically a loss in the others. Two things break if you treat the shares as ordinary outcomes. Fitting one synthetic control per share gives each its own donor mix, so the fitted shares need not sum to one and there is no single counterfactual unit. And a Euclidean objective on raw shares weights each category’s proportional error by its squared share, so a category holding 2 percent of the total barely registers next to one holding 50 – precisely backwards when the emerging category is the policy question. COMPSC fits one weight vector in log-ratio space, where the multinomial-logit micro-foundation makes the transformed shares the relative utilities driving choice, and returns the counterfactual as the weighted geometric mean of the donor compositions. The effects then sum to zero by construction, and the estimands include the log-ratio effect – the change in the odds of one category against another – which is what makes a small category legible. Its sibling PROPSC — Treatment Effects on Proportions with Synthetic Controls solves only the first problem, on the level scale; prefer PROPSC when a block of treated units adopts simultaneously (COMPSC takes a single treated unit) or when all the categories are large and comparably sized, and prefer COMPSC when the question is about relative structure or a small share.

When to reach for Synthetic Interventions. Synthetic Interventions (SI) (Agarwal, Shah and Shen (2024)) is the multi-arm member of this same low-rank family, and the comparison is cleanest stated through the question it answers. Standard synthetic control recovers one slice of the potential-outcomes array – outcomes under a single treatment, usually control – because its matrix factor model carries latent factors only for units and time. SI lifts that to a tensor factor model with an added latent factorisation over treatments, so the same panel can be completed under interventions a unit never actually received: what would California’s cigarette sales have been under a tax increase, not the program it adopted? Prefer Synthetic Interventions (SI) when you have several intervention arms and want each unit’s counterfactual under arms it did not take – the multi-treatment generalisation Abadie (2021) posed as an open question –, not a single average contrast against one control condition.

Q1.9 · Are you worried about interpolation bias – the synthetic control having to interpolate across donors that are individually far from the treated unit, so the fit blends dissimilar units?

  • No – you are done; use the Start here method.

  • Yes – Matching and Synthetic Control (MASC) blends extrapolation-free nearest-neighbour matching with the SC simplex and chooses the mix that minimises estimated bias, directly targeting interpolation bias.

Q1.10 · Is your pre-treatment fit suspiciously perfect, with a donor pool large relative to the pre-period?

  • No – you are done; use the Start here method.

  • Yes – read When a perfect pre-treatment fit means nothing before reporting anything. With \(J\) donors and \(T_0\) pre-periods, matching exactly imposes only \(T_0 + 1\) constraints, so once \(J\) exceeds that and the treated unit is inside the donors’ hull, an entire polytope of weight vectors fits perfectly and they imply different counterfactuals. The reported effect is then chosen by the solver, not the data. That page gives a short linear program that returns the range of effects the data cannot distinguish, and shows the fix: Vanilla Synthetic Control (VanillaSC) with backend="penalized" (Abadie-L’Hour), whose penalty makes the solution unique and sparse for any positive \(\lambda\).

Part 2 — Many treated units#

The base case for multiple treated units is Synthetic Difference-in-Differences (SDID) – Synthetic Difference-in-Differences, doubly weighted by unit and time weights – which works whether adoption is simultaneous or staggered and degrades gracefully when parallel trends or exact matching fail. Escalate from there.

Q2.1 · Do all treated units adopt at the same time?

Micro-level versus disaggregated: two ways to use granular data. MicroSynth (User-Level Balancing SC) and Multi-Level Synthetic Control (mlSC) both reach below the level at which treatment is assigned, but they answer different questions and the authors motivate them differently. Robbins, Saunders and Kilmer (2017) design MicroSynth (User-Level Balancing SC) for settings where the treated region itself is a bundle of many micro-units (census blocks in a neighbourhood) measured on many covariates and several outcomes at once. Their contribution is calibration: weights are chosen so the synthetic control matches the treated region exactly across all of those covariates and outcomes simultaneously – a survey-weighting construction, not a single-outcome fit – and inference comes from a permutation procedure over placebo areas plus an omnibus statistic that tests jointly across outcomes and post-periods, so the many-outcome problem is handled without ad hoc multiple-comparison patching. Use it when the granularity is in the treated unit and you need one set of weights to balance a wide panel of characteristics and outcomes. Bottmer (2025) frames Multi-Level Synthetic Control (mlSC) around a different decision: when outcomes are observed below the assignment level (county outcomes under a state policy), should you fit aggregated, disaggregated, or some blend? Disaggregating the controls expands the donor pool and can sharply improve aggregate-level precision, but enlarging it past the pre-period count risks overfitting and non-uniqueness. mlSC makes the aggregation choice data-driven, regularising toward the classical aggregated SC and letting the data decide how much disaggregated control variation to exploit. Prefer Multi-Level Synthetic Control (mlSC) when the question is how aggressively to disaggregate a donor pool, and MicroSynth (User-Level Balancing SC) when the treated side is a granular many-outcome bundle you need to balance exactly.

Q2.2 · Staggered: do you just want the overall / event-study ATT?

  • Yes, just staggered – Synthetic Difference-in-Differences (SDID) (per-cohort + aggregate) is the simplest. A lightweight alternative is Rolling-Transformation DiD (ROLLDID), the Lee–Wooldridge rolling-transformation DiD, which rolls each cohort’s pre/post contrast forward and pools them. If you want partial pooling across cohorts or oracle efficiency under interactive fixed effects, escalate to Partially Pooled SCM (PPSCM) or Sequential Synthetic Difference-in-Differences (Sequential SDiD).

  • Staggered, long pre-period, few/no never-treated units, and you want an event study without parallel trends – Staggered Synthetic Control (SSC) (Staggered Synthetic Control). It builds each unit’s synthetic control from all other units (not-yet-treated included), so it needs no never-treated pool, and gives event-time ATTs with Andrews end-of-sample inference. Best with a long pre-period (large \(T\), moderate \(N\)).

  • Staggered, with a clean never-treated donor pool, and you want the simplex synthetic-control answer – one synthetic control per treated unit, on its own pre-period – with the full Cattaneo–Feng–Palomba–Titiunik causal predictands (per-unit ATTs, the event-time average effect, the overall ATT) and their prediction intervals – Vanilla Synthetic Control (VanillaSC) handles staggered adoption natively. It detects the multiple treated units from the treatment column, fits each on the never-treated donors and aggregates, with or without covariate (multi-feature) matching, reproducing the scpi package. The choice between it and the Synthetic Difference-in-Differences (SDID) base case follows the two methods’ own arguments. Arkhangelsky et al. (2021) motivate SDID by its unit fixed effects, which match cohorts on pre-treatment trends, not levels – absorbing a constant level gap, and so deliberately loosening synthetic control’s requirement that the treated unit lie inside the donors’ convex hull – plus time weights that downweight uninformative pre-periods. Cattaneo, Feng, Palomba and Titiunik (2025) build instead on the canonical convex (simplex) SC, which does not extrapolate, and contribute non-asymptotic prediction intervals whose guarantees hold in the small samples SC applications typically have. So prefer Synthetic Difference-in-Differences (SDID) when no convex combination of donors can match a cohort’s level (you need the intercept to absorb the gap) or some pre-periods are unrepresentative; prefer staggered Vanilla Synthetic Control (VanillaSC) when the simplex fit already tracks the cohorts on levels – keeping interpretable, non-extrapolating weights and the finite-sample CFPT intervals, with no DiD intercept or reweighted periods.

  • Staggered, with a never-treated pool, and you believe the units co-move through latent common factors with unit-specific sensitivities – Generalized Synthetic Control (GSYNTH) (Xu 2017). It fits an interactive fixed effects model on the never-treated units alone, then places each treated unit in that estimated factor space using its own pre-adoption history, so the counterfactual comes from a projection onto factors and not from a weighted average of donors. No convex-hull condition binds and staggered dates need no special handling. It selects the factor count by a deterministic leave-one-pre-period-out cross-validation and reports a parametric-bootstrap interval. Prefer it over Synthetic Difference-in-Differences (SDID) when the treated units’ responses to common shocks differ (so a common time effect is indefensible), and over staggered Vanilla Synthetic Control (VanillaSC) when the treated units sit outside the donors’ hull; prefer either of those when you want interpretable donor weights, which a factor projection does not produce. It requires a never-treated pool and absorbing adoption.

  • A factor structure, but you want the uncertainty as a posterior and you do not know which covariates matter or how many factors to use – DMLFM (Pang, Liu & Xu 2022). It is the Bayesian sibling of Generalized Synthetic Control (GSYNTH): the same latent-factor logic, but each covariate’s coefficient may vary by unit, by time, or neither, and a shrinkage prior on the loading scales drops the factors the data will not support, so neither the covariate set nor the factor count needs a cross-validation step. The counterfactual is a posterior predictive draw, so the credible band is read off directly. Choose it over Generalized Synthetic Control (GSYNTH) for those features, not for accuracy: on the authors’ own simulations DMLFM has the lower RMSE in six of eighteen cells and the higher in twelve, with coverage closer to nominal in seven against gsynth’s ten, at eleven to eighty seconds a fit against under two. It needs a balanced panel, one treated unit in this implementation, and about twenty pre-treatment periods before its frequentist properties settle.

  • Staggered and spillovers onto donors – Spatial Synthetic Difference-in-Differences (SpSyDiD).

  • Staggered and missing cells / gaps, or every unit eventually treated – Matrix Completion with Nuclear Norm Minimization (MCNNM) (matrix completion handles staggered missingness natively and needs no never-treated pool, which is where Generalized Synthetic Control (GSYNTH) stops).

  • Exposure defined by a within-unit subgroup (a triple difference), and you distrust parallel trends across that third dimension – Synthetic Difference-in-Differences (SDID) in its synthetic triple-difference mode (subgroup / target_subgroup; Zhuang 2024). It demeans the outcome by the non-target subgroup within each treatment-group-by-time cell, reducing the DDD to a DID, then runs SDID on the exposed subgroup – so the counterfactual is a weighted combination of control units, not a parallel-trends extrapolation across states and subgroups. Reach for it when, e.g., only one age band in a state is policy-exposed.

  • You have time-varying controls you need to hold fixed – Synthetic Difference-in-Differences (SDID) with covariates (Kranz 2022). Plain SDID admits unit and time effects and nothing else, so a covariate that moves within a unit over time sits in the residual the synthetic control is matching. The option regresses the outcome on the covariates with unit and time fixed effects, using the rows with no treatment in force, and subtracts the covariate part from the whole panel before the estimator runs. Seasonal dummies are the motivating case. Do not reach for it when the covariate is itself a channel of the treatment effect, which the adjustment would remove along with the confounding.

Which staggered synthetic control? Three SC-family methods target this same setting on different arguments, and the choice turns on your donor pool, sample length, and estimand. Staggered Vanilla Synthetic Control (VanillaSC) (Cattaneo, Feng, Palomba and Titiunik, 2025) fits the canonical convex SC for each treated unit on a never-treated donor pool and is built around non-asymptotic (finite-sample) prediction intervals – the authors stress these precisely because SC applications usually have small samples; reach for it when you have clean never-treated donors, want non-extrapolating convex weights, and need valid intervals even with a short pre-period. Partially Pooled SCM (PPSCM) (Ben-Michael, Feller and Rothstein, 2022) instead targets the average effect across treated units: it shows that fitting weights separately per unit (good unit fits, poor average) or pooling them (good average, poor unit fits) each biases one of the two imbalances, and proposes partially pooled SCM that trades them off, with a de-meaning (intercept) step that turns it into a weighted difference-in-differences; reach for it when the average ATT is the headline estimand and a level shift between treated units and donors must be absorbed. Staggered Synthetic Control (SSC) (Cao, Lu and Wu, 2026) drops the never-treated requirement altogether – it builds each unit’s control from all other units, not-yet-treated included, explicitly because methods that lean on never-treated units deteriorate when those are scarce – and bases inference on Andrews’ end-of-sample test under large-\(T\) asymptotics; reach for it when most units are eventually treated, the pre-period is long, and you want event-time ATT inference without parallel trends. The distinct case of many treated units in a high-dimensional, disaggregated panel adopting at the same time (Q2.1) is Multivariate Square-root Lasso Synthetic Control (MSQRT) (Shen, Song and Abadie, 2025): it pools the treated units into one matrix regression with a tuning-free square-root-lasso, chosen for computational efficiency and to preserve individual counterfactuals where fitting each unit separately is slow and aggregating them would blur unit-level effects or add interpolation bias.

Part 3 — Designing an experiment#

You are choosing whom to treat, not estimating an effect; these return assignments and power / MDE curves, not ATTs. Order by what estimand you care about, easiest target first.

Why design at all, and which design method. The shared premise of this family, argued most directly by Doudchenko et al. (2021) and Abadie and Zhao (2026), is that when treatment can only be applied to a few large, expensive units (media markets, regions, whole products) randomization is unbiased ex ante but, over the single assignment you actually run, routinely hands you treated and control groups with very different baselines – a draw you cannot average away. If you hold pre-treatment panel data, you can do better by choosing the split. The methods then split on two axes: the estimand they target, and how they solve the (NP-hard) assignment problem. Doudchenko et al. cast the joint choice of treated set and donor weights as a mixed-integer program that directly minimises the ATT estimator’s mean squared error (Synthetic Design (SYNDES)) – provably optimal but combinatorial. mlsynth solves its two-way form by searching treated sets over the Gram matrix instead, which is exact wherever the candidate count is enumerable and reports a bound where it is not. Lu, Li, Ying and Blanchet (2022) attack the same covariate- balancing design but reformulate it as a phase-synchronisation problem solved by a spectrally-initialised power method (Synthetic Principal Component Design (SPCD)), trading the MIP’s exactness for a global optimality guarantee under the linear factor model and a runtime in seconds, not minutes – prefer it when the unit count makes the MIP slow. Abadie and Zhao instead target the population ATE: they choose synthetic-treated and synthetic-control groups whose pre-experiment predictors match the population means (Synthetic Controls for Experimental Design (MAREX)), a convex design that lowers bias relative to randomization and (their Theorem 1) shifts structure from unobserved loadings into observed covariates. Vives-i-Bastida (2022) extends that framework to multiple outcomes and adds the minimum-detectable-effect machinery and practical exclusion / fairness constraints that Lexicographic Synthetic Control (LEXSCM) uses to optimise validity first and power second. The geo-rollout member – Parallel-Trends Supergeo Design (PANGEO) (no unit left untreated, trajectory-matched supergeos) – is the applied-marketing specialisation for a full roll-out; market selection under a budget is handled by the ATT/ATE designs above (Synthetic Design (SYNDES), Lexicographic Synthetic Control (LEXSCM), Synthetic Controls for Experimental Design (MAREX)). The questions below route to each.

Q3.1 · Do you only care about the ATT (the effect on the treated units)?

Q3.2 · Do you care about the population ATE (a population-level contrast, not just the treated)?

Q3.3 · Must every unit end up either treated or control – no pure-donor pool left over – as in a geo roll-out?

  • Yes – Parallel-Trends Supergeo Design (PANGEO) groups geos into balanced supergeos, trims no unit, and matches on the full pre-period trajectory for a downstream difference-in-differences read.

  • Scoring by simulated power on your own history – Geo Experiment Design (GEOX) slides a pretend treatment window backwards through the panel, injects a lift of known size, and ranks candidate test regions by the smallest lift it reliably detects. The same backtests report how far each design’s estimate lands from the lift that was injected, so a region that detects small effects and misstates them is visible as such. The design is chosen by the estimator that will analyse the result, and which estimator that is is a setting: engine="sdid" differences out a level gap between the test region and its donors instead of having to match it, engine="augsynth" is the augmented synthetic control GeoLift scores with.

Q3.4 · Are you planning a marketing geo-lift test – pick which markets to treat so the untreated markets form a clean control, often under a budget?

Q3.5 · Designing across groups (regions / arms / strata)? Three mechanisms look similar but are distinct – pick by what you want, not by the word “group”:

  • A separate experiment per group – its own estimand and donor pool: Synthetic Controls for Experimental Design (MAREX)’s cluster (baked into the per-cluster objective) or Synthetic Design (SYNDES)’s arm (separate solves). Use when each region/arm is its own study.

  • One design representative of every group (coverage): the stratum quota stratum_col + min_per_stratum / max_per_stratum – one shared donor pool, one estimand. Honoured by all three design methods; in MAREX it can also be expressed as the per-cluster cardinality when each region is its own design.

  • One design with geographic / forcing limits: the restriction suite (force in/out, border conflict, cluster, coverage quota, size band) is honoured by all three design methods – SYNDES, LEXSCM, and MAREX – so a constraint binds whichever method (or comparison) you run.

A constraint cannot turn one design into K designs, so cluster / arm are not special cases of the quota; the quota is the lighter choice when you only need coverage in a single design.

Failure-mode index#

A reverse lookup: the symptom, and the method named for it.

Complication

Reach for

No control group (everyone treated)

Synthetic Historical Control (SHC), Gaussian-Process Interrupted Time Series (GPITS)

Randomized, few large units

Modified Unbiased Synthetic Control

Endogenous treatment, have an instrument

Synthetic IV

Endogenous treatment, have proxies / negative controls

Proximal Inference Synthetic Control (PROXIMAL)

Honest CI / t-test for the ATT despite partially identified weights

Orthogonalized Synthetic Control

Parallel trends holds (fixed-T, large-N)

difference-in-differences (off-ramp); Synthetic Difference-in-Differences (SDID), Forward Difference-in-Differences (FDID)

Single treated unit, no complications

Forward Difference-in-Differences (FDID), Vanilla Synthetic Control (VanillaSC), Two-Step Synthetic Control

Spillovers onto donors (SUTVA), spatial

Spatial Synthetic Difference-in-Differences (SpSyDiD)

Spillovers onto donors, enumerable per-unit

Spillover-Aware Synthetic Control (SPILLSYNTH)

Contaminated donors unknown / large pool to screen

Spillover-Detecting Synthetic Control (SPOTSYNTH)

Treated unit outside the donor convex hull

Imperfect Synthetic Controls (ISCM), Nonlinear Synthetic Control (NSC), Relaxed / Penalized Synthetic Control (RESCM), Panel Data Approach (PDA)

Nonstationary / spurious-trend matching

Synthetic Business Cycle (SBC), Harmonic Synthetic Control (HSC)

Decompose the effect through a mediator (mechanism)

Mediation Analysis Synthetic Control (MEDSC)

Time-varying dynamics / persistent factors / noise

Time-Aware Synthetic Control (TASC), Factor Model Approach (FMA), Bayesian Factor Synthetic Control (BFSC), Multitask Gaussian Process Synthetic Control (MTGP), Dynamic Synthetic Control for Auto-Regressive processes (DSCAR)

Nonlinear outcome surface

Nonlinear Synthetic Control (NSC)

Donor pool large vs pre-period (N ≳ T0)

Forward-Selected Synthetic Control (FSCM), Sparse Synthetic Control (SparseSC), Panel Data Approach (PDA), Relaxed / Penalized Synthetic Control (RESCM), Cluster Synthetic Controls (CLUSTERSC), Bayesian Synthetic Control with a Soft Simplex Constraint (BVS-SS)

Missing cells, MNAR

Synthetic Nearest Neighbors / Causal Matrix Completion (SNN), Matrix Completion with Nuclear Norm Minimization (MCNNM)

Block-missing with unit/time covariates (side information)

Robust Matrix estimation with Side Information (RMSI)

Distributional estimand (QTE, Lorenz, tails)

Distributional Synthetic Control (DSC)

Continuous / multi-valued treatment

Continuous-Treatment Synthetic Control (CTSC)

Several related outcomes / short pre-period

Synthetic Control with Multiple Outcomes (SCMO)

High-frequency outcome / aggregate the pre-period

Synthetic Control with Temporal Aggregation (SCTA)

Several distinct intervention arms

Synthetic Interventions (SI)

Interpolation bias (interpolating across dissimilar donors)

Matching and Synthetic Control (MASC)

Many treated, same time

Synthetic Difference-in-Differences (SDID), MicroSynth (User-Level Balancing SC), Multi-Level Synthetic Control (mlSC)

Many treated at once, high-dimensional donor pool (block design)

Multivariate Square-root Lasso Synthetic Control (MSQRT)

Many treated, staggered adoption

Synthetic Difference-in-Differences (SDID), Vanilla Synthetic Control (VanillaSC) (simplex SC per unit, CFPT intervals), Rolling-Transformation DiD (ROLLDID), Partially Pooled SCM (PPSCM), Sequential Synthetic Difference-in-Differences (Sequential SDiD), Matrix Completion with Nuclear Norm Minimization (MCNNM)

Staggered, never-treated pool, latent factors with unit-specific loadings

Generalized Synthetic Control (GSYNTH)

Staggered, long pre-period, few never-treated (event study)

Staggered Synthetic Control (SSC)

Designing for the ATT

Synthetic Design (SYNDES), Synthetic Principal Component Design (SPCD), Synthetic Controls for Experimental Design (MAREX)

Designing for the ATE

Synthetic Controls for Experimental Design (MAREX), Lexicographic Synthetic Control (LEXSCM)

Designing a geo roll-out (no pure donors)

Parallel-Trends Supergeo Design (PANGEO)

Designing a geo-lift test (pick markets, one or many cells)

Geo Experiment Design (GEOX), Synthetic Design (SYNDES), Lexicographic Synthetic Control (LEXSCM), Synthetic Controls for Experimental Design (MAREX)

When in doubt, fit two or three of the candidate methods and compare the counterfactuals and ATTs. Disagreement is itself diagnostic: it usually means one of the gates above is binding harder than you thought.

Whichever method you pick, the Truncated History robustness check robustness check re-estimates it on truncated pre-treatment windows and profiles the effect against the pretreatment horizon – a stable profile supports the causal reading, an unstable one says report an interval. It is the pretreatment-horizon companion to the in-space placebo and leave-one-out checks.