RESCM — SCM-relaxation (Liao, Shi & Zheng 2026)#

Estimator:

Relaxed / Penalized Synthetic Control (RESCM)mlsynth.RESCM (relaxation branch: RELAX_L2 / RELAX_ENTROPY / RELAX_EL)

Source:

Liao, Chengwang, Zhentao Shi, and Yapeng Zheng (2026), “A Relaxation Approach to Synthetic Control,” arXiv:2508.01793 [RelaxSC].

Replication type:

Path A — the paper’s Brexit / UK real-GDP empirical — and cross-validation — mlsynth’s L2 relaxation matched cell-by-cell against the authors’ scmrelax package.

Status:

Verified — empirical reproduced and engine cross-validated.

Validation strategy#

SCM-relaxation keeps the simplex but relaxes the exact balance first-order condition to an \(\ell_\infty\) tolerance \(\eta\), then minimizes an information-theoretic divergence (squared \(\ell_2\), entropy, or empirical likelihood) over the relaxed feasible set. The relaxed-balance program is scale-sensitive, so mlsynth exposes a standardize flag (mlsynth.config_models.RESCMConfig): standardize=False solves on the raw series, matching the authors’ reference; True (the historical default) standardizes the donor columns first.

The authors ship two public repositories, both linked from the estimator page: the scmrelax package (metricshilab/scmrelax) and the Brexit application (YapengZheng/Relaxed_SC). We use both.

Path A — Brexit / UK real GDP#

On the authors’ balanced_GDP_data.csv (United Kingdom + 57 donor economies, quarterly real GDP 2002Q4-2024Q2; treatment 2016Q3), the outcome is year-over-year GDP growth and the cumulative level effect is rebuilt by compounding the predicted no-Brexit growth path. With standardize=False the L2 relaxation gives a cumulative UK GDP loss of about 4.0% (paper: 3.85%), and reproduces the paper’s weight contrast: the relaxation is dense and weights the major EU economies (Germany, France, Italy) — exactly the donors the sparse classic SC drops while concentrating ~0.30-0.36 on the United States.

A subtlety the paper itself stresses: with \(J = 57\) donors and only \(T_0 = 51\) pre-periods, the classic SC weight vector is non-unique (different solvers select different optimal vertices, all with near-perfect pre-fit), so its cumulative loss is solver-dependent. The relaxation is unique and stable — which is the point of the method — so the benchmark asserts the well-posed relaxation result and the robust sparse-vs-dense weight contrast. Durable case: rescm_brexit.

Cross-validation — mlsynth vs scmrelax#

Because the authors’ package is public, the strongest available evidence is a cell-by-cell match. On a shared panel at a matched relaxation level \(\tau\), mlsynth’s L2 relaxation (through the public RESCM(methods=["RELAX_L2"], tau=tau, standardize=False)) agrees with scmrelax.L2RelaxationCV to solver precision — donor-weight \(L_1\) distance \(\approx 0.0014\), maximum absolute difference \(\approx 3.6\times10^{-4}\) — as expected for two independent implementations of the same unique QP. The case routes scmrelax’s hardcoded MOSEK dependency to an open solver (the L2 program is a QP, so the optimum is solver-invariant) and skips gracefully when scmrelax is unavailable. Durable case: rescm_relax_ref.

Path B — the latent-group Monte Carlo#

The paper’s Section-5 simulation is where the relaxation’s advantage shows: under a latent-group factor DGP with many more donors than pre-periods (\(J \gg T_0\)), classic SC overfits its non-unique exact-balance weights and predicts poorly out of sample, while the L2 relaxation recovers the dense, group-diversified oracle weighting. The paper’s Table 1 reports out-of-sample prediction-error ratios of the relaxation vs SC of \(\approx 0.15\)\(0.53\).

mlsynth reproduces this: at \(J = 120\), \(T_0 = 40\), with cross-validated \(\tau\), the L2 relaxation’s post-period error against the oracle counterfactual is \(\approx 0.43\) of classic SC’s (median over reps), and it beats SC in \(\approx 73\%\) of reps.

Two calibration points are essential and worth remembering:

  • Measure against the oracle counterfactual, not the noisy realization. The realized \(y_0\) carries the treated unit’s own idiosyncratic noise, an irreducible error floor added to every method equally; it compresses all ratios toward 1 (median \(\approx 0.87\) against \(y_0\) vs \(\approx 0.43\) against the oracle) and hides the effect.

  • Use the median, not the mean. With a cross-validated \(\tau\) on a coarse grid, an occasional rep selects a loose \(\tau\) (weights collapse toward uniform) and inflates its ratio; the median rep shows the paper’s effect while those outliers drag the mean to \(\approx 1\).

The case pins L2 (the paper’s recommended method, fast via the OSQP path); a full multi-method MC over the exp-cone entropy/EL relaxations is a follow-up, gated on an efficient large-\(J\) solve for those (their DPP form carries a \(J\times J\) Gram parameter that is inefficient at the large \(J\) this regime needs). Durable case: rescm_relax_mc.