Retour à l’article
Article Notebook
Télécharger le code source

Quelles trajectoires pour les finances publiques de la France ?

Autrices, auteurs & résumé
Par
Eric Heyer ; Mathieu Plane ; Xavier Ragot ; Raul Sampognaro ; Xavier Timbeau ;
Publié le

11 juillet 2025

Modifié le

11 juillet 2025

In [1]:
ofce::init_qmd()
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.2     ✔ tibble    3.3.0
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.0.4     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Using libcurl 8.14.1 with Schannel


Attachement du package : 'curl'


L'objet suivant est masqué depuis 'package:readr':

    parse_date



Attachement du package : 'scales'


L'objet suivant est masqué depuis 'package:purrr':

    discard


L'objet suivant est masqué depuis 'package:readr':

    col_factor


qs 0.27.3. Announcement: https://github.com/qsbase/qs/issues/103

[conflicted] Will prefer rlang::set_names over any other package.
library(curl)
library(insee)
library(ggthemes)
library(patchwork)
library(rdbnomics)
Visit <https://db.nomics.world>.
library(cowplot)
library(svglite)
library(grid)
library(readr)

options(
  ofce.caption.author = TRUE,
  ofce.caption.ofce = TRUE )

Principaux points

  • Le déficit de la France de 5,8% du PIB en 2024 est bien supérieur à la moyenne de la zone euro, qui est de 3,1%. L’écart de déficit entre la France et la zone euro s’est accru principalement de 2000 à 2007, puis après 2019 (figure 2).

  • Sans surprise, les différents historiques des déficits publics se traduisent par des évolutions différenciées des dettes publiques des Etats Membres de la zone euro. Sur la période 2000-2024, la dette publique augmente de 53 points de PIB en France, de 27 points en Italie, 44 points en Espagne et de 5 points en Allemagne (figure 4).

  • Depuis 2017, en France, le creusement du déficit de 2,4 points de PIB s’explique par une baisse du taux de prélèvements obligatoires (de 2,5 points de PIB), dont 1,6 point se traduisent par une baisse des prélèvements payés par les ménages et 0,9 point pour les entreprises (figure 8).

  • Au cours de cette période, les dépenses publiques sont restées stables. Cependant, les prestations et transferts ont baissé de 0,8 point tandis que l’investissement public a augmenté de 0,5 point de PIB (tableau 4).

  • Selon nos simulations, l’application de la politique budgétaire inscrite dans le Plan budgétaire et Structurel à Moyen Terme (PSMT) présenté par le gouvernement en octobre 2024 et actualisé dans le cadre du Rapport d’Avancement Annuel (RAA) d’avril 2025 conduirait à un déficit de 3,0% en 2030, et un pic de la dette à 121,7% du PIB en 2029. Le chômage augmenterait à 9% dès 2027, avant de progressivement décroître à partir de 2030 (tableau 5).

  • Selon nos calculs, l’ajustement nécessaire à long terme pour stabiliser la dette à 110% du PIB est estimé à 3,5 points de PIB, soit environ 100 milliards d’euros de 2025 (tableau 6).

  • A l’horizon de 2029 (celui du PSMT), en appliquant un ajustement plus progressif, qui limite les impacts négatifs sur l’économie, l’ajustement devrait être de 2,8% du PIB, soit un peu plus de 80 milliards d’euros (contre un ajustement affiché dans le PSMT d’un peu plus de 110 milliards d’euros). Cependant l’ajustement de long terme est du même ordre de grandeur (tableau 6).

  • Avec des taux d’intérêt plus bas, cet ajustement jusqu’à 2029 pourrait être réduit à 2,5% du PIB, soit 75 milliards d’euros. La France doit avoir une crédibilité budgétaire pluriannuelle pour un ajustement progressif (tableau 6). Des propositions institutionnelles sont faites (section 3).

1 Une courte histoire comparée des finances publiques françaises

Au cours des années récentes, la France s’est singularisée par rapport à ses partenaires européens par l’ampleur de son déficit public. Ce dernier a atteint 5,8 % du PIB en 2024, ce qui a constitué le déficit le plus élevé de la zone euro. Selon les dernières projections gouvernementales1 le déficit public devrait rester important, à 5,4 % du PIB en 2025. Ce chiffre demeurerait le plus fort de l’Union Monétaire selon les projections de la Commission Européenne.

1 Selon les données de l’Agence France Trésor du 17 juin 2025, la maturité moyenne du stock de dette à moyen et long terme négociable de l’État est de 9 ans et 125 jours. Donc considérer qu’on renouvelle les titres arrivant à échéance par des titres à 10 ans laisserait la maturité moyenne des OAT quasiment inchangée.

Cette singularité des comptes publics de la France est le résultat d’une histoire constante sur plusieurs décennies : la France a éprouvé des difficultés à réduire son déficit public et à tenir ses engagements européens. Depuis que le Pacte de Stabilité et de Croissance a été mis en place en 1997, elle n’a tenu la cible de 3 % de déficit qu’au cours de huit années (soit moins d’une année sur trois), tandis que celle de 60 % du PIB pour la dette n’a été tenue que pendant deux ans. Dans le détail, on observe que le solde public hexagonal est systématiquement plus dégradé que celui de la zone euro dans son ensemble depuis 2002. Alors qu’au lancement de la monnaie unique la France affichait un déficit identique à celui de l’ensemble de l’union, la situation s’est creusée depuis et a plutôt tendance à s’amplifier (figure 1).

In [2]:
annots <- tribble(
  ~code, ~year, ~y, ~label,
  "EA20", 2008, -1.5, "Zone euro",
  "FRA", 2010.1, -7.4, "France" )

data <- sourcoise("/Consolide/data_eurostat.r")  |>
  filter(as.integer(year)>=2000)|>
  filter(as.integer(year)<=2024)

gg <- data |>
  mutate(
    tooltip = glue("<b>{COUNTRY}</b><br>{year}<br>Solde public : {round(def, 2)} %")) |> 
  ggplot()+
  aes(x=as.integer(year),
      y=def,
      color=code)+
  geom_text(
    data = annots,
    aes(x = year, y = y, color = code, label = label),
            size = text_size, size.unit = "pt", hjust =0) +
  geom_line()+
  geom_point_interactive(
    aes(fill  = code, tooltip = tooltip, data_id = year),
    size = 1., shape = 21, color="white", hover_nearest = TRUE ) +
  theme_ofce()+
  scale_color_pays()+
  theme(legend.position="bottom")+ 
  guides(colour = guide_legend(nrow = 1))+
  labs(x=NULL,
       y="en point de PIB",
       color=NULL)+
  ofce_caption("AMECO avril 2025")+
  scale_x_continuous(
    breaks = dates_breaks(5),
    labels = date1,
    minor_breaks = scales::breaks_width(1)
  )+
  geom_hline(yintercept=0, alpha=0.2, linewidth = 0.2)+
  guides(colour = "none", fill = "none",
         x = guide_axis(minor.ticks = TRUE))

girafy(gg, r=1.75)
Figure 1. Comparaison du solde public français et de la zone euro
wp_download(data |> rename(deficit = def), "deficit_public", "Déficits publics")

1.1 Vingt-cinq ans de divergence hexagonale

La divergence observée entre le déficit français et celui du reste de la zone euro peut être décomposée en différentes périodes2. Pour identifier les différentes périodes, nous comparons les indicateurs de finances publiques aux pics d’activité identifiés par le comité de datation des cycles économiques de l’AFSE3. Il faut remarquer que la crise des dettes souveraines de la zone euro n’a pas généré de cycle spécifique en France selon le comité de datation. Comme cette crise marque un jalon important dans les finances publiques en Europe, nous avons utilisé le pic d’activité identifié par le Euro Area Business Cycle Network.

2 Cette section ne cherche pas à identifier les bonnes politiques budgétaires, mais à poser un diagnostic. La discussion d’une bonne gestion des finances publiques est laissée aux sections section 2 et section 2.2.

3 La méthodologie de la datation du cycle économique est explicitée dans Aviat et al. (2021).

4 Le solde structurel est une mesure du solde public qui corrige le solde observé des effets de la conjoncture. Pour cela un modèle statistique relie le solde public à l’activité économique, mesurée par l’output gap, afin de tenir de l’effet du cycle économique sur les solde public.

Il apparaît que près de la moitié de l’écart entre le déficit public français et la moyenne de la zone euro a eu lieu avant la crise financière globale de 2007-2008 (tableau 1). Juste avant le déclenchement de la crise des subprimes, le déficit français s’établissait exactement au seuil des 3 % tandis que celui de la zone euro dans son ensemble était inférieur et en deçà de la cible de la gouvernance européenne. En effet, pendant la période 2000-2007 le solde structurel4 français s’est dégradé de 2 points de PIB selon les calculs du FMI, alors que celui de la zone euro s’est plutôt amélioré (+0,6 point). Cette différence de trajectoires budgétaires ne s’explique pas par l’évolution des recettes publiques, qui ont baissé de manière quasi-équivalente en France et en zone euro, mais plutôt par les dépenses publiques qui ont diminué en zone euro (-1,4 point de PIB) tandis qu’elles augmentaient de 1 point de PIB en France (figure 2). On peut bien sûr noter les différences de niveaux de recettes et de dépenses entre les pays européens, qui correspondent à des normes comptables et des choix sociaux qui se traduisent par des politiques différentes. Quels que soient ces choix, l’essentiel reste l’équilibre des comptes publics, mesuré par l’écart entre dépenses et recettes.

Plus spécifiquement, au cours de cette période, la divergence observée s’explique principalement par des orientations budgétaires distinctes entre la France et l’Allemagne. Selon les estimations du FMI, tandis que la France enregistrait une dégradation de son solde structurel de 2 points de PIB, l’Allemagne améliorait le sien de 4 points. Parmi les autres grands pays européens, le solde structurel progressait également en Italie (+1,3 point) et se stabilisait en Espagne.

Par la suite, avec la réponse à la crise financière globale l’écart entre la France et le reste de la zone euro s’est réduit. Ces chiffres suggèrent que les autres pays de la zone euro ont déployé une réponse budgétaire plus marquée que celle de la France, laquelle avait toutefois mis en oeuvre des mesures de soutien plus précoces, notamment à la suite de l’élection présidentielle de 2007 et de la mise en place de la loi TEPA – des mesures davantage liées au cycle électoral qu’à la conjoncture économique.

Au cours de la période suivante, l’effet différentiel de la crise de la zone euro, qui a conduit à des ajustements budgétaires substantiels dans les pays les plus directement affectés, a accentué la divergence. Entre 2012 et 2019, la France a engagé une politique d’ajustement budgétaire plus prononcée (hausse de 3,4 points de PIB du solde public structurel) que l’Allemagne (2,5 points), tout en restant moins contraignante que celle observée dans les pays les plus impactés par la crise des dettes souveraines, tels que la Grèce (6 points) ou le Portugal (7 points).

Depuis 2019, la situation budgétaire en France se dégrade de nouveau par rapport au reste de la zone euro. Alors que les dispositifs de soutien à l’économie mis en place suite à la crise sanitaire de 2020 puis à la crise énergétique (invasion de l’Ukraine par la Russie) sont en cours de retrait, l’écart du solde structurel entre la France et la zone euro en 2024 dépasse à nouveau les 2 points de PIB. Cet écart ne traduit plus une réponse différenciée aux crises survenues depuis 2019, mais reflète les effets durables des mesures de politique budgétaire adoptées récemment. Il convient de noter que cette dégradation n’est pas attribuable à une augmentation plus marquée des dépenses publiques en France par rapport à la zone euro (respectivement 1,8 et 2,6 points de PIB), mais plutôt à une diminution significative des recettes publiques françaises (-1,6 point de PIB), tandis que celles-ci sont restées stables au sein de la zone euro (figure 2).

In [3]:
# Chargement des données
donnees <- readxl::read_excel(pathify("/EMR/Data/Donnees PO-dep 2000.xlsx"))
New names:
• `` -> `...6`
• `` -> `...7`
donnees <- donnees %>%
  filter(
    Pays %in% c("France", "Zone euro"),
    Année >= 2000
  ) %>%
  mutate(
    Pays = factor(Pays, levels = c("France", "Zone euro")),
    Année = as.integer(Année)
  )

# Moyennes hors 2020 (2000–2024 sauf 2020)
moyennes <- donnees %>%
  # filter(Année != 2020) %>%
  group_by(Pays, Variable) %>%
  summarise(moyenne = mean(Valeur, na.rm = TRUE), .groups = "drop") %>%
  mutate(linetype = "Moyenne")

# Étendre moyennes sur toutes les années 2000–2024
annees_seq <- seq(2000, 2024, by = 1)
moyennes_long <- moyennes %>%
  group_by(Pays, Variable, linetype) %>%
  summarise(Année = list(annees_seq), .groups = "drop") %>%
  tidyr::unnest(cols = c(Année)) %>%
  left_join(moyennes, by = c("Pays", "Variable", "linetype")) %>%
  select(Pays, Variable, Année, moyenne, linetype)

# Flèches d’écart 2019 et 2024
valeurs_annees <- donnees %>%
  filter(Année %in% c(2019, 2024), Variable %in% c("Dépenses des APU", "Recettes des APU")) %>%
  select(Pays, Année, Variable, Valeur) %>%
  tidyr::pivot_wider(names_from = Variable, values_from = Valeur) %>%
  rename(Depenses = `Dépenses des APU`, Recettes = `Recettes des APU`) %>%
  mutate(
    ecart = Recettes - Depenses,
    label_ecart = paste0(format(round(ecart, 1), nsmall = 1), if_else(abs(ecart) >= 2, "%", "%")),
    x_arrow = Année,
    y_start = Depenses,
    y_end = Recettes,
    x_text = ifelse(Année == 2019, 2018.7, 2024.2),
    hjust_text = ifelse(Année == 2019, 1, 0)
  ) %>%
  mutate(
    # Décalage vertical spécifique pour 2019
    y_text = (y_start + y_end) / 2 +
      case_when(
        Pays == "France" & Année == 2019 ~ 0.4,      # texte France 2019 plus haut
        Pays == "Zone euro" & Année == 2019 ~ 0.05, # texte Zone euro 2019 plus bas
        TRUE ~ 0
      )
  )

# Flèche pour l’année 2000
valeurs_annees_2000 <- donnees %>%
  filter(Année == 2000, Variable %in% c("Dépenses des APU", "Recettes des APU")) %>%
  select(Pays, Année, Variable, Valeur) %>%
  tidyr::pivot_wider(names_from = Variable, values_from = Valeur) %>%
  rename(Depenses = `Dépenses des APU`, Recettes = `Recettes des APU`) %>%
  mutate(
    ecart = Recettes - Depenses,
    label_ecart = paste0(format(round(ecart, 1), nsmall = 1), if_else(abs(ecart) >= 2, "%", "%")),
    x_arrow = 2000,
    y_start = Depenses,
    y_end = Recettes,
    x_text = 1999.8,
    y_text = (y_start + y_end) / 2,
    hjust_text = 1
  )

# Flèche pour l’année 2007
valeurs_annees_2007 <- donnees %>%
  filter(Année == 2007, Variable %in% c("Dépenses des APU", "Recettes des APU")) %>%
  select(Pays, Année, Variable, Valeur) %>%
  tidyr::pivot_wider(names_from = Variable, values_from = Valeur) %>%
  rename(Depenses = `Dépenses des APU`, Recettes = `Recettes des APU`) %>%
  mutate(
    ecart = Recettes - Depenses,
    label_ecart = paste0(format(round(ecart, 1), nsmall = 1), if_else(abs(ecart) >= 2, "%", "%")),
    x_arrow = 2007,
    y_start = Depenses,
    y_end = Recettes,
    x_text = 2006.3,
    y_text = ifelse(Pays == "France", (Depenses + Recettes) / 2 + 0.5, (Depenses + Recettes) / 2),
    hjust_text = 1
  )

# Flèche pour l’année 2011
valeurs_annees_2011 <- donnees %>%
  filter(Année == 2011, Variable %in% c("Dépenses des APU", "Recettes des APU")) %>%
  select(Pays, Année, Variable, Valeur) %>%
  tidyr::pivot_wider(names_from = Variable, values_from = Valeur) %>%
  rename(Depenses = `Dépenses des APU`, Recettes = `Recettes des APU`) %>%
  mutate(
    ecart = Recettes - Depenses,
    label_ecart = paste0(format(round(ecart, 1), nsmall = 1), if_else(abs(ecart) >= 2, "%", "%")),
    x_arrow = 2011,
    y_start = Depenses,
    y_end = Recettes,
    x_text = 2011.1,  # inversé pour texte à gauche
    hjust_text = 0
  ) %>%
  mutate(
    # Décalage vertical du texte pour Zone euro
    y_text = (y_start + y_end) / 2 + if_else(Pays == "Zone euro", 0.3, 0)
  )

# Couleurs principales
couleurs_principales <- c("Dépenses des APU" = prettycols("Joyful")[[1]], "Recettes des APU" = prettycols("Joyful")[[2]])

donnees <- donnees |> 
  mutate(
    tooltip = glue("<b>{Pays}</b><br>{Variable} en {Année}<br>{round(Valeur,1)} points de PIB")
  )
# Tracé final
gg <- ggplot() +
  # Courbes principales
  geom_line(data = donnees,
            aes(x = Année, y = Valeur, color = Variable), linewidth = 0.5) +
  geom_point_interactive(
    data = donnees,
    aes(x = Année, y = Valeur, fill = Variable, 
        tooltip = tooltip, data_id = Année),
    shape = 21, color = "white", size = 1., hover_nearest = TRUE)+
  # Moyennes en pointillés
  geom_line(data = moyennes_long, aes(x = Année, y = moyenne, color = Variable, linetype = linetype), 
            linewidth = 0.5, alpha = 0.4) +
  
  # Flèches et labels pour 2019 et 2024
  geom_segment(data = valeurs_annees, aes(x = x_arrow, xend = x_arrow, y = y_start, yend = y_end),
               arrow = arrow(angle = 30, ends = "both", length = unit(0.12, "cm"), type = "closed"),
               color = "black", linewidth = 0.2) +
  geom_text(data = valeurs_annees, aes(x = x_text, y = y_text, label = label_ecart, hjust = hjust_text),
                         size = text_size, size.unit = "pt") +

  # Flèche et label pour 2000
  geom_segment(data = valeurs_annees_2000, aes(x = x_arrow, xend = x_arrow, y = y_start, yend = y_end),
               arrow = arrow(angle = 30, ends = "both", length = unit(0.12, "cm"), type = "closed"),
               color = "black", linewidth = 0.2) +
  geom_text(data = valeurs_annees_2000, aes(x = x_text, y = y_text, label = label_ecart, hjust = hjust_text),
                        size = text_size, size.unit = "pt") +

  # Flèche et label pour 2007
  geom_segment(data = valeurs_annees_2007, aes(x = x_arrow, xend = x_arrow, y = y_start, yend = y_end),
               arrow = arrow(angle = 30, ends = "both", length = unit(0.12, "cm"), type = "closed"),
               color = "black", linewidth = 0.2) +
  geom_text(data = valeurs_annees_2007, aes(x = x_text, y = y_text, label = label_ecart, hjust = hjust_text),
                        size = text_size, size.unit = "pt") +

  # Flèche et label pour 2011
  geom_segment(data = valeurs_annees_2011, aes(x = x_arrow, xend = x_arrow, y = y_start, yend = y_end),
               arrow = arrow(angle = 30, ends = "both", length = unit(0.12, "cm"), type = "closed"),
               color = "black", linewidth = 0.2) +
  geom_text(data = valeurs_annees_2011, aes(x = x_text, y = y_text, label = label_ecart, hjust = hjust_text),
                        size = text_size, size.unit = "pt") +

  # Facettage par pays
  facet_wrap(~ Pays, ncol = 2) +

  # Échelles
  scale_x_continuous(
    breaks = date_breaks(5),
    minor_breaks = breaks_width(1),
    labels = date1,
    expand = expansion(add = c(3, 3))
  ) +
  scale_color_manual(
    values = couleurs_principales,
    aesthetics = c("fill", "color"),
    name = NULL
  ) +
  scale_linetype_manual(
    values = c("Moyenne" = "dashed"),
    labels = c("Moyenne sur la période (en pointillés)"),
    name = NULL
  ) +

  # Labels axes
  labs(
    x = NULL,
    y = "% du PIB"
  ) +

  # Thème OFCE
  theme_ofce() +
  theme(
    legend.position.inside = c(0.97,0.97),
    legend.justification = c(1,1),
    legend.direction = "vertical",
    strip.text = element_marquee(size = rel(0.9)) ) +
  guides(
    color = guide_legend(order = 1, nrow = 1),
    fill = "none",
    linetype = guide_legend(order = 2, nrow = 1),
    x = guide_axis(minor.ticks = TRUE)  )+ 
  ofce_caption("INSEE, Eurostat")

girafy(gg, r=1.75)
Figure 2. Evolution des dépenses et des recettes des APU depuis 25 ans
wp_download(donnees|>select(Pays, Année,Variable,Valeur,Unité), "depenses_recettes", "Dépenses et recettes")
In [4]:
## Télechargment des données par pays ----

guessed_encoding <- readr::guess_encoding("weo.tsv")$encoding[1]


weo_country<-readr::read_tsv("weo.tsv",
                col_types = readr::cols(readr::col_character()),
                locale = readr::locale(encoding = guessed_encoding))
New names:
• `` -> `...62`
## Télechargment des données par zone ----


guessed_encoding <- readr::guess_encoding("weo2.tsv")$encoding[1]


weo_zone<-readr::read_tsv("weo2.tsv",
                             col_types = readr::cols(readr::col_character()),
                             locale = readr::locale(encoding = guessed_encoding))
New names:
• `` -> `...61`
## Graphique Ecart solde structurel ----

var=c("GGXCNL_NGDP","GGSB_NPGDP")

data_graph<-rbind(
  weo_country|>
  filter(ISO %in% c("FRA","Euro area"))|>
  filter(`WEO Subject Code` %in% c(var))|>
  select(Country,`WEO Subject Code`,starts_with(c("1","2")))|>
  pivot_longer(cols=-c(Country,`WEO Subject Code`),
               names_to="year",
               values_to="val")|>
  mutate(year=as.integer(year),
         val=as.numeric(val)),
  weo_zone|>
  filter(`Country Group Name` %in% c("FRA","Euro area"))|>
  filter(`WEO Subject Code` %in% c(var))|>
  rename(Country=`Country Group Name` )|>
  select(Country,`WEO Subject Code`,starts_with(c("1","2")))|>
  pivot_longer(cols=-c(Country,`WEO Subject Code`),
               names_to="year",
               values_to="val")|>
  mutate(year=as.integer(year),
         val=as.numeric(val))
)|>
  pivot_wider(names_from=Country,
              values_from=val)|>
  filter(year %in% c(2000:2024))|>
  mutate(diff=France-`Euro area`)|>
  mutate(label=if_else(`WEO Subject Code`=="GGXCNL_NGDP","Solde public","Solde structurel"))
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `val = as.numeric(val)`.
Caused by warning:
! NAs introduits lors de la conversion automatique

Pour résumer l’évolution des écarts de déficit, la France se retrouve, fin 2024, avec des comptes publics affichant des déficits (nominaux et structurels) supérieurs à ceux du reste de l’Union monétaire. Partant d’une situation comparable en 2000, les décisions de politique budgétaire ont fortement divergé entre la création de la zone euro et la période précédant la crise financière globale. Si la réponse à la Grande Récession a contribué à atténuer cette divergence, les réactions hétérogènes à la crise de la zone euro, puis les orientations budgétaires plus récentes, ont à nouveau amplifié l’écart des comptes publics entre la France et la zone euro.

In [5]:
# Tableau evolution solde structurel ----

data_graph|>
  select(-c(`WEO Subject Code`))|>
  pivot_longer(cols=-c(year,label),
               names_to="pays",
               values_to="val")|>
  filter(year %in% c(2000,2007,2011,2019,2024))|>
  mutate(var=paste0(label,"_",pays))|>
  select(year,var,val)|>
  pivot_wider(names_from="var",
              values_from="val")|>
  gt()|>
  tab_spanner(
    label = md("**Solde public**"),
    columns = starts_with("Solde public")
  )|>
  tab_spanner(
    label = md("**Solde structurel**"),
    columns = starts_with("Solde structurel")
  )|>
  cols_label(
    ends_with("France") ~ "France",
    ends_with("area") ~ "Zone euro",
    ends_with("diff") ~ "Ecart",
    year ~ ""
  ) |>
  fmt_number(columns =-c(year),
             decimals=1, sep_mark = " ", dec_mark = ",")|>
  cols_align_decimal()|>
  cols_width(
    everything() ~ px(80)
  ) |> 
  tab_source_note(md("*En point de PIB*")) |> 
  tab_source_note(md("*Source* : *World Economic Outlook* FMI (avril 2025)")) |> 
  wp_tab_options()
In [6]:
Tableau 1. Solde public et solde structurel
Solde public
Solde structurel
France Zone euro Ecart France Zone euro Ecart
2000  −1,3  −1,3   0,0  −2,2  −2,9   0,7 
2007  −3,0  −0,8  −2,2  −4,2  −2,3  −1,9 
2011  −5,3  −4,2  −1,1  −4,8  −3,8  −1,1 
2019  −2,4  −0,5  −1,8  −1,4  −0,6  −0,8 
2024  −5,8  −3,1  −2,7  −5,3  −3,1  −2,2 
En point de PIB
Source : World Economic Outlook FMI (avril 2025)

Les comptes publics évoluent au gré des décisions discrétionnaires des gouvernements et aussi des conditions conjoncturelles. Face à un choc conjoncturel, certains instruments de politique économique opèrent comme des stabilisateurs automatiques. Ainsi, certains prélèvements obligatoires réagissent comme certaines dépenses, notamment les transferts sociaux et l’assurance chômage.

Dans l’idéal, il est nécessaire de purger l’effet du cycle économique sur les indicateurs de finances publiques afin de mesurer précisément l’état des comptes publics et l’orientation de politique budgétaire.

L’analyse peut changer radicalement concernant la santé des comptes publics, si l’on considère que le déficit français s’explique par une conjoncture plus dégradée qu’ailleurs ou par l’effet de mesures discrétionnaires permanentes.

Le solde structurel rend compte de cette logique, il est calculé come suit :

\text{Solde Structurel}_t=\text{Solde public}_t - \alpha OG_tOG_t représente l’écart entre le PIB et le PIB potentiel et constitue une mesure du cycle et \alpha est la sensibilité du solde public à la conjoncture. Ce paramètre est en général estimé (par exemple, les estimations de la Commission sont disponibles Mourre, Poissonnier & Lausegger (2019)). L’attrait de ce type d’indicateur a amené les Etats membres à incorporer le concept à la gouvernance budgétaire européenne qui définit des cibles en fonction du solde structurel et de son évolution.

Si l’indicateur est attractif, il n’est pas sans critique. A minima on peut dire que le PIB potentiel et par conséquent l’output gap sont deux grandeurs non observées et qui sont dépendantes des données disponibles et du modèle sous-jacent pour construire l’indicateur5. Ainsi, l’analyse peut être brouillée par l’incertitude portant sur l’état du cycle économique selon l’ampleur de certaines chocs économiques et les fondamentaux de long terme de la croissance. Par ailleurs, il faut noter dans les exercices prospectifs la dépendance des simulations au scénario de croissance potentielle future, elle même par définition inconnue.

En tenant en compte ses éléments nous pouvons remarquer que les différentes institutions qui publient des données sur leur vision sur l’output gap dans l’Hexagone ont une vision relativement consensuelle sur l’état du cycle économique en France. D’un côté la Commission européenne considère que le PIB français s’établit à son niveau potentiel en 2024 (et donc que la totalité du déficit observé serait liée à l’historique des décisions publiques) alors que le Gouvernement, le FMI et l’OCDE considèrent que le cycle pénaliserait légèrement l’activité (entre 0,5 et 0,7 point) ce qui dégraderait très modestement les comptes publics (hausse du déficit comprise entre 0,3 et 0,4 point de PIB).

In [7]:
readr::read_delim(pathify("/EMR/og_oi.csv"), delim = ";", 
    escape_double = FALSE, trim_ws = TRUE)|>
  gt()|>
  fmt_number(decimals=1, sep_mark = " ", dec_mark = ",")|>
  cols_align_decimal(columns=`Output Gap`)|>
  cols_width(
    Organisation ~ px(200),
    `Output Gap` ~px(90)) |> 
  tab_source_note(
    source_note = md(
      "*Sources* : *World Economic Outlook* du FMI (avril 2025),*Economic Outlook de l'OCDE* (juin 2024), Ameco (mai 2025), RAA 2025 (avril 2025)")) |> 
  wp_tab_options(
    table.background.color = "grey95"  )
Rows: 4 Columns: 2
── Column specification ────────────────────────────────────────────────────────
Delimiter: ";"
chr (1): Organisation
dbl (1): Output Gap

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
In [8]:
Tableau 2. Evaluation de l’output gap en 2024 selon différentes institutions (en pts de PIB potentiel)
Organisation Output Gap
Gouvernement −0,7 
Commission Européenne  0,0 
FMI −0,7 
OCDE −0,5 
Sources : World Economic Outlook du FMI (avril 2025),Economic Outlook de l’OCDE (juin 2024), Ameco (mai 2025), RAA 2025 (avril 2025)

5 Pour une critique du concept de PIB potentiel voir Sterdyniak (2015).

In [9]:
load(pathify("/Consolide/Data/WEO202504.rda"))

variables.imf      <-c("GGXWDG_NGDP",
                       "GGXONLB_NGDP",
                       "GGXCNL_NGDP",
                       "NGDP",
                       "GGSB_NPGDP")


countries    <- c("FRA",
                  "DEU",
                  "ESP",
                  "ITA",
                  "GBR",
                  "USA")

label.countries <-data.frame(
  country = countries,
  label.country = c("France",
                    "Allemagne",
                    "Espagne",
                    "Italie",
                    "Royaume-Uni",
                    "Etats-Unis")
)

data.imf <- data.imf|>
  filter(`weo-country` %in% countries)|>
  mutate(period=as.integer(period))

data_graph <- data.imf%>%
  filter(`weo-subject` %in% "GGXWDG_NGDP")%>%
  select(`weo-country`,value,period)%>%
  filter((period)>=2020)%>%
  rename(country = `weo-country`)%>%
  merge(label.countries,by="country")%>%
  group_by(label.country)%>%
  mutate(value=100*value/value[(period)==2020])%>%
  ungroup()|>
  mutate(period=as.Date(paste0(period,"-01-01")))

data_graph <- data.imf %>%
  filter(`weo-subject` %in% "GGXWDG_NGDP")%>%
  select(`weo-country`,value,period)%>%
  filter((period)>=2000)%>%
  filter((period)<=2024)%>%
  rename(country = `weo-country`)%>%
  merge(label.countries,by="country")%>%
  group_by(label.country)%>%
  mutate(value=value)%>%
  ungroup()|>
  mutate(period=as.Date(paste0(period,"-01-01")))

Les écarts de déficit conduisent à des écarts de dettes publiques. Une manière simple d’expliquer le lien entre déficit et dette est de calculer chaque année le solde public primaire6 stabilisant la dette. Si le déficit primaire observé est inférieur à ce seuil, la dette publique augmente; s’il est supérieur, la dette diminue. En France, la persistance de ce déséquilibre entre dépenses et recettes publiques se traduit en 2024 par un solde public primaire significativement inférieur (un écart de -2,1 points de PIB) au niveau requis pour stabiliser la dette, conduisant ainsi à une augmentation de celle-ci. Bien que cette situation soit comparable à celle observée aux Etats-Unis, en Allemagne et au Royaume-Uni, l’écart y est toutefois moins marqué qu’en France, avec respectivement -1,1, -1,0 et -0,7 point de PIB. A l’inverse, en Italie et surtout en Espagne, après une très forte détérioration du solde primaire pendant la pandémie, celui-ci se situe en 2024 à un niveau supérieur à celui stabilisant la dette figure 3. Cette divergence suggère un ajustement budgétaire accru pour la France à moyen terme pour stabiliser sa dette.

6 Le solde public primaire est le solde public hors charge d’intérêt de la dette publique. Le solde public primaire structurel est le solde primaire hors effet de l’activité économique de court terme sur le solde public, comme expliqué dans l’encadré 1.

In [10]:
variables.imf <- c("GGXWDG_NGDP", "GGXONLB_NGDP", "GGXCNL_NGDP", "NGDP", "GGSB_NPGDP")

# Portugal exclu ici
countries <- c("FRA", "DEU", "ITA", "ESP", "GBR", "USA")

label.countries <- data.frame(
  country = countries,
  label.country = c("France", "Allemagne", "Italie", "Espagne", "Royaume-Uni", "États-Unis")
)

load(file = pathify("/Consolide/Data/WEO202504.rda"))

data_grapheh <- data.imf %>%
  filter(`weo-country` %in% countries) %>%
  mutate(period = as.integer(period)) %>%
  filter(`weo-subject` %in% c("GGXONLB_NGDP", "GGXCNL_NGDP", "GGXWDG_NGDP", "NGDP")) %>%
  select(period, `weo-country`, value, `weo-subject`) %>%
  pivot_wider(names_from = `weo-subject`, values_from = value) %>%
  mutate(
    charge = GGXONLB_NGDP - GGXCNL_NGDP,
    g = 100 * (NGDP / lag(NGDP) - 1),
    r = 100 * charge / lag(GGXWDG_NGDP),
    ec = (r - g),
    mec = ec / (100 + g),
    solde_prim_stab = mec * lag(GGXWDG_NGDP),
    solde_prim = GGXONLB_NGDP
  ) %>%
  ungroup() %>%
  select(period, `weo-country`, solde_prim, solde_prim_stab) %>%
  rename(country = `weo-country`) %>%
  left_join(label.countries, by = "country") %>%
  pivot_longer(cols = c(solde_prim, solde_prim_stab), names_to = "var", values_to = "values") %>%
  mutate(
    label.var = recode(var,
                       "solde_prim" = "Solde primaire effectif",
                       "solde_prim_stab" = "Solde primaire stabilisant")
  )

data_filtered <- data_grapheh %>%
  filter(period >= 2000, period <= 2024, !is.na(values)) %>%
  mutate(
    label.country = factor(label.country,
                           levels = c("France", "Allemagne", "Italie", "Espagne", "Royaume-Uni", "États-Unis")),
    var = factor(var, levels = c("solde_prim", "solde_prim_stab"))
  )

data_plot_filtered <- data_filtered %>%
  mutate(
    country_var = paste0(label.country, "_", var),
    tooltip = glue(
    "<b>{label.country}</b>
    {label.var}
    En {period} : {round(values, 1)} % du PIB")
  )

dd_piv <- data_plot_filtered |> 
  select(period, label.country, var, values) |> 
  pivot_wider(names_from = var, values_from = values)

gg <- ggplot(data_plot_filtered) + 
  ggbraid::geom_braid(
    data=dd_piv, 
    aes(x= period, ymin = solde_prim_stab, ymax = solde_prim, 
        fill = solde_prim_stab>solde_prim), alpha = 0.2) + 
  scale_fill_manual(values = c("palegreen1", "pink")) +
  geom_hline(yintercept = 0, linewidth = 0.1, color = "grey25") +
  geom_line(
    aes(x = period, y = values, color = country, alpha = var, linetype=var),
    linewidth = 0.5) +
  geom_point_interactive(
    aes(x = period, y = values, color = country, alpha = var,
      tooltip = tooltip, data_id = period),
         size = 0.25, hover_nearest = TRUE) +
  facet_wrap(~label.country, ncol = 3) +
  # scale_color_manual(values = colors_country, guide = "none") +
  scale_color_pays(aesthetics = "color") +
  scale_linetype_manual(
    values = c("solid", "solid"),
    name = NULL,
    labels = c("Solde primaire", "Solde primaire stabilisant la dette"))+
  scale_alpha_manual(values = c(1, 0.4),
                     name = NULL,
                     labels = c("Solde primaire", "Solde primaire stabilisant la dette")) +
  scale_x_continuous(
    breaks = dates_breaks(5),
    labels = date1,
    minor_breaks = scales::breaks_width(1),
    expand = expansion(add= 0.9)
  ) + 
  labs(
    x = NULL, y = "En % du PIB") +
  theme_ofce() +
  guides(color="none", fill = "none", x = guide_axis(minor.ticks = TRUE), linetype = "none") + 
  theme(
    strip.text = marquee::element_marquee(size=rel(0.9)),
    legend.key.width = unit(18, "pt"),
    axis.text.x.bottom = element_text(hjust=0),
    legend.position.inside = c(0.025, 0.99),
    legend.justification = c(0,1),
    legend.direction = "vertical",
    panel.spacing.x = unit(12, "pt")) +
  ofce_caption(
    source="FMI",
    note = "L'aire entre les deux courbes est colorée en rose lorsque le solde primaire est inférieur au solde stabilisant la dette. Dans ce cas, la dette publique augmente. L'aire est colorée en vert pâle dans le cas opposé" )

girafy(gg, 1.5)
`geom_braid()` using method = 'line'
Figure 3. Evolution du solde public primaire et du solde public primaire stabilisant la dette
wp_download(
  data_plot_filtered |> 
              select(country, variable = var, period, value = values), "soldes", "Soldes effectifs et stabilisant")

Sur la période 2000-2024, la dette publique française a augmenté de plus de 53 points de PIB, marquant une divergence nette par rapport à l’Allemagne, où l’augmentation n’a été que de 5 points. Cette dynamique est également plus prononcée qu’en Espagne (+44 points) et en Italie (+27 points). En revanche, la progression de la dette française reste inférieure à celle observée dans d’autres économies avancées hors zone euro, telles que les États-Unis et le Royaume-Uni, où l’endettement public a crû de plus de 60 points de PIB. Il convient de souligner que cette hausse peut s’interpréter comme une réponse rationnelle à un environnement économique transformé – caractérisé par des taux d’intérêt souverains durablement faibles – et comme une réaction appropriée à des chocs majeurs, difficilement assurables dans le cadre des mécanismes traditionnels de mutualisation des risques. Ainsi, en 2024, la charge d’intérêts supportée par les administrations publiques françaises reste inférieure à son niveau de 2000 (de -0,9 point de PIB), et ce malgré un doublement du ratio de dette publique rapporté à la valeur ajoutée nationale.

In [11]:
cty <- function(x) x |> 
  mutate(
    country = countrycode::countrycode(country, "iso3c", "country.name.fr"))
gg <- data_graph |> 
  mutate(  year = year(period),
           tooltip = glue(
             "<b>{label.country}</b>
             {year(period)}
             Dette publique : {round(value, 1)} % du PIB") ) |> 
  ggplot()+
  aes(x= year,
      y= value)+
  geom_line(aes(color = country))+
  geom_line(data = ~.x |> rename(country2 = country), 
            aes(group=country2), color="grey85", linewidth = 0.25)+
  geom_point_interactive(
    aes(fill = country, data_id = period, tooltip = tooltip),
    size = 1, shape = 21, color = "white", hover_nearest = TRUE) +
  theme_ofce(
    strip.text = element_marquee(size = rel(0.9) ) )+
  scale_color_pays() +
  scale_x_continuous(
    breaks = dates_breaks(4),
    labels = date1,
    minor_breaks = breaks_width(1),
    expand = expansion(add =  0.99 ) )+
  facet_wrap(vars(country), labeller =cty) +
  ylab("% du PIB") +
  xlab(NULL) +
  guides(color = "none", fill="none", x = guide_axis(minor.ticks = TRUE) ) +
  ofce_caption(
    "World Economic Outlook du FMI (avril 2025)" )

girafy(gg, 1.75)
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_line()`).
Removed 1 row containing missing values or values outside the scale range
(`geom_line()`).
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_interactive_point()`).
Figure 4. Evolution de la dette publique
wp_download(data_graph|>
  select(-c(country))|>
  rename(Pays=label.country,
         Dette=value,
         Année=period), 
  "dette_publique", 
  "Dette publique")

En 2024, la charge d’intérêts s’est établie à 58 milliards d’euros (soit 2 % du PIB). Avec la hausse de la part de la dette publique dans le PIB et la hausse des taux souverains, la charge de la dette s’est accrue de 0,4 point de PIB depuis la période avant-Covid. Si le taux d’intérêt des OAT à 10 ans qui s’établit au 4 juillet à 3,3% reste à un niveau proche à celui de la croissance du PIB potentiel en valeur (voir section 2), il s’établit en forte hausse par rapport à l’ère des taux souverains nuls, voire négatifs, qui s’est achevée fin 2021.

Avec l’arrivée à échéance des titres de la dette publique émis pendant la période où les taux nominaux étaient historiquement faibles la charge de la dette devrait augmenter mécaniquement, même si les administrations publiques arrivaient à effacer la totalité du déficit public.

Le FMI est une des rares organisations internationales à produire des évaluations de la charge d’intérêts à horizon 2029. Selon les projections de l’organisme publiées en avril 2025, la charge d’intérêts française devrait alors augmenter de 1,2 point de PIB par rapport au niveau de 2024. Ceci constituerait un choc majeur et rendrait la stabilisation de la dette plus difficile. Dans le dernier rapport d’avancement annuel d’avril 2025 le gouvernement affiche un choc sur la charge d’intérêts à venir comparable (+1,1 point en 2029 par rapport à 2025). Ces deux projections sont alarmantes et impliquent de prendre au sérieux le fort écart existant actuellement entre le solde primaire et celui qui stabilise la dette.

L’étude de l’encours des OAT par date de maturité (figure 5) indique qu’à horizon 2029 900 milliards d’euros de titres arriveraient à échéance (correspondant à 36 % de l’encours de la dette à moyen et long terme selon les dernières données de l’Agence France Trésor). Selon nos calculs, le taux moyen de ces OAT est de 1,6 %, soit la moitié du taux des OAT à 10 ans actuellement. Dans ce contexte, la charge d’intérêts associée à ces titres serait de l’ordre de 14 milliards d’euros.

Le renouvellement de ce stock de titres au taux actuel des OAT à 10 ans^(a) implique un surcoût pour les finances publiques de 15 milliards d’euros (+0,5 point de PIB).

Ainsi, si la montée de la charge d’intérêts prévue par différents instituts devrait avoir lieu, l’ampleur de cette hausse n’est pas aussi certaine à ce jour. Ce calcul est donc un peu plus rassurant que les publications officielles. Pour rationaliser une montée forte de la charge d’intérêt il est nécessaire de prévoir une forte hausse du taux souverain français dans les années à venir. Celui-ci peut venir des taux sans risque en zone euro (ce qui n’est le scénario central de la dernière prévision de l’OFCE du mois d’avril 2025) soit de tensions particulièrement vives sur le spread hexagonal. Dans ce dernier cas de figure, la situation macroéconomique ne serait plus compatible avec le cadre de la plupart des prévisions.

In [12]:
data_oat<-read_excel(pathify("/Consolide/Data/calculs_OAT.xlsx"), 
    sheet = "Encours")|>
  group_by(Maturité)|>
  summarise(Encours=sum(Encours))|>
  ungroup()

gg <- data_oat|> 
  mutate(
    tooltip = glue("<b>Tranche arrivant à maturité en {Maturité}</b>
                   {round(Encours,1)} milliards d'euros ({round(Encours/30, 1)} % du PIB)")
  ) |> 
  ggplot()+
  aes(x=Maturité,
      y=Encours, fill = Maturité)+
  geom_col_interactive(
    aes(tooltip = tooltip, data_id = Maturité),
    hover_nearest = TRUE )+
  theme_ofce(
    plot.background = element_rect(fill = "grey95")  )+
  scale_x_continuous(
    breaks = dates_breaks(4),
    labels = date1,
    minor_breaks = scales::breaks_width(1),
    expand = expansion(add=0.99)) +
  labs(x=NULL,
       y="En milliards d'euros")+
  ofce_caption("Agence France Trésor")+
  geom_hline(yintercept=0,alpha=0.2) +
  guides(fill = "none", x = guide_axis(minor.ticks = TRUE)) 

girafy(gg, 1)
Figure 5. Encours des OAT selon l’année de maturité
wp_download(data_oat, 
  "maturite_oat", 
  "Encours OAT par maturité")
  1. Selon les données de l’Agence France Trésor du 17 juin 2025, la maturité moyenne du stock de dette à moyen et long terme négociable de l’Etat est de 9 ans et 125 jours. Donc considérer qu’on renouvelle les titres arrivant à échéance par des titres à 10 ans laisserait la maturité moyenne des OAT quasiment inchangée et simplifie les calculs.

1.2 Anatomie d’une dérive du déficit public

Sur la période récente, que l’on fait débuter à la première élection d’Emmanuel Macron en 2017, les comptes publics français ont connu une détérioration plus marquée que ceux de l’ensemble de la zone euro. Le déficit public est ainsi passé de 3,4 % du PIB en 2017 à 5,8 % en 2024. La France a certes enregistré des déficits inférieurs à 3 % du PIB en 2018 et 2019 (respectivement 2,3 % et 2,4 %), mais ces améliorations conjoncturelles n’ont pas résisté à l’ampleur des crises survenues durant la période, en particulier la pandémie de Covid-19 et la crise énergétique consécutive à la guerre en Ukraine (Plane, Ragot & Sampognaro (2024)).

Le creusement du déficit public de 2,4 points de PIB entre 2017 et 2024 s’explique par plusieurs facteurs concomitants (figure 6). Selon nos calculs, 2,1 points seraient imputables à la dégradation du solde public structurel primaire, ce qui représente plus de 80 % de l’aggravation totale du déficit sur la période. A cela s’ajoutent 0,6 point de PIB de mesures exceptionnelles – notamment liées au bouclier tarifaire – qui ont vocation à s’éteindre en grande partie dès 2025. Par ailleurs, la charge d’intérêts a contribué pour 0,3 point de PIB à l’augmentation du déficit au cours de cette période. En agrégeant ces composantes, on observe une dégradation de 3 points de PIB du déficit structurel entre 2017 et 2024. En sens inverse, deux éléments ont permis de contenir partiellement cette dégradation : une croissance du PIB observé supérieure à celle du PIB potentiel sur la période, et la mobilisation du plan de relance européen (Next Generation EU), qui a permis de financer une partie du plan « France Relance ». L’effet cumulé de ces facteurs d’amélioration est estimé à 0,6 point de PIB.

In [13]:
data <- read_delim(pathify("/Consolide/Data/graph_mp1.csv"), 
    delim = ";", escape_double = FALSE, trim_ws = TRUE) |> 
  mutate(Annee = factor(Annee))
Rows: 14 Columns: 3
── Column specification ────────────────────────────────────────────────────────
Delimiter: ";"
chr (1): Categorie
dbl (2): Annee, Valeur

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
data_reworked <- data |> 
  filter(Annee==2024) |> 
  mutate(Categorie = factor(Categorie, c("Solde public 2017", "Effet conjoncture",
                                         "Charges d'intérêts", "Mesures exceptionnelles", 
                                         "Fonds Next Generation EU", "Creusement déficit structurel primaire", "Solde public"))) |>
  arrange(Categorie) |> 
  filter(Categorie!="Solde public") |>
  mutate(
    Categorie = as.character(Categorie) |> 
      str_wrap(width = 20),
    cv = cumsum(Valeur),
    cvl=lag(cv, default = 0),
    lcv=lead(cv, default = 0),
    i=1:n(),
    vl = str_c(ifelse(Valeur>0, "+", ""), round(Valeur,1), "%"),
    il = lag(i, default = 0),
    li = lead(i, default = 0)) 

extremes <- data_reworked |> 
  slice(1, nrow(data_reworked)) 
  
ggplot(data_reworked)+
  theme_ofce_void(plot.margin = margin(l=4, r= 4, unit="lines")) +
  coord_cartesian(clip="off")+
  scale_x_continuous(
    breaks = 1:nrow(data_reworked),
    labels = data_reworked$Categorie ) +
  geom_rect(aes(xmin = i-0.25, xmax = i+0.25, ymin = cvl, ymax = cv , fill = Valeur>0, colour = Valeur>0),
            alpha=0.25, linewidth = 0.25)+
  geom_segment(data = ~.x |> slice_head(n=-1), aes(x=i+0.25, xend = i+0.75, y = cv, yend = cv), linewidth=0.25) +
  geom_text(aes(x=i, y = cv + ifelse(Valeur>0, 0.1, -0.1), vjust = ifelse(Valeur>0, 0, 1), label = Categorie), 
            size = text_size*0.9, size.unit="pt") +
  geom_text(aes(x=i, y = ifelse(Valeur>0, cvl, cv)+0.05, vjust = 0, label = vl, color = Valeur>0),
            size = text_size*1.1, size.unit = "pt", fontface = "bold") +
  guides(color = "none", fill="none") +
  scale_color_manual(values = c( "pink2", "palegreen3"), aesthetics = c("fill", "color")) +
  annotate("segment", x = 0.75, xend=6.25, y=0, yend = 0, linewidth = 0.2) +
  annotate("segment", x = 0.75, xend=6.25, y=-5.77, yend = -5.77, linewidth = 0.2) +
  annotate("text", label = "0%", x = 6.25, y=-0.1, size = text_size, size.unit = "pt", vjust = 1, hjust = 1, fontface="bold") +
  annotate("text", label = "-5,8% en 2024", x = 0.75, y=-5.67, size = text_size, size.unit = "pt", vjust = 0, hjust = 0, fontface="bold") 
Figure 6. Evolution du solde public entre 2017 et 2024
wp_download(data|>filter(!is.na(Valeur)), 
  "determinants_def", 
  "Déterminants du déficit")

1.2.1 qui s’explique par la baisse des prélèvements obligatoires

La poursuite de la stratégie de politique fiscale de l’offre engagée avec l’élection d’Emmanuel Macron à la présidence de la République en 2017 – comprenant notamment la baisse de l’impôt sur les sociétés, la poursuite des exonérations de cotisations sociales patronales et les réductions des impôts sur la production – s’est accompagnée, à partir de la crise des Gilets Jaunes, d’un recentrage des baisses de prélèvements en faveur des ménages (Madec, Plane & Sampognaro (2022)). Parmi les mesures notables figurent la suppression de la première tranche de l’impôt sur le revenu (IR), la défiscalisation des heures supplémentaires, la suppression progressive de la taxe d’habitation pour tous ainsi que celle de la redevance audiovisuelle. Ces différentes réformes ont conduit à une diminution de 2,5 points de PIB du niveau des prélèvements obligatoires (PO) entre 2017 et 2024.

In [14]:
data_graphmp2<-read_delim(pathify("/Consolide/Data/graph_mp2.csv"), 
    delim = "\t", escape_double = FALSE, 
    trim_ws = TRUE)|>
  pivot_longer(cols=-c(Annee),
               names_to = "Agent",
               values_to = "val")
Rows: 30 Columns: 4
── Column specification ────────────────────────────────────────────────────────
Delimiter: "\t"
dbl (4): Annee, TVA, Ménages (hors TVA), Entreprises (hors TVA)

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
start_fleches<-data_graphmp2|>
  filter(Annee %in% c(2017))|>
  arrange(Agent)|>
  pull(val)

end_fleches<-data_graphmp2|>
  filter(Annee %in% c(max(Annee)))|>
  arrange(Agent)|>
  pull(val)

texte_fleches<-data_graphmp2|>
  filter(Annee %in% c(2017,max(Annee)))|>
  group_by(Agent)|>
  arrange(Annee)|>
  mutate(evol=round(val-val[1],digits=1))|>
  ungroup()|>
  filter(Annee %in% c(max(Annee)))|>
  arrange(Agent)|>
  mutate(label_text=paste0(evol, " point"))|>
  pull(label_text)
In [15]:
# Chargement des données
donnees <- read_excel(pathify("/Consolide/Data/Donnees PO-dep-iso.xlsx"))

label.countries <- data.frame(
  country = c("FRA", "DEU", "ITA", "ESP", "GBR", "USA"),
  label.country = factor(
    c("France", "Allemagne", "Italie", "Espagne", "Royaume-Uni", "États-Unis"),
    levels = c("France", "Allemagne", "Italie", "Espagne", "Royaume-Uni", "États-Unis")
  )
)

donnees <- donnees %>%
  rename(country = Pays) %>%
  filter(country %in% label.countries$country) %>%
  mutate(
    country = factor(country, levels = label.countries$country),
    Année = as.integer(Année)
  ) %>%
  left_join(label.countries, by = "country") |> 
  mutate(
    tooltip = glue(
      "<b>{label.country}</b>
      {Variable} en {Année}
      {round(Valeur,1)} points de PIB") )

moyennes <- donnees %>%
  filter(Année >= 2017, Année <= 2024) %>%
  group_by(label.country, Variable) %>%
  summarise(moyenne = mean(Valeur, na.rm = TRUE), .groups = "drop")

moyennes_long <- moyennes %>%
  expand_grid(Année = 2017:2024)

valeurs_annees <- donnees %>%
  filter(Année %in% c(2017, 2024), Variable %in% c("Dépenses des APU", "Recettes des APU")) %>%
  select(label.country, Année, Variable, Valeur) %>%
  pivot_wider(names_from = Variable, values_from = Valeur) %>%
  rename(Depenses = `Dépenses des APU`, Recettes = `Recettes des APU`) %>%
  mutate(
    ecart = Recettes - Depenses,
    label_ecart = paste0(
      format(round(ecart, 1), nsmall = 1),
      if_else(abs(ecart) >= 2, "%", "%")
    ),
    x_arrow = Année,
    y_start = Depenses,
    y_end = Recettes,
    y_text = (y_start + y_end) / 2 + 0*ifelse(Année == 2017, +2.1, -4.0),
    hjust_text = ifelse(Année == 2017, 0.5, 0.5),
    nudge_x_text = ifelse(Année == 2017, -0.3, 0.3)
  )


y_min <- min(donnees$Valeur, na.rm = TRUE)
y_max <- max(donnees$Valeur, na.rm = TRUE) * 1.05


gg <- ggplot(donnees |> filter(Année >= 2017)) +
  aes(x = Année, y = Valeur, color = country, alpha = Variable, linetype = Variable) +
  geom_line(
    data = moyennes_long,
    aes(x = Année, y = moyenne, group = interaction(label.country, Variable)),
    color = "black",
    linetype = "dotted",
    linewidth = 0.5,
    inherit.aes = FALSE ) +
  geom_segment(
    data = valeurs_annees,
    aes(x = x_arrow, xend = x_arrow, y = y_start, yend = y_end),
    arrow = arrow(angle = 20, ends = "both", length = unit(0.1, "cm"), type = "closed"),
    linewidth = 0.2,
    color = "black",
    inherit.aes = FALSE ) +
  geom_text(
    data = valeurs_annees,
    aes(x = x_arrow, y = y_text, label = label_ecart, hjust = hjust_text),
    position = position_nudge(x= valeurs_annees$nudge_x_text, y = 0),
    angle = 90,
    size = text_size * 0.9,
    size.unit = "pt",
    inherit.aes = FALSE ) +
  geom_line(linewidth = 0.5) +
  geom_point_interactive(
    aes(tooltip = tooltip, data_id = Année),
    hover_nearest=TRUE, size = 0.5  ) +
  facet_wrap(~label.country, ncol = 3) +
  scale_color_pays() +
  scale_linetype_manual(
    # values = c("solid", "longdash"),
    values = c("solid", "solid"),
    name = NULL,
    labels = c("Dépenses des APU", "Recettes des APU")
  ) +
  scale_alpha_manual(
    values = c(1, 0.3),
    name = NULL,
    labels = c("Dépenses des APU", "Recettes des APU")
  ) +
  scale_x_continuous(
    limits = c(2017, 2024.5),
    breaks = dates_breaks(3),
    labels = date1,
    minor_breaks = scales::breaks_width(1),
    expand = expansion(mult = c(0.1, 0.05)),
    oob = scales::oob_keep ) +
  labs(
    x = NULL,
    y = "En % du PIB"
  ) +
  theme_ofce() +
  guides(color = "none", x = guide_axis(minor.ticks = TRUE)) +
  theme(
    legend.key.width = unit(36, "pt"),
    legend.position.inside = c(0.05, 0.65),
    legend.direction = "horizontal",
    panel.spacing.x = unit(6, "pt"),
    strip.text = element_marquee(size = rel(0.9), margin = margin()))+
  ofce_caption("AMECO avril 2025")


girafy(gg, 1.75)
Figure 7. Evolution européenne des dépenses et des recettes des APU depuis 2017
wp_download(donnees |> filter(Année >= 2017)|>
              select(label.country,Variable,Valeur,Unité)|>
              rename(Pays=label.country), 
  "fipu_post2017", 
  "Dépenses et recettes publiques")

7 Nous supposons ici que les variations de PO liées aux accises sur l’énergie (TICPE, TICFE, TICGE) sont partagées à moitié entre ménages et entreprises

Si l’on regarde en détail les évolutions des taux de prélèvements depuis 2017, plusieurs points apparaissent clairement. Du côté des ménages, la principale mesure est la suppression de la taxe d’habitation qui représente une baisse de PO de 1 point de PIB. Les autres mesures qui viennent compléter la diminution de la fiscalité sont la baisse de l’Impôt sur le Revenu (IR), y compris crédits d’impôts (-0,3 point), la réforme de l’Impôt Sur la Fortune (ISF 0,1 point) et la suppression de la redevance audiovisuelle (-0,1 point). La hausse de CSG est en revanche très marquée (0,9 point) mais elle compense en partie la baisse des cotisations payées par les ménages (-0,6 point). Les recettes de droits de mutations à titre onéreux (DMTO) ont baissé de 0,2 point de PIB avec la diminution des transactions immobilières. Les droits de mutation à titre gratuit (DMTG) et la taxe foncière ont augmenté respectivement de 0,1 point respectivement. Enfin, les recettes de TICPE ont diminué et le bouclier tarifaire n’a pas été totalement supprimé en 2024 réduisant la TICFE de -0,3 point de PIB au total7.

Du côté des entreprises, les principales mesures sont la baisse des cotisations sociales patronales (-1,1 point de PIB), avec la transformation du CICE en baisse de cotisations, et la réduction des impôts sur la production avec forte réduction de la Cotisation sur la Valeur Ajoutée des Entreprises (CVAE -0,5 point) et la baisse de la taxe foncière (TF -0,1 point). La baisse de l’Impôt sur les Sociétés (IS) a réduit également les PO sur les entreprises (-0,2 point) mais la réduction ou suppression de certains crédits d’impôts les ont augmenté notamment avec la transformation du CICE en baisse de cotisations (0,6 point). En revanche, un certain nombre de mesures multiples ont accru les PO des entreprises (contributions pour la formation professionnelle et l’apprentissage, quotas carbone, remise pharmaceutique…). Enfin, comme pour les ménages, les recettes de TICPE ont diminué et le bouclier tarifaire n’a pas été totalement supprimé en 2024 réduisant la TICFE y compris pour les entreprises.

In [16]:
annots <- tribble(
  ~Agent, ~Annee, ~val,
  "TVA", 1996, 8,
  "Ménages (hors TVA)", 2010, 19,
  "Entreprises (hors TVA)", 2010, 16 )

gg <- data_graphmp2|>
  mutate(
    tooltip = glue(
      "<b>{Agent}</b>
      en {Annee} {round(val, 1)} % du PIB") ) |> 
  ggplot()+
  aes(x=Annee,
      y=val,
      color=Agent)+
  geom_text(
    data = annots, size = text_size, size.unit = "pt", hjust = 1,
    aes(label = Agent), show.legend = FALSE) +
  geom_line()+
  geom_point_interactive(
    aes(tooltip = tooltip, data_id = Annee, fill = Agent),
    hover_nearest = TRUE, size = 1, shape = 21, color = "white"
  ) +
  geom_vline(xintercept=2017,
             linetype="dotted",
             linewidth = 0.25)+
  theme_ofce()+
  guides(fill = "none", color="none", x = guide_axis(minor.ticks = TRUE)) +
  labs(x=NULL,
       y="% du PIB",
       color=NULL) +
  ofce_caption("Insee")+
  scale_x_continuous(
    breaks = dates_breaks(),
    labels = date1,
    minor_breaks = breaks_width(1)
  ) +
  scale_color_pretty_d("Summer")+
  scale_fill_pretty_d("Summer")+
  annotate("segment", 
           x = c(rep(2017,3)), xend = c(rep(2024,3)),
           y = c(start_fleches), yend = c(end_fleches),
           linetype="dashed", linewidth = 0.25,
           arrow=arrow(length = unit(0.01, "inches")))+ 
  annotate("text", 
           x = c(rep(2020,3)), y = (end_fleches+start_fleches)/2-0.9, 
           label=texte_fleches, size = text_size, size.unit="pt")

girafy(gg, 1.75)
Figure 8. Evolution des taux de prélèvements obligatoires
wp_download(data_graphmp2|>
              rename(PO=val), 
  "po_agent", 
  "PO par agent")

8 Dans ces calculs les PO par agent sont considérés selon l’agent qui paye comptablement en dernier ressort le PO, mais pas son incidence économique. Sont considérés PO sur les ménages: impôts directs (CSG, CRDS, IRPP, taxe d’habitation, …), impôts indirects hors TVA (TICPE, CSPE, accises…), impôts sur le capital (ISF, DMTG, taxe foncière, DMTO, …), cotisations sociales salariées et non salariées. A noter également que cette analyse ne distingue pas pour es différents types de PO entre mesures discrétionnaires et effets d’assiette.

9 Sont considérés PO sur les entreprises: impôts divers sur la production (Cotisation sur la VA et Cotisation foncière sur les entreprises (ex-TP), taxe foncière, C3S, …), impôts sur les salaires et la main-d’œuvre, impôts sur les sociétés et cotisations sociales patronales.

Une analyse détaillée de l’évolution des taux de PO depuis 2017 fait apparaître plusieurs dynamiques significatives (figure 8). Du côté des ménages8, la baisse des PO est de -1,6 point de PIB entre 2017 et 2024 et intervient après une forte augmentation sur la période 2010-2017 (+2,6 point de PIB). La suppression de la taxe d’habitation constitue la mesure la plus marquante, avec un impact de -1 point de PIB. Elle a été complétée par d’autres dispositifs fiscaux : la baisse de l’IR, incluant les crédits d’impôts (-0,3 point), la réforme de l’impôt de solidarité sur la fortune (ISF) remplacé par l’impôt sur la fortune immobilière (-0,1 point), ainsi que la suppression de la redevance audiovisuelle (-0,1 point). En parallèle, la hausse de CSG a été substantielle (0,9 point), compensant partiellement la baisse des cotisations payées par les ménages (-0,6 point). D’autres recettes ont également évolué : les droits de mutations à titre onéreux (DMTO) ont diminué de 0,2 point de PIB en lien avec la diminution des transactions immobilières tandis que les droits de mutation à titre gratuit (DMTG) et la taxe foncière ont augmenté respectivement de 0,1 point chacun. Enfin, les recettes issues de la fiscalité énergétique (TICPE, TICFE) ont baissé, notamment du fait du maintien partiel du bouclier tarifaire en 2024. Du côté des entreprises9, la poursuite de la politique d’offre entamée sous F.Hollande s’est poursuivie avec une baisse des PO de -0,8 point de PIB entre 2017 et 2024. Les principales mesures sont la baisse des cotisations sociales patronales (-1,1 point de PIB), avec la transformation du CICE en baisse de cotisation, et la réduction des impôts sur la production avec forte réduction la Cotisation sur la Valeur Ajoutée des Entreprises (-0,5 point) et la baisse de la taxe foncière (-0,1 point). La baisse du taux de l’IS de 33 % à 25 % a réduit également les PO sur les entreprises (-0,2 point) mais l’évolution des crédits d’impôts les ont augmenté (0,3 point). En revanche, un certain nombre de mesures multiples ont accru les PO des entreprises (contributions pour la formation professionnelle et l’apprentissage, quotas carbone, remise pharmaceutique…). Enfin, comme pour les ménages, les recettes de TICPE ont diminué et le bouclier tarifaire n’a pas été totalement supprimé en 2024 réduisant la TICFE y compris pour les entreprises.

In [17]:
read_delim(pathify("/Consolide/Data/tab_mp1.csv"), 
    delim = ";", escape_double = FALSE, trim_ws = TRUE)|>
  gt()|>
  cols_align_decimal()|>
  fmt_number(, sep_mark=" ", dec_mark = ",", dec = 1) |> 
  tab_style(
    style = list(
      cell_text(weight = "bold")
      ),
    locations = cells_body(
      rows = Ménages=="Total"
    )
  ) |>
  cols_label(ends_with("_val")~"Variation")|>
  tab_source_note( md("*En point de PIB*")) |> 
  tab_source_note(md("*Source* : Insee. Calculs des auteurs")) |> 
  wp_tab_options() |>
  sub_missing(missing_text = "") 
Warning: One or more parsing issues, call `problems()` on your data frame for details,
e.g.:
  dat <- vroom(...)
  problems(dat)
Rows: 13 Columns: 4
── Column specification ────────────────────────────────────────────────────────
Delimiter: ";"
chr (2): Ménages, Entreprises
dbl (2): Ménages_val, Entreprises_val

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
In [18]:
Tableau 3. Variation des principaux prélèvements obligatoires entre 2017 et 2024
Ménages Variation Entreprises Variation
Total −1,7  Total −0,8 
Taxe d'habitation −1,0  CVAE −0,5 
IR et crédits d'impôts −0,3  Cotisations payées par les entreprises −1,1 
Impôt sur la fortune (IFI, ex ISF) −0,1  IS avant crédits d'impôts −0,2 
Contribution à l'audiovisuel public −0,1  TICPE et TICFE −0,3 
DMTO −0,2  Taxe foncière −0,1 
Cotisations payées par les ménages −0,6  Contributions pour la F.P. et l'apprentissage  0,3 
CSG  0,9  Crédits d'impôt IS  0,6 
Prélèvement de solidarité et autres contributions  0,1  Quotas carbone  0,1 
Taxe foncière  0,1  Remise pharmaceutique  0,3 
DMTG  0,1  Autres  0,0 
TICPE et TICFE −0,3 

Autres −0,2 

En point de PIB
Source : Insee. Calculs des auteurs

1.2.2 et non pas par une dérive des dépenses publiques

La dégradation du solde structurel observé entre 2017 et 2024 s’explique essentiellement par la baisse non financée des PO, et non par une dérive des dépenses publiques primaires. Bien au contraire, celles-ci ont reculé de 0,3 point de PIB potentiel sur la période. En tenant compte de la hausse de la charge d’intérêts liée à la remontée des taux souverains, la dépense publique totale, en points de PIB, est stable sur la période. Dans le détail, la masse salariale des administrations publiques s’est contractée (-0,4 point de PIB potentiel), les prestations sociales en espèces ont diminué (-0,1 point) ainsi que les subventions (-0,6 point) avec la suppression du CICE et sa transformation en baisse de cotisations patronales. A l’inverse, les consommations intermédiaires ont augmenté de 0,3 point de PIB et l’investissement public s’est accru de 0,5 point. Au total, la dépense publique primaire hors investissement a diminué de -0,8 point de PIB potentiel entre 2017 et 2024 (-0,2 point si l’on corrige des subventions publiques).

In [19]:
read_delim(pathify("/EMR/Data/tab_mp2.csv"), 
    delim = ";", escape_double = FALSE, trim_ws = TRUE)|>
  gt()|>
  fmt_number(, sep_mark=" ", dec_mark = ",", dec = 1) |> 
  cols_hide(columns = c(Niveau))|>
  cols_align_decimal(columns="Variation")|>
  tab_style(
    style = list(
      cell_text(weight = "bold")
      ),
    locations = cells_body(
      rows = Niveau==1 | Niveau == 3)) |>
  tab_source_note(md("*En point de PIB*")) |> 
  tab_source_note(md("*Source* : Insee. Calculs des auteurs")) |> 
  wp_tab_options()
Rows: 10 Columns: 3
── Column specification ────────────────────────────────────────────────────────
Delimiter: ";"
chr (1): En % du PIB potentiel
dbl (2): Niveau, Variation

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
In [20]:
Tableau 4. Variation des dépenses publiques entre 2017 et 2024
En % du PIB potentiel Variation
Dépenses de fonctionnement  0,0 
dont rémunération des salariés −0,4 
dont consommations intermédiaires  0,3 
Intérêts  0,3 
Prestations et autres transferts −0,8 
dont prestations sociales en espèces −0,1 
dont Transferts en nature  0,1 
dont Subventions −0,6 
Investissement  0,5 
Total  0,0 
En point de PIB
Source : Insee. Calculs des auteurs

2 Macroéconomie de l’évolution des dettes publiques

2.1 Dynamique de la dette publique

La dynamique souhaitable de la dette publique a suscité une littérature académique abondante, témoignant de l’importance et de la complexité du sujet. Un spécialiste de la dette publique soulignait que si l’on mesurait la qualité d’un champ à la quantité de purin déversé, alors le champ de la dette publique est effectivement très fertile10. L’ambition de cette partie est plus modeste, elle consiste à discuter les déterminants de la meilleure trajectoire des finances publiques pour un objectif déterminé, qui est la stabilisation puis la réduction progressive de la dette publique, en conformité aux engagements européens de la France, tout en limitant l’effet sur le niveau du taux de chômage et de l’activité. Cet objectif paraît raisonnable, notamment face aux risque macroéconomiques de grande ampleur requérant des dépenses nouvelles. Enfin, ces mécanismes permettent de comprendre les résultats quantitatifs de la Section section 2.2 suivante.

10 Voir LeGrand & Ragot (2025) pour une contribution et des références récentes.

De simples relations expliquent les déterminants du bon rythme de réduction de la dette publique rapportée au PIB (Ragot, 2025). Cette dynamique de la dette publique dépend essentiellement du solde budgétaire primaire (c’est-à-dire le solde budgétaire hors charges d’intérêt), du niveau des charges d’intérêt elles-mêmes (voir encadré 2), ainsi que du taux de croissance du PIB.

Le gouvernement peut adopter des mesures, telles que des réductions de dépenses ou des augmentations de recettes, susceptibles de modifier durablement le solde public primaire — comme l’illustrent les mesures recensées dans le tableau 3. La variation du solde budgétaire primaire structurel qui en résulte est appelée Impulsion Budgétaire (IB) et a un rôle central dans l’analyse des orientations de la politique budgétaire, en ce qu’elle permet d’évaluer l’effet discrétionnaire des décisions gouvernementales sur la trajectoire des finances publiques. Par convention, une hausse permanente des prélèvements obligatoires ou une réduction des dépenses publiques correspond à une impulsion budgétaire négative. Inversement, une baisse d’impôts ou une augmentation des dépenses est qualifiée d’impulsion budgétaire positive.

Quand le gouvernement engage une consolidation budgétaire, il choisit de pratique une IB négative: le déficit structurel primaire se réduit. Ensuite, le déficit primaire structurel est lui même la variation de la dette publique dans l’année.

Ainsi un résultat essentiel et peu compris en finances publiques est qu’une hausse d’impôt ou une baisse des dépenses (IB négative) modifient progressivement la pente de la dette publique. Une consolidation fiscale importante aujourd’hui (même si les gouvernements futurs ne font rien en termes d’IB), va progressivement ralentir la hausse de la dette publique avant de placer celle-ci sur une trajectoire décroissante permanente. Les choix des gouvernement actuels auront un impact de plus en plus important dans le temps11.

11 L’impulsion budgétaire correspond à la dérivée seconde de la dynamique de la dette.

Pour prendre une métaphore maritime, il faut donc penser la dette publique comme un bateau, et l’impulsion budgétaire comme le nouveau cap choisi. Une fois le cap modifié - c’est-à-dire une impulsion budgétaire mise en œuvre -, le navire n’infléchit pas immédiatement sa trajectoire : il faut un certain temps avant que l’effet cumulé des mesures produise une inflexion visible. De la même manière, il peut s’écouler un long délai entre une consolidation budgétaire et le moment où la dette publique s’engage effectivement sur la trajectoire décroissante visée.

De ce fait, la dynamique décroissante actuelle de la dette publique dans certains pays comme le Portugal ou l’Espagne, n’est pas le résultat des politiques actuelles, mais celles menées il y a maintenant 10 ans, comme le montre le figure 3.

Dès lors, pourquoi ne pas réaliser une consolidation actuelle importante immédiatement ? La réponse fait maintenant consensus parmi les économistes12. Une consolidation budgétaire (que ce soit hausse d’impôts ou réduction des dépenses) réduit le pouvoir d’achat des ménages et la capacité d’investissement des entreprises, ce qui réduit l’activité, le PIB et augmente transitoirement le chômage.

12 Le multiplicateur est en général estimé proche 1, et possiblement plus élevé en récession. Voir (Blanchard & Leigh, 2013), (Ramey & Zubairy, 2018) et (Creel, 2024) pour une discussion récente.

L’effet des IB sur l’activité est appelée le multiplicateur budgétaire. Ce dernier peut être faible si la consolidation est bien pensée et pèse faiblement sur l’activité. Par ailleurs, cette réduction de l’activité est transitoire et l’économie revient progressivement à un niveau d’équilibre d’activité. Ainsi, il faut comprendre la macroéconomie de la réduction de la dette comme un arbitrage entre le rythme de désendettement et la hausse transitoire du chômage qu’il engendre.

Cet arbitrage dépend des variables qui caractérisent le pays, telles que l’évolution des taux d’intérêt, de l’inflation, de la croissance ou encore de la relation entre fiscalité et l’activité économique.

Si ce Policy Brief insiste principalement sur la dimension fiscale de la consolidation budgétaire, il faut souligner que la politique monétaire peut atténuer le multiplicateur et accélérer le retour à l’équilibre. Au sein d’une union monétaire comme la zone euro, où la France ne représente que 20% du PIB de la zone euro, le rôle de la politique monétaire est limité. Cependant, la politique monétaire a parfois choisi de baisser les taux d’intérêt et d’induire une hausse de l’inflation qui aide au désendettement de l’État. Cette politique est appelée dominance fiscale de la politique monétaire, et conduit à l’utilisation de la taxe inflationniste. Pour les économistes, l’utilisation de la taxe inflationniste est critiquable. Elle contourne le débat démocratique quant au meilleur outil pour stabiliser la dette. Par ailleurs, ses effets distributifs ne sont pas maîtrisés.

La détermination de la trajectoire souhaitable des finances repose sur plusieurs objectifs, parfois contradictoires. L’atteinte d’une cible de dette doit se faire:

  • En minimisant la chute d’activité (PIB) sur la période ou la hausse du chômage.
  • En minimisant la hausse de la dette et donc la charge d’intérêt pendant la transition.
  • En contrôlant les effets distributifs (Ici pour une analyse récente des inégalités).
  • En gérant les risques qui ne sont pas modélisés (risques géopolitiques notamment).

Le choix entre ces objectifs relève avant tout d’une décision politique qui s’impose à l’économiste, dont le rôle consiste principalement à présenter les différentes trajectoires possibles, afin d’éclairer le débat public de manière rigoureuse.

Ensuite, la prévision de l’évolution des finances publiques repose sur des modèles détaillés qui produisent les mécanismes des dépenses et des recettes de chaque impôt, modèles qui peuvent être imparfaits, notamment dans des périodes d’instabilité macroéconomique (Note du Trésor et Analyse de l’OFCE). On peut résumer la macroéconomie de la dette publique par trois équations. Une représentation encore plus simple est possible (Focus CAE, n° 108) à des fins illustratives.

Les résultats de cette Section proviennent de l’analyse d’un modèle de finances publiques, présenté dans Ragot (2025) ou Timbeau (2025). On résume ici les équations principales.

Les variables utilisées sont définies comme on suit:

  • OG_{t} est l’écart de production (output gap), OG_{t}:=\left(Y_{t}-Y_{t}^{*}\right)/Y_{t}^{*},Y_{t}^{*} est le PIB potentiel nominal.

  • sps_{t} est le solde budgétaire primaire et structurel, divisé par le PIB potentiel nominal. Il s’agit d’une variable clé pour l’analyse des finances publiques.

  • d_{t} est le ratio de la dette publique rapportée au PIB potentiel nominal.

  • IB_{t} est l’impulsion budgétaire, qui est par définition l’opposé de la variation du solde budgétaire structurel primaire.

et les paramètres

  • m est le multiplicateur. Pour une consolidation pluriannuelle annoncée à l’avance, une valeur faible de 0,5 est raisonnable.
  • \rho est le rythme spontané annuel de fermeture de l’output gap. Une valeur usuelle dans les études empiriques est de 0,7.
  • \alpha est l’effet du ralentissement sur les recettes fiscales, évoqué dans l’encadré 1. En France, une valeur usuelle est 0,5.
  • r est le taux d’intérêt nominal apparent sur la dette publique,
  • g est le taux de croissance nominal du PIB potentiel. Pour la France, à moyen terme, un hypothèse raisonnable est que r=g=3\%, correspondant à une croissance réelle de 1% et une inflation de 2%.

Le modèle simple à trois équations est alors:

\begin{aligned} sps_{t}-sps_{t-1} & =-IB_{t}\\ d_{t}-d_{t-1} & =\frac{r-g}{1+g}d_{t-1}-sps{}_{t}-\alpha\times OG_{t}\\ OG_{t} & =\rho OG_{t-1}+m\times IB_{t} \end{aligned}

Les principaux mécanismes de la modélisation sont :

  1. Pour analyser l’évolution de la dette publique, il faut considérer le déficit primaire structurel, qui exclut la charge d’intérêt de la dette et les éléments conjoncturels. Dans la situation actuelle, la stabilisation de la dette requiert un retour de ce déficit à 0 %, soit une IB négative totale et cumulée de l’ordre de 3,7 points de PIB.

  2. L’effet d’une impulsion budgétaire présente sur la dette croît dans le temps. Il ne faut donc pas juger l’effort d’un gouvernement sur le déficit courant mais sur l’impulsion budgétaire proposée par rapport à une dynamique spontanée des dépenses et recettes publiques.

  3. De manière générale, si l’on veut limiter la hausse de la dette nécessite une consolidation budgétaire initiale importante, suivie d’un relâchement progressif de l’effort. Ce profil temporel est appelé Frontloading. A l’inverse, une consolidation tardive et différée, ou Backloading, caractérisée par des hausses progressives d’impôts ou des réductions graduelles des dépenses, est rarement optimal.

  4. Le bon niveau de l’impulsion budgétaire initiale dépend également du niveau initial du chômage. Lorsque ce dernier est transitoirement élevé, il convient de réduire l’ampleur de la consolidation budgétaire initial. En 2024, l’output gap de la France est estimé à -0,7% par le gouvernement (voir encadré 1), ce qui réduit mécaniquement le montant de frontloading souhaitable.

  5. Par ailleurs, les effets macroéconomiques négatifs d’une consolidation budgétaire (notamment sur le chômage et sur l’écart de production) sont d’autant plus faible que l’ajustement est étalée dans le temps. Toutefois, une telle stratégie peut entraîner une augmentation temporaire significative de la dette, avec un risque de remontée des taux d’intérêt.

  6. Enfin l’impact d’une consolidation budgétaire sur l’activité économique dépend de plusieurs paramètres essentiels. Plus le multiplicateur budgétaire est faible, plus la vitesse de retour spontané à l’équilibre macroéconomique est élevée, et plus l’écart entre le taux d’intérêt apparent sur la dette publique et le taux de croissance nominal (souvent désigné comme écart critique) est négatif, plus l’effort de consolidation requis pour stabiliser la dette est réduit.

2.2 Une simulation de la consolidation budgétaire de la France

L’objectif de cette section est d’utiliser un modèle plus complet de simulation de l’économie française, dérivé de Debtwatch v1 (Timbeau, 2025 ; Timbeau, Aurissergues & Heyer, 2021), afin de discuter la trajectoire de finances publiques françaises présentée par le gouvernement. Dans un second temps, une trajectoire alternative, fondée sur une consolidation budgétaire plus progressive et étalée dans le temps, est présentée à des fins de comparaison.

Le point de départ de l’analyse est un compte macroéconomique à moyen terme. Celui-ci repose, pour les années 2025 et 2026, sur la prévision de printemps de l’OFCE, puis, pour les années 2027 à 2029, sur les hypothèses du Programme de Stabilité à moyen terme (PSMT). Nous mobilisons ici les informations figurant dans le rapport d’avancement du PSMT d’avril 2025 - page 40, qui diffère significativement de ce que le Conseil de l’Union Européenne a approuvé en janvier 2025 - page 6/23 détaillé dans le PSMT initial d’octobre 2024 - page 68). Ces trajectoires pourraient d’ailleurs encore évoluer depuis la suspension de la procédure de déficit excessif prononcée par la Commission le 4 juin 2025.

L’objectif des simulations de cette partie et des suivantes est de montrer les implications de différentes politiques budgétaires. À cette fin, nous nous fixons comme objectif la stabilisation de la dette à 110 % du PIB. Cet exercice ne respecte donc pas les engagements européens de convergence de la France vers un niveau de dette de 60 % du PIB. Il se justifie toutefois par le fait que, une fois la dette stabilisée, la poursuite de sa réduction repose sur une politique simple à identifier. De ce fait, l’intérêt de ces simulations réside dans la dynamique de moyen terme. Enfin, l’insertion de ces trajectoires optimales dans le cadre européen actuel dépend d’une interprétation des textes européens, qui n’est pas l’objet du présent document.

Au-delà de 2029, on prolonge donc les tendances observées et on détermine la politique budgétaire pour stabiliser la dette à 110% du PIB. La politique budgétaire est donc restrictive (entre 0,9 et 0,6 point de PIB chaque année d’ajustement structurel primaire) jusqu’en 2029, pour un total de 3,8% du PIB d’ajustement. A partir de 2030, l’effort est piloté de manière à atteindre et stabiliser la dette à 110 % du PIB en 2045 (soit à 20 ans d’horizon). Comme on le verra plus loin, la cible de dette, l’ampleur de l’ajustement initial (de 2025 à 2029), son calendrier ou encore les taux souverains influencent de manière déterminante la trajectoire budgétaire nécessaire.

In [21]:
cc <- qs2::qs_read(pathify("/XT/dw cc.qs2"))
source(pathify("/XT/dwr_tools.r"))
vlabels <- tibble::tribble(
      ~name,                                                         ~value,
   "dettep",                                       "Dette publique (% PIB)",
     "tdep",                         "Dépenses publiques primaires (% PIB)",
      "spp",                                       "Solde primaire (% PIB)",
       "ci",                                    "Charge d'intérêts (% PIB)",
       "og",                                  "Ecart de production (% PIB)",
     "tcho",                                "Taux de chômage (% pop. act.)",
   "txppib",                                         "Inflation (% annuel)",
     "gpib",                         "Croissance du PIB (volume, % annuel)",
     "gpot",             "Croissance potentielle du PIB (volume, % annuel)",
   "ib_dep",                         "Impulsion dépenses publiques (% PIB)",
      "tpo",                    "Taux de prélèvements obligatoires (% PIB)",
    "r_app",                                 "Taux souverain moyen pondéré",
  "tvnairu",   "Taux de chômage n'accélérant pas l'inflation (% pop. act.)",
    "ib_po",                  "Impulsion prélèvements obligatoires (% PIB)",
       "ib",                                 "Impulsion budgétaire (% PIB)",
      "ssp",                              "Solde public structurel (% PIB)",
      "sep",                                         "Solde public (% PIB)",
  "vog_dep",                                    "Multiplicateur (dépenses)",
   "vog_po",                                      "Multiplicateur (impôts)",
   "r_inst",                     "Taux souverain 10 ans courant (% annuel)"
  ) |> pull(value, name = name)

cc <- cc |> 
  mutate(
    psmt_l = case_when(
      ibs == "psmt" ~ "PSMT, puis impulsions optimales calculées à partir de 2030",
      ibs == "optimal" ~ "impulsions optimales calculées à partir de 2025",
      ibs == "psmtlr" ~ "PSMT puis impulsions selon une règle linéaire à partir de 2030",
      ibs == "lr" ~ "impulsions selon une règle linéaire à partir de 2025"),
      is_psmt = str_detect(ibs, "psmt"),
      is_lr = str_detect(ibs, "lr"), 
    nat = case_when(
      year<2025 ~"obsvervation",
      between(year, 2025, 2029)&is_psmt ~ "PSMT",
      between(year, 2025, 2029)&!is_psmt&is_lr ~ "règle linéaire" ,
      year>2029&is_lr ~ "règle linéaire",
      TRUE ~ "optimal"), 
    tooltip = glue("<b>{vlabels[variable]}</b><br><em>{psmt_l}</em><br>En {year} : {round(q0.5*100,1)}%"))

table_simulation(cc |> filter(ibs == "psmtlr"), debut = 2024, bck = 0) |> 
  wp_tab_options()
In [22]:
Tableau 5. Politique budgétaire selon le PSMT, stabilisation de la dette à 110% par une règle linéaire
2024 2025 2026 2027 2028 2029 2030 LT (2050) Max. 25-50
Croissance du PIBa   1,2    0,5    1,1    1,1    1,0    1,1    1,8    1,1 
Ecart de productionb  −0,7   −1,4   −1,5   −1,6   −1,7   −1,8   −1,2    0,1  c  −1,8 
Croissance du PIB potentiela   1,2    1,2    1,2    1,2    1,2    1,1    1,1 
Inflationd   2,3    1,3    1,4    1,5    1,5    1,5    1,4    1,7 
Taux de chômagee   7,4    8,1    8,9    9,0    9,0    9,0    8,6    6,9    9,0 
Solde publicb  −5,8   −5,7   −5,1   −4,6   −3,9   −3,3   −3,0   −2,9   −2,5 
Solde public primaireb  −3,6   −3,4   −2,6   −1,9   −1,2   −0,5   −0,1    0,1    0,5 
Solde public structurel primaireb  −3,3   −2,7   −1,9   −1,2   −0,4    0,3    0,4    0,1    0,5 
Impulsion budgétaire primaireb   0,1   −0,8   −0,9   −0,7   −0,8   −0,7   −0,1    0,0 
   dont POb   0,4   −0,4   −0,4   −0,3   −0,4   −0,4   −0,1    0,0 
   dont dépenseb  −0,1   −0,4   −0,4   −0,3   −0,4   −0,4   −0,1    0,0 
Cumul de l'impulsion primaireb  −0,8   −1,6   −2,3   −3,1   −3,8   −3,9   −3,5  c  −3,9 
Taux souverain courantf   3,0    3,5    3,3    3,0    2,9    2,8    2,8    2,8 
Taux souverain pondérég   1,9    2,0    2,2    2,3    2,3    2,4    2,4    2,8 
Dette publiqueb 113,1  116,7  118,9  120,4  121,4  121,7  120,9  110,8  121,7 
Charge d'intérêtsb   2,2    2,3    2,5    2,6    2,8    2,8    2,9    3,0    3,0 
Données AMECO printemps 2025, première année de simulation : 2025
Simulation debtwatch v2.0 (github.com/OFCE/dwr), France, stochastique (256 tirages), valeurs moyennes
a évolution en % annuel, volume b % du PIB c Minimum d déflateur du PIB, évolution en % annuel e % de la population active f 10 ans, % annuel g % annuel

Notre compte central est résumé sur le tableau 5 et il est construit à partir des données de la Commission Européenne (AMECO) de printemps 2025 ainsi que la prévision d’avril 2025 de l’OFCE. La croissance potentielle est fixée à 1,2% par an jusqu’en 2035, puis 1,1% ensuite. L’inflation est supposée converger vers 1,75%. Le chômage d’équilibre est de 7% à l’horizon de 2035 par l’effet des réformes du marché du travail. La politique budgétaire suit le PSMT jusqu’en 2029, puis nous appliquons une règle budgétaire linéaire d’ordre 113 qui conduit à des impulsions quasi nulles à partir de 2030.

13 Le multiplicateur est ici de 1, ce qui est proche de ce qui est en général estimé, et possiblement plus élevé en récession. Voir (Blanchard & Leigh, 2013), (Ramey & Zubairy, 2018) et (Creel, 2024) pour une discussion récente.

La hausse de la dette publique est modérée mais nette, passant juste au dessus de 120% (121,7% en 2029), avant d’amorcer une décrue sous l’effet de la réduction du déficit planifiée par le PSMT. Du fait des politiques restrictives, l’écart de production se creuse au fur et à mesure des impulsions négatives jusqu’à atteindre -1,8% du PIB en 2029. Le chômage suit avec décalage la trajectoire de l’écart de production et atteindrait 9% du PIB en 2029. Cette hausse du chômage réduit l’inflation nationale en dessous de la cible d’inflation. L’impulsion est répartie équitablement entre la hausse des recettes et la baisse des dépenses, avec un multiplicateur respectif à 0,5 et 1 soit un multiplicateur moyen à 0,75. Ces deux hypothèses, ainsi que la répartition entre dépenses et recettes sont dans des ordres de grandeur habituel, mais sont incertains. Un multiplicateur plus élevé induirait une hausse plus importante du chômage (voir Timbeau (2025) pour une analyse de sensibilité).

Une fois l’essentiel de l’ajustement réalisé, en 2030, une légère impulsion positive est possible ce qui permet de réduire l’effort cumulé d’impulsion de 3,8% en 2029 à 3,5% du PIB en fin de période de simulation. En raison d’un taux d’intérêt apparent (ou le taux moyen pondéré de la dette publique) inférieur à la croissance nominale, la dette publique diminue même en présence d’un déficit primaire. Cette décrue ralentit toutefois avec l’augmentation progressive de la charge d’intérêts.

La charge d’intérêts augmente substantiellement (de 0,6 point entre 2025 et 2030) sous l’effet de la hausse du taux moyen pondéré, poussé par le taux courant qui tend vers 2,8% à terme. Cette valeur de 2,8% est la somme de la croissance potentielle en volume et de l’inflation. Cela correspond donc à r-g=0 à long terme. Cette hausse est moins rapide que celle projetée par le FMI dans le WEO d’avril 2025 qui retient pour la France une hausse de 1,5 point de PIB entre 2025 et 2030 – ce qui paraît incompatible avec les taux observé et donc trop important, mais non sans conséquences sur l’analyse du FMI des finances publiques de la France à moyen terme (voir encadré 2).

A plus long terme, une faible impulsion négative suffit à ramener lentement le solde primaire vers 0 tandis que la charge d’intérêt tend vers 3.08 %.

L’écart de production en 2024 retenu est de -0,7 point de PIB, conformément au scénario macroéconomique du rapport d’avancement annuel. En conséquence, le déficit public structurel primaire est -3,7 % du PIB en 2024 et de 3 % du PIB en 2025. L’effort total à réaliser (en incluant 2025) pour stabiliser la dette publique (sous l’hypothèse d’un écart critique nul) est donc de 3,7 points de PIB naïvement, proche des 3,8% inscrit dans le PSMT.

Cependant, comme précisé dans l’encadré encadré 1 la Commission Européenne propose une évaluation différente de l’écart de production, le situant autour de 0 en 2024 dans la version du printemps 2025 de la base de données AMECO. Cela conduit à une évaluation du déficit structurel primaire supérieure de 0,4 point de PIB.

2.3 Un ajustement optimal plus progressif

Le tableau 6 découle de l’application de la politique budgétaire optimale en lieu et place de celle anticipée par le PSMT. L’objectif est de stabiliser la dette publique à 110 % du PIB – un objectif potentiellement moins ambitieux que celui du PSMT – en minimisant le recours aux impulsions, c’est-à-dire en réduisant les variations de la politique budgétaire. A l’horizon 2029, au lieu d’un ajustement de 3,8% points de PIB, tel qu’envisagé par le PSMT, la politique budgétaire optimale, compte tenu de la cible de dette et de la fonction de perte retenues, implique un ajustement de 2,8 points de PIB (soit environ 80 milliards d’euros). L’effet sur l’activité est alors plus modéré que dans le scénario du PSMT, tandis que le pic de dette publique est légèrement plus élevé (123,6 % du PIB contre 121,7 % dans le PSMT (tableau 5 et tableau 6).

In [23]:
table_simulation(cc |> filter(ibs == "optimal"), debut = 2024, bck = 0) |> 
  wp_tab_options()
In [24]:
Tableau 6. Politique budgétaire optimale pour la stabilisation de la dette à 110% à partir de 2025
2024 2025 2026 2027 2028 2029 2030 LT (2050) Max. 25-50
Croissance du PIBa   1,2    0,7    1,2    1,2    1,2    1,2    1,2    1,3 
Ecart de productionb  −0,7   −1,3   −1,2   −1,2   −1,2   −1,2   −1,1    0,0  c  −1,3 
Croissance du PIB potentiela   1,2    1,2    1,2    1,2    1,2    1,1    1,1 
Inflationd   2,3    1,3    1,4    1,5    1,5    1,5    1,5    1,7 
Taux de chômagee   7,4    8,0    8,7    8,7    8,6    8,5    8,4    7,1    8,7 
Solde publicb  −5,8   −5,7   −5,2   −4,9   −4,5   −4,1   −3,7   −3,0   −1,8 
Solde public primaireb  −3,6   −3,5   −2,8   −2,2   −1,7   −1,2   −0,8   −0,0    1,2 
Solde public structurel primaireb  −3,3   −2,9   −2,2   −1,7   −1,2   −0,7   −0,2   −0,0    1,3 
Impulsion budgétaire primaireb   0,1   −0,6   −0,7   −0,5   −0,5   −0,5   −0,5    0,1 
   dont POb   0,4   −0,3   −0,3   −0,3   −0,2   −0,2   −0,2    0,0 
   dont dépenseb  −0,1   −0,3   −0,3   −0,3   −0,2   −0,2   −0,2    0,0 
Cumul de l'impulsion primaireb  −0,6   −1,3   −1,8   −2,3   −2,8   −3,2   −3,4  c  −4,7 
Taux souverain courantf   3,0    3,5    3,3    3,0    2,9    2,9    2,8    2,8 
Taux souverain pondérég   1,9    2,0    2,2    2,3    2,3    2,4    2,4    2,8 
Dette publiqueb 113,1  116,6  118,8  120,5  121,8  122,6  123,1  110,1  123,2 
Charge d'intérêtsb   2,2    2,3    2,5    2,6    2,7    2,8    2,9    3,0    3,1 
Données AMECO printemps 2025, première année de simulation : 2025
Simulation debtwatch v2.0 (github.com/OFCE/dwr), France, stochastique (256 tirages), valeurs moyennes
a évolution en % annuel, volume b % du PIB c Minimum d déflateur du PIB, évolution en % annuel e % de la population active f 10 ans, % annuel g % annuel

A plus long terme, la totalité de l’ajustement est de 3,4 points de PIB (ou encore un peu plus de 100 milliards d’euros), soit un niveau légèrement inférieur au solde structurel estimé pour 2024 (3,7 points de PIB, 110 milliards d’euros). Cela s’explique principalement par la prise en compte, à partir de 2026, d’un taux d’intérêt apparent (ou moyen pondéré) inférieur à la croissance nominale. Cet ajustement de long terme est presque indépendant de la cible de dette, du moins tant que l’écart entre le taux pondéré et le taux de croissance nominal tend vers 0. Cette propriété découle de la quasi-linéarité du modèle (et s’estompe lorsque l’écart critique est non nul) et l’impératif de stabiliser la dette au bout d’un certain temps. Une cible de dette plus stricte modifie le calendrier des impulsions et oblige une période plus longue d’excédent primaire pour réduire la dette publique. Une fois la cible atteinte, le solde structurel peut être égal à celui qui stabilise la dette (0% si r=g).

La politique optimale est moins restrictive selon la politique budgétaire optimale, en particulier à partir de 2027 (tableau 6 et figure 9). L’écart de production atteint un creux en 2026 puis est moins creusé tout au long de la trajectoire de l’ajustement. L’effort à accomplir jusqu’en 2019, l’horizon du PSMT, est inférieur de plus d’un point de PIB, ce qui se traduit par une nette différence de taux de chômage à cet horizon.

In [25]:
annotations <- tribble(
  ~variable, ~x, ~y, ~texte, ~ibs, ~hjust,
  "dettep", 2038, 1.23, "optimal à partir de 2025", "optimal", 0,
  "dettep", 2025, 1.11, "PSMT puis règle linéaire à partir de 2030", "psmtlr", 0)

data_cc <- cc |> 
  filter(
    ibs %in% c("psmtlr", "optimal"),
    between(year, 2024, 2050), 
    variable %in% c("og", "ib", "dettep", "sep")) |> 
  mutate(ibs = factor(ibs, c("psmtlr", "optimal")))

gg <- ggplot(data_cc) +
  PrettyCols::scale_color_pretty_d("Joyful") +
  PrettyCols::scale_fill_pretty_d("Joyful") +
  geom_ribbon(
    aes(x=year, ymin=q0.025, ymax=q0.975, fill = ibs), alpha = 0.05) +
  geom_line(
    aes(x = year, y = mean, color = ibs), linewidth = 0.25) +
  geom_text(
    data=annotations, 
    aes(x = x, y = y, label = texte, color = ibs, hjust = hjust), size = text_size, size.unit = "pt" ) +
  geom_point_interactive(
    aes(x = year, y = mean, fill = ibs, shape = nat, size = nat,
        tooltip = tooltip, data_id = year), 
     color="white", size = 1., shape = 21, stroke=0.25, hover_nearest = TRUE)+
  scale_size_manual(values= c("obs" = 2, "pmst" = 1.5, "rule" = 1)) +
  scale_shape_manual(values= c("obs" = 21, "pmst" = 23, "rule" = 23)) +
  facet_wrap(ggplot2::vars(variable), scales = "free_y", labeller = labeller(variable= vlabels)) +
  scale_y_continuous(labels = scales::label_percent(.1))+
  scale_x_continuous(
    breaks = scales::pretty_breaks(), 
    labels = date1,
    minor_breaks = scales::breaks_width(1)) +
  xlab(NULL)+ylab(NULL)+
  theme_ofce()+
  guides(shape = "none", size = "none", fill="none", color = "none",
         x = guide_axis(minor.ticks = TRUE))+
  labs(color = NULL, fill=NULL) +
  ofce_caption(
    source  = "AMECO 5/2025, prévision d'avril de l'OFCE, debtwatch 2.0",
    note = "Les trajectoires en bleu sont obtenues pour la politique budgétaire du PSMT (RAA d'avril 2025), puis une règle linéaire stabilisant la dette à 110%. Les trajectoire en rose sont obtenues en déterminant les impulsions budgétaires en minimisant une fonction de perte (creux d'écart de production, lissage des impulsions) sous contrainte d'atteindre 100% de dette publique en 2045. Les bandes colorées indiquent les intervalles à 50% des trajectoires en intégrant des perturbations aléatoires. Voir Timbeau (2025)."  )

girafy(gg, r=1.5)
Figure 9. Deux scenarii de politique budgétaire
wp_download(cc |>
              select(politique = ibs, politique_label = psmt_l,
                     year, variable, mean, q0.025, q0.5, q0.975), 
            "scenarios",
            "Scénarios")

Les analyses de sensibilité montrent de plus que l’ajustement est significativement réduit si la politique monétaire accompagne l’ajustement et produit un écart critique négatif. Ainsi, pour un écart d’un demi de point entre la croissance nominale et le taux apparent, l’ajustement de long terme passe de 3,4 % du PIB à 2,9 % du PIB et à l’horizon 2029, l’ajustement doit être de 2,5 % du PIB au lieu de 2,8 % du PIB.

3 Conclusion

L’objet de ce Policy Brief est d’expliquer la dynamique du déficit et de la dette publics en France et de proposer une trajectoire de stabilisation de la dette.

3.1 Vers une stabilisation progressive et crédible de la dette publique

Deux trajectoires de la dette publique ont été analysées à l’aide de Debwatch. La première est compatible avec celle proposée par le gouvernement dans le PMST. La seconde est une trajectoire alternative, fondée sur un ajustement plus progressif, visant à réduire les effets récessifs, notamment en limitant la hausse du chômage.

Ces deux trajectoires reposent sur un ajustement initial important, nécessaire pour modifier rapidement la trajectoire de la dette publique, tout en l’étalant sur plusieurs années afin d’en limiter les coûts sociaux.

La difficulté posée par ces deux trajectoires est la nécessaire crédibilité de l’ajustement budgétaire sur plusieurs années. La Section 1 n’incite qu’à un optimisme modéré quant à la capacité de la France à s’engager sur une telle trajectoire progressive.

Avant même de proposer des mesures permettant cet ajustement, qui fera l’objet d’un Policy Brief futur, des évolutions institutionnelles sont nécessaires afin de permettre de rendre crédible un ajustement progressif.

Tout d’abord, une cible de déficit public à dix ans suppose une identification précise de l’évolution des dépenses et des recettes publiques. Il est donc crucial d’améliorer la prévision à l’horizon de 10 ans à législation inchangée. Si le Conseil d’Orientation des Retraites fournit un rapport régulier, débattu et producteur de consensus, au moins sur le diagnostic, sur les dépenses de retraite, d’autres types de dépenses ne bénéficient pas du même suivi. L’évolution de dépenses de santé, d’éducation, des collectivités locales, d’investissement public, notamment pour la transition énergétique ou de défense devrait être mieux documentée et mise en cohérence.

Le Haut-Commissariat au Plan (HCSP), en coordination avec d’autres organismes publics, pourrait établir une trajectoire à trente ans des finances publiques. Les travaux de la CAE, du COR, du HCAAM, du HCFEA, du HCFiPS, du HCC ou encore du CNN sont essentiels, mais mériteraient d’être agrégés et articulés autour d’une vision cohérente.

3.2 Évaluer la crédibilité des projections budgétaires à moyen terme

L’évaluation du réalisme des prévisions budgétaires relève aujourd’hui du mandat du Haut Conseil des Finances Publiques (HCFP). Toutefois, cette évaluation se limite pour l’instant à l’année à venir. Or, une trajectoire crédible de désendettement nécessite une appréciation pluriannuelle, à horizon de dix ans. Dans ce cadre, après l’analyse par le HCSP des tendances spontanées des dépenses et recettes publiques, le HCFP devrait évaluer la crédibilité des mesures de consolidation budgétaire de moyen terme proposées par le gouvernement, au regard de ses objectifs de dette. C’est bien l’analyse du moyen terme (10 à 20 ans) des finances publiques qui fait aujourd’hui défaut.

3.3 Intégrer ces travaux dans le débat budgétaire parlementaire

L’ensemble de ces éléments – projections, évaluations, cohérences sectorielles – devraient nourrir le débat public et guider le vote du budget par le Parlement. Deux évolutions simples permettraient d’informer le législateur. Tout d’abord le débat sur le Projet de Loi de Finances devrait commencer par un cadrage budgétaire à moyen terme à législation inchangée. Ensuite, après le vote du budget, une nouvelle estimation de l’évolution de la dette publique devrait être proposée.

3.4 Une institution indépendante pour garantir la soutenabilité

Le dispositif institutionnel varie d’un pays à l’autre. Le CBO14 et l’OBR15 aux Etats-Unis et en Angleterre ont un rôle de cette nature. En France, une institution devrait réaliser ce travail, avec une indépendance forte vis à vis de l’exécutif. Une institution comme la Cour des Comptes, qui héberge déjà le HCFP, pourrait être un candidat naturel à cette mission élargie..

14 Le Congressional Budget Office (CBO) est rattaché directement au pouvoir législatif aux Etats-Unis. Lors de sa création en 1974, il a reçu comme mandat d’informer le Congrès des prévisions sur le coût des dispositifs publics à horizon de 5 ans. L’institution, par décision propre, propose des projections à horizon de 10 ans, y compris sur la dette publique.

15 L’Office for Budget Responsibility (OBR) a été crée en 2010 au Royaume-Uni. Cette institution est indépendante du pouvoir exécutif. Elle doit produire des projections de finances publiques au cours de l’automne, lors de l’envoi du budget au pouvoir législatif.

Enfin, le mise en place d’une règle d’or est parfois proposée (par exemple par Christian Chavagneux). Cette mesure consiste à introduire dans la constitution des contraintes sur le déficit public, en conservant les capacités d’investissement des Etats et en restreignant le recours à l’endettement. Comme le montre l’Allemagne, qui a du sortir du dispositif du fait d’un sous-investissement chronique et du choc de la crise énergétique, une telle règle peut introduire des rigidités sur l’action publique excessives, mal adaptées à un environnement économique instable. Cependant, il faut reconnaître la nécessité d’évolution institutionnelle afin d’assurer la crédibilité d’un désendettement progressif et pluriannuel

Références

Aviat, A., Bec, F., Diebolt, C., Doz, C., Ferrand, D., Ferrara, L., Heyer, E., Mignon, V. & Pionnier, P.-A. (2021), « Les cycles économiques de la France : une datation de référence », Working Papers, n°hal-04159739, HAL.
Blanchard, O.J. & Leigh, D. (2013), « Growth Forecast Errors and Fiscal Multipliers », American Economic Review, vol. 103, n°3, pp. 117‑120. https://doi.org/10.1257/aer.103.3.117
Creel, J., Jerome et Kaiser (2024), « Okun’s law, V/U and the Fiscal Multiplier », OFCE Working Paper, n°18.
LeGrand, F. & Ragot, X. (2025), « Optimal Fiscal Policy with Heterogeneous Agents and Capital: Should We Increase or Decrease Public Debt and Capital Taxes? », Journal of Political Economy, vol. May,.
Madec, P., Plane, M. & Sampognaro, R. (2022), « Une analyse macro et microéconomique du pouvoir d’achat des ménages en France. Bilan du quinquennat mis en perspective. », OFCE Policy Brief, n°104.
Mourre, G., Poissonnier, A. & Lausegger, M. (2019), « The Semi-Elasticities Underlying the Cyclically-Adjusted Budget Balance: An Update and Further Analysis », European Economy - Discussion Papers, n°098, Directorate General Economic; Financial Affairs (DG ECFIN), European Commission.
Plane, M., Ragot, X. & Sampognaro, R. (2024), « Les crises expliquent-elles la hausse de la dette publique en France ? », OFCE Le Blog.
Ragot, X. (2025), « Macroéconomie de la consolidation budgétaire dans un modèle keynésien », document de travail de l’OFCE, n°15.
Ramey, V.A. & Zubairy, S. (2018), « Government Spending Multipliers in Good Times and in Bad: Evidence from US Historical Data », Journal of Political Economy, vol. 126, n°2, pp. 850‑901.
Sterdyniak, H. (2015), « Faut-il encore utiliser le concept de croissance potentielle ? », SciencePo Working papers Main, n°hal-03459709, HAL. https://doi.org/10.3917/reof.142.0255
Timbeau, X. (2025), « Trajectoires d’ajustement des finances publiques de la France, une analyse avec debtwatch », document de travail de l’OFCE, n°14.
Timbeau, X., Aurissergues, E. & Heyer, E. (2021), « La dette publique au XXI siècle. Une analyse de la dynamique de la dette publique avec Debtwatch », Policy brief de l’OFCE.