Liste des OAT en circulation - list-OAT

Données - AFT

Encours par année de maturité

Code
listOAT |>
  group_by(maturity_year) |>
  summarise(outstanding = sum(outstanding)) |>
  ggplot(aes(x = factor(maturity_year), y = outstanding / 1e9)) +
  geom_col(fill = "#1B3F8B") +
  theme_minimal(base_size = 13) +
  labs(x = "Année de maturité", y = "Milliards d'euros",
       title = "Encours d'OAT par année de maturité") +
  theme(panel.grid.minor = element_blank(),
        panel.grid.major.x = element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, size = 8))

Frise chronologique des échéances

Code
# 59 lignes -- trop dense pour des étiquettes de texte (cf. list-OATi/
# list-OATeuroi) : seuls la position (échéance), la taille (encours) et la
# couleur (taux) sont utilisés ; le détail est dans le tableau ci-dessous.
ggplot(listOAT, aes(x = maturity_date, y = 0)) +
  geom_hline(yintercept = 0, color = "grey70") +
  geom_point(aes(size = outstanding / 1e9, color = coupon_rate), alpha = 0.8) +
  scale_size_continuous(range = c(2, 12), name = "Encours (Md€)") +
  scale_color_viridis_c(option = "C", name = "Taux (%)") +
  scale_x_date(date_labels = "%Y", date_breaks = "5 years") +
  coord_cartesian(ylim = c(-1, 1)) +
  theme_minimal(base_size = 13) +
  theme(axis.title.y = element_blank(), axis.text.y = element_blank(),
        axis.ticks.y = element_blank(), panel.grid.major.y = element_blank(),
        panel.grid.minor = element_blank(), legend.position = "bottom") +
  labs(x = NULL, title = "Échéances et encours des OAT en circulation",
       subtitle = "Taille des points = encours ; couleur = taux du coupon")

Détail par ligne

Code
listOAT |>
  arrange(maturity_date) |>
  transmute(isin, bond, `Échéance` = maturity_date, `Taux (%)` = coupon_rate,
            `Verte` = if_else(green, "Oui", ""), outstanding) |>
  gt() |>
  tab_header(title = "Encours des OAT en circulation") |>
  fmt_date(columns = `Échéance`, date_style = "iso") |>
  fmt_number(columns = outstanding, decimals = 0) |>
  grand_summary_rows(columns = outstanding, fns = list(Total = ~ sum(.)), fmt = ~ fmt_number(., decimals = 0)) |>
  opt_interactive(use_search = TRUE, use_filters = TRUE, use_sorting = TRUE,
                   use_resizers = TRUE, use_highlight = TRUE,
                   use_compact_mode = TRUE, use_page_size_select = TRUE)
Encours des OAT en circulation

Tableau interactif

Code
listOAT |>
  arrange(maturity_date) |>
  transmute(isin, bond, `Échéance` = maturity_date, `Taux (%)` = coupon_rate,
            `Verte` = if_else(green, "Oui", "Non"), outstanding) |>
  gt() |>
  fmt_date(columns = `Échéance`, date_style = "iso") |>
  fmt_number(columns = outstanding, decimals = 0) |>
  opt_interactive(use_search = TRUE, use_filters = TRUE, use_sorting = TRUE,
                   use_resizers = TRUE, use_highlight = TRUE,
                   use_compact_mode = TRUE, use_page_size_select = TRUE)