Last observation: 15 sept. 2026 (N = 55)
First observation: 26 déc. 1979 (N = 1)
Last data update: 16 sept. 2026, 06:30
Last compile: 16 sept. 2026, 06:43
stocks_USA couvre 62 grandes valeurs américaines en données quotidiennes (OHLCV, source investing.com), avec un historique qui démarre en 1979 pour les plus anciennes. Bandes grises : récessions américaines (NBER).
Cours rebasés à 1 $ fin 1984, échelle logarithmique. Sur quarante ans, la même pente correspond au même rendement annualisé.
sel <- tribble(
~symbol, ~lab,
"AAPL", "Apple", "KO", "Coca-Cola", "JPM", "JPMorgan",
"MCD", "McDonald's", "DIS", "Disney", "CAT", "Caterpillar",
"BA", "Boeing", "MRK", "Merck", "INTC", "Intel")
stocks_USA |>
inner_join(sel, by = "symbol") |>
deglitch() |>
filter(Date >= as.Date("1985-01-01")) |>
group_by(lab) |> arrange(Date) |>
mutate(y = Close / first(Close)) |> ungroup() |>
line_named("Valeur d'un dollar investi (échelle log)", recessions = TRUE)
sel <- tribble(
~symbol, ~lab,
"AAPL", "Apple", "MSFT", "Microsoft", "ORCL", "Oracle",
"CSCO", "Cisco", "QCOM", "Qualcomm", "INTC", "Intel",
"ADBE", "Adobe")
stocks_USA |>
inner_join(sel, by = "symbol") |>
deglitch() |>
filter(Date >= as.Date("2000-01-01")) |>
group_by(lab) |> arrange(Date) |>
mutate(y = 100 * Close / first(Close)) |> ungroup() |>
line_named("Cours rebasé (base 100 = janv. 2000)", recessions = TRUE)
total_return(stocks_USA, "2000-01-01") |>
left_join(stocks_USA_var |> select(symbol, name), by = "symbol") |>
mutate(name = coalesce(name, symbol),
yrs = pmax(as.numeric(to - from) / 365.25, 1),
cagr = ifelse(ret <= -0.999, -1, (1 + ret)^(1 / yrs) - 1)) |>
filter(!is.na(cagr)) |>
slice_max(abs(cagr), n = 30) |>
mutate(name = fct_reorder(name, cagr),
col = ifelse(cagr >= 0, "#2ca02c", "#d62728")) |>
ggplot(aes(cagr, name, fill = col)) +
geom_col(width = 0.72) +
geom_vline(xintercept = 0, colour = "grey40") +
geom_text(aes(label = scales::percent(cagr, accuracy = 1),
hjust = ifelse(cagr >= 0, -0.2, 1.2)),
size = 2.7, colour = "grey30") +
scale_fill_identity() +
scale_x_continuous(labels = scales::percent,
expand = expansion(mult = c(0.14, 0.14))) +
theme_minimal() + xlab("Rendement annualisé depuis 2000") + ylab("")