Exchange Rates
Data - ECB
Info
Last observation: Monthly: 2026-07 (N = 698) · Quarterly: 2026-Q2 (N = 632) · Annual: 2025 (N = 1,277) · NA: 2026-S1 (N = 29) · NA: 2026-08-12 (N = 248)
First observation: Monthly: 1981-09 (N = 13) · Quarterly: 1981-Q4 (N = 13) · Annual: 1982 (N = 13) · NA: 1981-09-21 (N = 13) · NA: 1999-S1 (N = 35)
Last data update: 13 aoû 2026, 02:40. Last compile: 13 aoû 2026, 08:21
Structure
Info
LAST_COMPILE
| LAST_COMPILE |
|---|
| 2026-08-13 |
Last
| TIME_PERIOD | FREQ | Nobs |
|---|---|---|
| 2026-S1 | H | 29 |
| 2026-Q2 | Q | 632 |
| 2026-08-12 | D | 248 |
| 2026-07 | M | 698 |
| 2025 | A | 1277 |
FREQ
Code
EXR |>
group_by(FREQ) |>
summarise(Nobs = n()) |>
arrange(-Nobs) |>
print_table_conditional()| FREQ | Nobs |
|---|---|
| D | 2947612 |
| M | 349275 |
| Q | 188537 |
| A | 40799 |
| H | 2040 |
COLLECTION
Code
EXR |>
group_by(COLLECTION) |>
summarise(Nobs = n()) |>
arrange(-Nobs) |>
print_table_conditional()| COLLECTION | Nobs |
|---|---|
| A | 3511506 |
| E | 16757 |
OBS_STATUS
Code
EXR |>
group_by(OBS_STATUS) |>
summarise(Nobs = n()) |>
arrange(-Nobs) |>
print_table_conditional()| OBS_STATUS | Nobs |
|---|---|
| A | 2692549 |
| M | 812380 |
| P | 20917 |
| H | 2417 |
Last
Code
EXR |>
filter(TIME_PERIOD == last_time) |>
select_if(function(col) length(unique(col)) > 1) |>
select(KEY, CURRENCY, CURRENCY_DENOM, OBS_VALUE) |>
print_table_conditional()Swiss Franc, Dollar, Pound
All
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0.1, 3, 0.1),
labels = dollar_format(accuracy = .1, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.8, 0.80),
legend.title = element_blank()) +
geom_label(data = . %>% filter(max(date) == date),
aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 3), color = TITLE),
show.legend = F)
2008-
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
filter(date >= as.Date("2008-01-01")) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0.1, 3, 0.1),
labels = dollar_format(accuracy = .1, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.8, 0.80),
legend.title = element_blank()) +
geom_label(data = . %>% filter(max(date) == date),
aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 3), color = TITLE),
show.legend = F)
2021-
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
filter(date >= as.Date("2021-01-01")) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "3 months",
labels = date_format("%b %Y")) +
scale_y_continuous(breaks = seq(0.1, 3, 0.05),
labels = dollar_format(accuracy = .1, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.8, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
geom_label(data = . %>% filter(max(date) == date),
aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 3), color = TITLE),
show.legend = F)
2 years before
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
filter(date >= Sys.Date() - years(2)) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "2 months",
labels = date_format("%b %Y")) +
scale_y_continuous(breaks = seq(0.1, 3, 0.05),
labels = dollar_format(accuracy = .01, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.8, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
geom_label(data = . %>% filter(max(date) == date),
aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 3), color = TITLE),
show.legend = F)
2022-
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
filter(date >= as.Date("2022-01-01")) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "3 months",
labels = date_format("%b %Y")) +
scale_y_continuous(breaks = seq(0.1, 3, 0.05),
labels = dollar_format(accuracy = .1, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.8, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
geom_label(data = . %>% filter(max(date) == date),
aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 3), color = TITLE),
show.legend = F)
1 year-before
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
filter(date >= Sys.Date() - years(1)) |>
arrange(desc(date)) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
scale_y_log10(breaks = seq(0.1, 3, 0.04),
labels = dollar_format(accuracy = .01, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.15, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
geom_label(data = . %>% filter(max(date) == date),
aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 3), color = TITLE),
show.legend = F)
6 months
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
filter(date >= Sys.Date() - months(3)) |>
arrange(desc(date)) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "7 days",
labels = date_format("%d %b %Y")) +
scale_y_log10(breaks = seq(0.1, 3, 0.04),
labels = dollar_format(accuracy = .01, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.15, 0.3),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = OBS_VALUE),
fontface ="plain", color = "black", size = 3)
3 months
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
filter(date >= Sys.Date() - months(3)) |>
arrange(desc(date)) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "3 days",
labels = date_format("%d %b %Y")) +
scale_y_log10(breaks = seq(0.1, 3, 0.04),
labels = dollar_format(accuracy = .01, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.15, 0.3),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = OBS_VALUE),
fontface ="plain", color = "black", size = 3)
1 month
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF", "GBP")) |>
month_to_date() |>
filter(date >= Sys.Date() - months(1)) |>
arrange(desc(date)) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 day",
labels = date_format("%d %b %Y")) +
scale_y_log10(breaks = seq(0.1, 3, 0.04),
labels = dollar_format(accuracy = .01, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.15, 0.75),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = OBS_VALUE), fontface ="plain", color = "black", size = 3)
Swiss Franc, Dollar
All
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF")) |>
month_to_date() |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0.1, 3, 0.1),
labels = dollar_format(accuracy = .1, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.8, 0.80),
legend.title = element_blank()) +
geom_label(data = . %>% filter(max(date) == date),
aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 3), color = TITLE),
show.legend = F)
2008-
Code
EXR |>
filter(FREQ == "D",
CURRENCY %in% c("USD", "CHF")) |>
month_to_date() |>
filter(date >= as.Date("2008-01-01")) |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TITLE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0.1, 3, 0.1),
labels = dollar_format(accuracy = .1, prefix = "", suffix = "/€")) +
theme(legend.position = c(0.8, 0.80),
legend.title = element_blank()) +
geom_label(data = . %>% filter(max(date) == date),
aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 3), color = TITLE),
show.legend = F)
Argentine Peso : Euro
Linear
Code
plot_linear <- EXR |>
filter(FREQ == "M",
CURRENCY == "ARS") |>
month_to_date() |>
ggplot() + geom_line(aes(x = date, y = OBS_VALUE)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 100, 10),
labels = dollar_format(accuracy = 1, prefix = "", suffix = "/€")) +
scale_color_manual(values = viridis(5)[1:4]) +
theme(legend.position = c(0.8, 0.80),
legend.title = element_blank())
plot_linear
Log
Code
plot_log <- plot_linear +
scale_y_log10(breaks = c(1, 2, 3, 5, 8, 10, 20, 30, 50, 80, 100),
labels = dollar_format(accuracy = 1, prefix = "", suffix = "/€"))
plot_log
Bind
Code
ggarrange(plot_linear + ggtitle("Linear Scale"), plot_log + ggtitle("Log Scale"))