IESET.
Hypotheses·labour·labour_reform_macron_2017_ordonnances_employment_effect

The 2017 Macron ordonnances (CDI flexibilisation, dismissal-cost ceilings, branch-vs-firm bargaining inversion) raised the French private-sector employment-to-population ratio by at least 1.0 pp over the 2017-2019 pre-COVID window relative to a synthetic control of non-reforming euro-area peers, with no offsetting rise in headline poverty rate at 60% of median income.

PARTIALengine/runs/labour_reform_macron_2017_ordonnances_employment_effect

PARTIAL — mean_gap=-1.801, |gap|/pre_sd=3.6, p_perm=0.75 (gap below 0.5×pre_sd or placebo p≥0.10)

confidence cueThe result is useful, but not decisive. Treat it as a clue, not a settled conclusion.

policy briefMixed or noisy

In ordinary language

Over a long period, do more market-oriented institutions translate into higher income or productivity, once the comparison looks beyond a single success story?

plain answer

The evidence is suggestive but not decisive. mean_gap=-1.801, |gap|/pre_sd=3.6, p_perm=0.75 (gap below 0.5×pre_sd or placebo p≥0.10)

why it matters

Labor-market rules often help some workers while risking job loss or slower hiring for others. This test looks for that tradeoff in observable employment or unemployment data.

how the test works

It compares 8 country or place units from 2010 to 2019, using a synth did design, with fixed effects for country and year.

what was measured
What changed
  • Macron ordonnances event
What we checked
  • Employment to population ratio
  • Poverty rate at 60 median
  • Long term unemployment share
what this does not prove

A single test is not the whole truth. It narrows the claim under a specific sample, time period, and method. Strong policy conclusions need the pattern to survive nearby tests, alternative data, and serious objections.

verification

No evidence packet has been generated yet.

Results

engine/runs/labour_reform_macron_2017_ordonnances_employment_effect
1007550250201020152019FRADEUNLDBELAUTFINIRL
illustrative sketch · run pending
No coefficients yet. When the model fires, this chart will show employment_to_population_ratio across 8 sampled countries over 20102019.
The shapes above are stylised — none of the lines are real data.
Placeholder for labour_reform_macron_2017_ordonnances_employment_effect. Published chart will be generated from engine/runs/labour_reform_macron_2017_ordonnances_employment_effect/chart_data.json.

Pre-registration

pre-registered
first-spec commit 098ce96 · 2026-04-30T12:57:33Z
run generated · 2026-04-30T10:51:39Z

The 2017 Macron ordonnances (CDI flexibilisation, dismissal-cost ceilings, branch-vs-firm bargaining inversion) raised the French private-sector employment-to-population ratio by at least 1.0 pp over the 2017-2019 pre-COVID window relative to a synthetic control of non-reforming euro-area peers, with no offsetting rise in headline poverty rate at 60% of median income.

Falsification criterion — what would disprove this

set before the run · honoured after

This hypothesis is considered falsified if:

SUPPORTED if synthetic-control gap on employment-to-population > +1.0 pp at 2019 horizon AND headline poverty rate at 60% median is not statistically distinguishable from donor pool at p<0.10. REFUTED if employment gap is wrong-signed at p<0.10 OR poverty rate worsens by >+1.0 pp vs donor pool. PARTIAL if employment gap is +1.0 pp but poverty also rises by +0.5 to +1.0 pp.

formal test & threshold
test:      Synth-DiD on French employment-to-population trajectory and headline poverty rate 2017-2019 against euro-area donor pool; placebo-permutation inference at p<0.10.

Method

Template
synth_did
Fixed effects
country, year
Clustering
country
Sample
8 countries · 20102019
Evidence type
associational

Data

VariableSourceTransform
employment_to_population_ratio
outcome
world_bank_wdi:SL.EMP.TOTL.SP.ZStier 2
level
poverty_rate_at_60_median
outcome
eurostat:ilc_li02tier 1
level
long_term_unemployment_share
outcome
oecd:DSD_LFStier 2
level
macron_ordonnances_event
treatment
constructed:indicator for 2017-Q4 ordonnances enactmenttier 5
indicator
gdp_per_capita_real
control
world_bank_wdi:NY.GDP.PCAP.KDtier 2
log
ecb_policy_rate
control
ecb:FMtier 1
level
trade_openness
control
world_bank_wdi:NE.TRD.GNFS.ZStier 2
level

ready  ·  pending  ·  reconstruct-needed

Detailed result card

Result card — labour_reform_macron_2017_ordonnances_employment_effect

Verdict: PARTIAL — mean_gap=-1.801, |gap|/pre_sd=3.6, p_perm=0.75 (gap below 0.5×pre_sd or placebo p≥0.10)

Pre-registration

  • Claim: The 2017 Macron ordonnances (CDI flexibilisation, dismissal-cost ceilings, branch-vs-firm bargaining inversion) raised the French private-sector employment-to-population ratio by at least 1.0 pp over the 2017-2019 pre-COVID window relative to a synthetic control of non-reforming euro-area peers, with no offsetting rise in headline poverty rate at 60% of median income.
  • Falsification rule: SUPPORTED if synthetic-control gap on employment-to-population > +1.0 pp at 2019 horizon AND headline poverty rate at 60% median is not statistically distinguishable from donor pool at p<0.10. REFUTED if employment gap is wrong-signed at p<0.10 OR poverty rate worsens by >+1.0 pp vs donor pool. PARTIAL if employment gap is +1.0 pp but poverty also rises by +0.5 to +1.0 pp.

Synthetic-control estimate

  • shape: synth_did
  • treated_country: FRA
  • event_year: 2017
  • n_donors: 7
  • donor_weights (top): {'BEL': 0.6031, 'FIN': 0.3969, 'DEU': 0.0, 'NLD': 0.0, 'AUT': 0.0}
  • pre_rmse: 0.779555353852723
  • pre_period_sd: 0.4966234081512963
  • mean_post_gap: -1.800559908857096
  • end_period_gap: -2.3625040653273004
  • post_period_years: [2017, 2019]
  • placebo_p_value: 0.75
  • n_placebos: 7
  • method: synthetic-control via NNLS, permutation inference

Variables resolved

  • world_bank_wdi:SL.EMP.TOTL.SP.ZS → employment_to_population_ratio (outcome, n=8071)
  • world_bank_wdi:NY.GDP.PCAP.KD → gdp_per_capita_real (controls, n=14066)
  • world_bank_wdi:NE.TRD.GNFS.ZS → trade_openness (controls, n=10714)

Generated by scripts/run_synth_did.py at 2026-04-30T10:51:39+00:00

Strongest opposing argument

Every hypothesis ships with its charitable opposing argument. The framework earns credibility by handling objections at their strongest, not weakest.

Notes

Treatment is dated 2017-Q4 (signing of the five ordonnances). Sample window pre-COVID to isolate the Macron effect from the pandemic shock; 2020-2022 reserved for robustness. The pairing of an employment outcome with a poverty outcome is the steelman-driven design — heterodox readers can win cleanly if employment moves but poverty also rises.

Authored framework. Read the transparency note.