VanillaSC – lost-autonomy triggers and secessionism

VanillaSC – lost-autonomy triggers and secessionism#

Estimator:

Vanilla Synthetic Control (VanillaSC)mlsynth.VanillaSC

Source:

Schulte, F., Scantamburlo, M. and Ackren, M. (2026), “Lost autonomy triggers and the rise of secessionism,” European Political Science Review 18:175-193, DOI 10.1017/S175577392510026X.

Replication type:

Path A – reproduce the paper’s empirical finding on the authors’ data, and track the authors’ published synthetic-control series.

Status:

verified – mlsynth recovers the paper’s finding (a large post-trigger secessionist surge in both cases) and tracks the authors’ synthetic closely; the agreement with their specific package is close, not value-for-value.

What the paper does#

Secessionist movements often surge suddenly. Schulte, Scantamburlo and Ackren (2026) argue that a “lost-autonomy trigger” – a dramatic event symbolising a loss of self-rule – can set off such a surge, and test this with synthetic control. They study two cases: the 2010 Spanish Constitutional Court decision that pared back Catalonia’s autonomy statute, and the 1994 economic shock (a major bank collapse and Denmark-imposed constraints) in the Faroe Islands. For each treated region they build a synthetic control from the other European autonomous regions and read the post-trigger gap in secessionist sentiment (av_sec1_all), with an in-space placebo (RMSPE-ratio) test for inference.

Their replication uses the SyntheticControlMethods Python package (Synth, pen="auto", n_optim=100) with covariate predictors – a penalized (Abadie-L’Hour) synthetic control with a V-optimized predictor match.

Method mapping#

mlsynth’s canonical counterpart is VanillaSC with backend="outcome-only" – the well-posed convex problem, donor weights on the simplex minimising the pre-treatment outcome fit – and inference="placebo", the same in-space RMSPE-ratio test. The panel is the authors’ basedata/secession_autonomy.csv (13 autonomous regions, 1975-2021); each treated region is compared with the other twelve as donors, and treatment turns on at the trigger year (Catalonia 2010, Faroe Islands 1994).

The finding reproduces#

Both methods deliver the paper’s headline – a large post-trigger surge in secessionist sentiment in both regions:

Quantity

VanillaSC (outcome-only)

Authors (SyntheticControlMethods)

correlation

Catalonia – post-2010 gap (ATT)

\(+28.0\)

\(+23.9\)

0.92

Faroe Islands – post-1994 gap (ATT)

\(+23.9\)

\(+26.8\)

0.75

Catalonia – pre-2010 fit RMSE

2.66

2.85

Faroe Islands – pre-1994 fit RMSE

4.92

5.05

Under the in-space placebo, Catalonia is the extreme case (RMSPE-ratio \(p \approx 0.077\), the smallest attainable with thirteen regions), while the Faroe result is weaker – consistent with the paper treating Catalonia as the cleaner test. The Catalonia synthetic leans on South Tyrol.

A note on tightness#

This is a close reproduction, not a value-for-value one. The reference is a different implementation – SyntheticControlMethods optimises predictor (V) weights, auto-selects an Abadie-L’Hour penalty, and uses one hundred random restarts – so mlsynth’s deterministic outcome-only fit tracks the authors’ synthetic (correlation 0.75-0.92) and lands within about fifteen percent on the ATT, rather than matching digit for digit. mlsynth’s pre-treatment fit is in fact a touch tighter in both cases, which is expected: outcome-only minimises exactly the pre-period outcome error, whereas the authors’ penalized, covariate-matched fit trades a little of that for predictor balance and regularisation. When mlsynth is put on the same regularised footing (backend="penalized" or "mscmt" with the paper’s covariates) it lands right around the authors’ fit.

Because the cross-package agreement is approximate, this case appears on the Validation dashboard dashboard as a documented row – an honest cross-package comparison (same finding, different SC engine, about fifteen percent apart on the ATT) rather than a value-for-value exact or tight match.

Verification#

The check is committed as the secession_scm benchmark case (benchmarks/cases/secession_scm.py), which runs VanillaSC on the shipped panel and asserts the deterministic ATT, pre-treatment RMSE, in-space placebo p-value, and the correlation with the authors’ published synthetic (captured under benchmarks/reference/secession_scm/). The fast offline unit test is mlsynth/tests/test_secession_replication.py.