Dividendes Yahoo - adjusted_dividends

Data - Yahoo

Dividendes bruts par action à la date de détachement (Dividend, devise de cotation), pour les titres de adjusted_USA et adjusted_FRA. Ce sont ces dividendes que Yahoo réinvestit pour construire Adjusted.

Vue d’ensemble

Code
div |> inner_join(adj_map |> select(ticker, universe, exchange), by = "ticker") |>
  filter(universe == "FRA" | exchange %in% c("NASDAQ", "NYSE", "NYSE MKT")) |>
  group_by(Univers = universe) |>
  summarise(`Dividendes` = n(), `Titres payeurs` = n_distinct(ticker),
            Début = min(Date), Fin = max(Date), .groups = "drop") |> print_table_conditional()
Univers Dividendes Titres payeurs Début Fin
FRA 6997 350 1989-06-05 2026-10-06
USA 144682 1648 1970-01-19 2026-10-06

Rendement de dividende par année

Pour chaque titre et chaque année : dividendes versés dans l’année / cours (non ajusté) de fin d’année précédente. Médiane parmi les titres payeurs (cette année-là).

Code
px <- bind_rows(read_parquet("adjusted_USA.parquet"), read_parquet("adjusted_FRA.parquet")) |>
  mutate(Date = as.Date(Date), year = year(Date)) |>
  filter(Close > 0) |> arrange(ticker, Date) |> group_by(ticker, year) |>
  summarise(close_end = last(Close), .groups = "drop") |>
  group_by(ticker) |> arrange(year) |> mutate(close_prev = lag(close_end), gap = year - lag(year)) |> ungroup() |>
  filter(gap == 1)
yd <- div |> mutate(year = year(Date)) |> group_by(ticker, year) |> summarise(d = sum(Dividend), .groups = "drop") |>
  inner_join(px, by = c("ticker", "year")) |>
  inner_join(adj_map |> select(ticker, universe, exchange), by = "ticker") |>
  filter(universe == "FRA" | exchange %in% c("NASDAQ", "NYSE", "NYSE MKT")) |>
  mutate(y = 100 * d / close_prev) |> filter(is.finite(y), y < 30, year >= 1990)
yd |> group_by(universe, year) |> filter(n() >= 20) |>
  summarise(`Rendement médian (%)` = median(y), `Titres payeurs` = n(), .groups = "drop") |>
  ggplot(aes(year, `Rendement médian (%)`, color = universe)) + geom_line() + theme_minimal() +
  xlab("") + theme(legend.position = c(0.85, 0.85), legend.title = element_blank())

Plus gros payeurs (dernière année complète)

Code
ly <- year(max(div$Date)) - 1
yd |> filter(year == ly) |> left_join(adj_map |> select(ticker, name), by = "ticker") |>
  transmute(Univers = universe, Ticker = ticker, Nom = name, `Dividendes (devise locale)` = round(d, 2),
            `Rendement (%)` = round(y, 2)) |> arrange(desc(`Rendement (%)`)) |>
  print_table_conditional()

Tous les dividendes

Code
div |> arrange(desc(Date)) |> print_table_conditional()