CAC 40

Data - yahoo

Info

source dataset .html .RData
yahoo CAC40 2025-05-18 2025-07-20

LAST_COMPILE

LAST_COMPILE
2025-07-20

Last

date Nobs
2025-07-18 39

symbol

Dividendes

BNP Paribas

Code
CAC40_dividendes %>%
  filter(`Intitulé` %in% c("BNP Paribas")) %>%
  select(2, 7, 8, 9, 10) %>%
  print_table_conditional()
Intitulé Année  réf. Type Dividende  brut Dividende  normalisé
BNP Paribas 2024 Solde 4.790 € 4.790 €
BNP Paribas 2023 Solde 4.600 € 4.600 €
BNP Paribas 2022 Solde 3.900 € 3.900 €
BNP Paribas 2021 Solde 3.670 € 3.670 €
BNP Paribas 2020 Solde 1.550 € 1.550 €
BNP Paribas 2020 Acompte 1.110 € 1.110 €
BNP Paribas 2019 Solde 0.000 € 0.000 €
BNP Paribas 2018 Solde 3.020 € 3.020 €
BNP Paribas 2017 Solde 3.020 € 3.020 €
BNP Paribas 2016 Solde 2.700 € 2.700 €
BNP Paribas 2015 Solde 2.310 € 2.310 €
BNP Paribas 2014 Solde 1.500 € 1.500 €
BNP Paribas 2013 Solde 1.500 € 1.500 €
BNP Paribas 2012 Solde 1.500 € 1.500 €
BNP Paribas 2011 Solde 1.200 € 1.200 €
BNP Paribas 2010 Solde 2.100 € 2.100 €
BNP Paribas 2009 Solde 1.500 € 1.500 €
BNP Paribas 2008 Solde 1.000 € 1.000 €
BNP Paribas 2007 Solde 3.350 € 3.350 €
BNP Paribas 2006 Solde 3.100 € 3.100 €
BNP Paribas 2005 Solde 2.600 € 2.600 €
BNP Paribas 2004 Solde 2.000 € 2.000 €
BNP Paribas 2003 Solde 2.175 € 2.175 €
BNP Paribas 2002 Solde 1.800 € 1.800 €
BNP Paribas 2001 Solde 1.800 € 1.800 €
BNP Paribas 2000 Solde 3.375 € 1.688 €
BNP Paribas 1999 Solde 2.625 € 1.313 €
BNP Paribas 1998 Solde 14.760 F 1.125 €
BNP Paribas 1997 Solde 10.500 F 0.801 €

Vinci

Code
CAC40_dividendes %>%
  filter(`Intitulé` %in% c("Vinci")) %>%
  select(2, 7, 8, 9, 10, 11, 12) %>%
  print_table_conditional()

Components

1990-

Linear

Code
plot_linear <- CAC40 %>%
  left_join(CAC40_components, by = "symbol") %>%
  filter(symbol %in% c("DSY", "HO")) %>%
  filter(date >= as.Date("1990-01-01")) %>%
  group_by(symbol) %>%
  arrange(date) %>%
  mutate(close = 100*close/close[1]) %>%
  ggplot() + geom_line(aes(x = date, y = close, color = Symbol)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.title = element_blank(),
        legend.position = c(0.5, 0.9)) +
  scale_y_continuous(breaks = seq(0, 1000000, 100)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1945, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

plot_linear

Log

Code
plot_log <- plot_linear +
  scale_y_log10(breaks = c(50, 80, 100,200, 500, 800, 1000))

plot_log

Bind

Code
ggpubr::ggarrange(plot_linear + ggtitle("Linear scale"), plot_log + ggtitle("Log scale"), common.legend = T)

2010-

Linear

Code
plot_linear <- CAC40 %>%
  left_join(CAC40_components, by = "symbol") %>%
  filter(symbol %in% c("LR", "MC")) %>%
  filter(date >= as.Date("2010-01-01")) %>%
  group_by(symbol) %>%
  arrange(date) %>%
  mutate(close = 100*close/close[1]) %>%
  ggplot() + geom_line(aes(x = date, y = close, color = Symbol)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.7),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_continuous(breaks = seq(0, 1000000, 100),
                     labels = dollar_format(pre = "", acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y"))

plot_linear

Log

Code
plot_log <- plot_linear +
  scale_y_log10(breaks = c(10^seq(1, 100, 1), 10^seq(1, 100, 1)*2, 10^seq(1, 100, 1)*5),
                     labels = dollar_format(pre = "", acc = 1))

plot_log

Bind

Code
ggpubr::ggarrange(plot_linear + ggtitle("Linear scale"),
                  plot_log + ggtitle("Log scale"),
                  common.legend = T)

2014-

Linear

Code
plot_linear <- CAC40 %>%
  left_join(CAC40_components, by = "symbol") %>%
  filter(symbol %in% c("DSY", "HO")) %>%
  filter(date >= as.Date("2014-01-01")) %>%
  group_by(symbol) %>%
  arrange(date) %>%
  mutate(close = 100*close/close[1]) %>%
  ggplot() + geom_line(aes(x = date, y = close, color = Symbol)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.7),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
  scale_y_continuous(breaks = seq(0, 1000000, 100),
                     labels = dollar_format(pre = "", acc = 1)) + 
  scale_x_date(breaks = as.Date(paste0(seq(1940, 2100, 1), "-01-01")),
               labels = date_format("%Y"))

plot_linear

Log

Code
plot_log <- plot_linear +
  scale_y_log10(breaks = c(10^seq(1, 100, 1), 10^seq(1, 100, 1)*2, 10^seq(1, 100, 1)*5),
                     labels = dollar_format(pre = "", acc = 1))

plot_log

Bind

Code
ggpubr::ggarrange(plot_linear + ggtitle("Linear scale"),
                  plot_log + ggtitle("Log scale"),
                  common.legend = T)

Banques

Tous

Code
CAC40 %>%
  left_join(CAC40_components, by = "symbol") %>%
  filter(symbol %in% c("BNP", "ACA", "GLE")) %>%
  #filter(date >= as.Date("1990-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = close, color = Symbol)) + 
  theme_minimal() + xlab("") + ylab("Stock Price (Close)") +
  scale_x_date(breaks = seq(1960, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 2, 3, 5, 10, 25, 50, 100, 200, 500),
                     labels = dollar_format(prefix = "", suffix = "€", accuracy = 1)) +
  theme(legend.position = c(0.2, 0.80),
        legend.title = element_blank())

2010-

Code
CAC40 %>%
  left_join(CAC40_components, by = "symbol") %>%
  filter(symbol %in% c("BNP", "ACA", "GLE")) %>%
  filter(date >= as.Date("2010-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = close, color = Symbol)) + 
  theme_minimal() + xlab("") + ylab("Stock Price (Close)") +
  scale_x_date(breaks = seq(1960, 2100, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 2, 3, 5, 10, 25, 50, 100, 200, 500),
                     labels = dollar_format(prefix = "", suffix = "€", accuracy = 1)) +
  theme(legend.position = c(0.15, 0.90),
        legend.title = element_blank())