Exchange Rates

Data - GFD

Info

source dataset .html .RData

gfd

xrates

2024-06-20 2021-01-08

Data on xrates

source dataset .html .RData

bdf

EXR

2024-06-19 2024-06-18

bis

EER

2024-06-19 2024-05-10

bis

EER_D

2024-06-19 2024-05-10

bis

XRU

2024-05-10 2024-06-07

bis

XRU_D

2024-06-19 2024-05-10

ecb

EXR

2024-06-19 2024-06-15

eurostat

ert_bil_eur_d

2024-06-20 2024-06-08

eurostat

ert_h_eur_d

2024-06-20 2024-06-08

fred

xrates

2024-06-18 2024-06-07

gfd

xrates

2024-06-20 2021-01-08

oecd

REFSERIES_MSIT

2024-06-19 2024-04-30

oecd

SNA_TABLE4

2024-06-19 2024-04-30

wdi

PA.NUS.FCRF

2024-06-20 2024-04-30

LAST_COMPILE

LAST_COMPILE
2024-06-20

Last

Code
load_data("gfd/xrates.RData")
xrates %>%
  group_by(date) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(date)) %>%
  head(1) %>%
  print_table_conditional()
date Nobs
2021-01-08 39

Variables

Narrow

Code
xrates_info %>%
  select(Ticker, Name, Country) %>%
  right_join(xrates %>%
               group_by(Ticker) %>%
               summarise(Nobs = n()), by = "Ticker") %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Wide

Code
xrates_info %>%
  select(Ticker, Name, Country) %>%
  right_join(xrates %>%
               group_by(Ticker) %>%
               summarise(Nobs = n(),
                         start = first(year(date)),
                         end = last(year(date))), by = "Ticker") %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Individual Countries

Brazil

Info (Source: Wikipedia)

  • The Portuguese real from the 16th to 18th centuries, with 1,000 réis called the milréis.
  • The old Brazilian real from 1747-1942, with 1,000 réis also called the milréis.
  • The first cruzeiro from 1942-1967, at 1 cruzeiro = 1 milréis or 1,000 réis.
  • The cruzeiro novo from 1967-1970, at 1 cruzeiro novo = 1,000 first cruzeiros. From 1970 it was simply called the (second) cruzeiro and was used until 1986.
  • The cruzado from 1986-1989, at 1 cruzado = 1,000 second cruzeiros.
  • The cruzado novo from 1989-1990, at 1 cruzado novo = 1,000 cruzados. From 1990 it was renamed the (third) cruzeiro and was used until 1993.
  • The cruzeiro real (CR$) from 1993-1994, at 1 cruzeiro real = 1,000 third cruzeiros.

All

Code
xrates %>%
  filter(Ticker == "USDBRL") %>%
  ggplot() + geom_line(aes(x = date, y = value)) + 
  theme_minimal() + ylab("Brazil Real per US Dollar") + xlab("") +
  scale_x_date(breaks = seq(1800, 2025, 20) %>% paste0(., "-01-01") %>% as.Date(),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = 10^seq(-20, 1, 1))

1950-1970

Code
xrates %>%
  filter(Ticker == "USDBRL",
         date >= as.Date("1940-01-01"),
         date <= as.Date("1970-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + 
  theme_minimal() + ylab("Brazil Real per US Dollar") + xlab("") +
  scale_x_date(breaks = seq(1800, 2025, 2) %>% paste0(., "-01-01") %>% as.Date(),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = c(10^seq(-20, 1, 1), 2*10^seq(-20, 1, 1), 5*10^seq(-20, 1, 1)))

Italy (in Pounds)

All

Code
xrates %>%
  filter(iso3c == "GBP", 
         iso3c_c == "ITL") %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1800, 2025, 20), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = c(10, 20, 50, 100, 200, 500, 1000, 2000, 5000)) +
  ylab("Italian Lira per British Pound") + xlab("")

1940 - 1971

Code
xrates %>%
  filter(iso3c == "GBP", 
         iso3c_c == "ITL") %>%
  filter(date >= as.Date("1940-01-01"),
         date <= as.Date("1971-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1800, 2025, 2), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = c(10, 20, 50, 100, 200, 500, 1000, 2000, 5000)) +
  ylab("Italian Lira per British Pound") + xlab("")

Italy - Real

All

Code
xrates %>%
  bind_rows(cpi) %>%
  filter(Ticker %in% c("GBPITL", "CPGBRM", "CPITAM"),
         date >= as.Date("1950-01-01")) %>%
  select(Ticker, date, value) %>%
  spread(Ticker, value) %>%
  na.omit %>%
  mutate(GBPITL_real = GBPITL*CPGBRM/CPITAM,
         GBPITL_real = 100*GBPITL_real/GBPITL_real[1]) %>%
  ggplot() + geom_line(aes(x = date, y = GBPITL_real)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1800, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = seq(50, 200, 5)) +
  ylab("Italian Lira per British Pound") + xlab("")

Italy, France, Germany - Real

1950-

Code
xrates %>%
  bind_rows(cpi) %>%
  filter(Ticker %in% c("USDGBP", "USDFRF", "USDDEM", "GBPITL", "CPGBRM", "CPITAM", "CPFRAM", "CPDEUM", "CPUSAM"),
         date >= as.Date("1950-01-01")) %>%
  select(Ticker, date, value) %>%
  spread(Ticker, value) %>%
  na.omit %>%
  transmute(date,
            USDITL_real = USDGBP*GBPITL*CPUSAM/CPITAM,
            USDDEM_real = USDDEM*CPUSAM/CPDEUM,
            USDFRF_real = USDFRF*CPUSAM/CPFRAM) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value, color = variable)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1800, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = seq(50, 200, 5)) +
  ylab("Real Exchange Rate") + xlab("") +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.2, 0.80),
        legend.title = element_blank())

1950-

Code
xrates %>%
  bind_rows(cpi) %>%
  filter(Ticker %in% c("USDGBP", "USDFRF", "USDDEM", "GBPITL", "CPGBRM", "CPITAM", "CPFRAM", "CPDEUM", "CPUSAM"),
         date >= as.Date("1950-01-01"),
         date <= as.Date("1975-01-01")) %>%
  select(Ticker, date, value) %>%
  spread(Ticker, value) %>%
  na.omit %>%
  transmute(date,
            USDITL_real = USDGBP*GBPITL*CPUSAM/CPITAM,
            USDDEM_real = USDDEM*CPUSAM/CPDEUM,
            USDFRF_real = USDFRF*CPUSAM/CPFRAM) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value, color = variable)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1800, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = seq(50, 200, 5)) +
  ylab("Real Exchange Rate") + xlab("") +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme(legend.position = c(0.2, 0.80),
        legend.title = element_blank())

France

1914-1927

(ref:france-franc-1914-1927) Franc Exchange Rate (1914-1927)

Code
xrates %>%
  filter(iso3c == "USD", 
         iso3c_c == "FRF",
         date >= as.Date("1914-01-01"),
         date <= as.Date("1927-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 1, 0.01)) +
  ylab("") + xlab("")

(ref:france-franc-1914-1927)

1920-1960

(ref:france-franc-1920-1960) Franc Exchange Rate (1920-1960)

Code
xrates %>%
  filter(iso3c == "USD", 
         iso3c_c == "FRF",
         date >= as.Date("1920-01-01"),
         date <= as.Date("1960-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 1, 0.1)) +
  ylab("") + xlab("")

(ref:france-franc-1920-1960)

1940-1973

(ref:france-franc-1940-1973) Franc Exchange Rate (1940-1973)

Code
xrates %>%
  filter(iso3c == "USD", 
         iso3c_c == "FRF",
         date >= as.Date("1940-01-01"),
         date <= as.Date("1973-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 1, 0.1)) +
  ylab("") + xlab("")

(ref:france-franc-1940-1973)

1940-1973

Code
xrates %>%
  filter(iso3c == "USD", 
         iso3c_c == "FRF",
         date >= as.Date("1954-01-01"),
         date <= as.Date("1970-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = seq(0, 1, 0.05)) +
  ylab("1 USD en FRF") + xlab("")

1954-1969

Code
xrates %>%
  filter(iso3c == "USD", 
         iso3c_c == "FRF",
         date >= as.Date("1954-01-01"),
         date <= as.Date("1969-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_reverse(breaks = seq(0, 1, 0.05)) +
  ylab("USD vs FRF") + xlab("")

1965-1971

(ref:france-franc-1965-1971) Franc Exchange Rate (1965-1971)

Code
xrates %>%
  filter(iso3c == "USD", 
         iso3c_c == "FRF",
         date >= as.Date("1968-01-01"),
         date <= as.Date("1971-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = seq(0, 1, 0.01)) +
  ylab("") + xlab("")

(ref:france-franc-1965-1971)

1910-1940

(ref:france-franc-1910-1940) Franc Exchange Rate (1910-1940)

Code
xrates %>%
  filter(iso3c == "USD", 
         iso3c_c == "FRF",
         date >= as.Date("1910-01-01"),
         date <= as.Date("1940-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 1, 0.01)) +
  ylab("") + xlab("")

(ref:france-franc-1910-1940)

1970-2020

(ref:france-franc-1970-2020) Franc Exchange Rate (1970-2020)

Code
xrates %>%
  filter(iso3c == "USD", 
         iso3c_c == "FRF",
         date >= as.Date("1970-01-01"),
         date <= as.Date("2020-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 5, 0.1)) +
  ylab("") + xlab("")

(ref:france-franc-1970-2020)

Argentina

1830-1950

Code
xrates %>%
  filter(iso3c_c == "ARS",
         date <= as.Date("1950-01-01")) %>%
  mutate(value = value/value[1]) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2025, 10), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_log10(breaks = c(1, 2, 3, 5, 8, 10, 20, 30, 50, 80, 100)) +
  ylab("") + xlab("")

1980-1995

Code
xrates %>%
  filter(Ticker == "USDARS",
         date >= as.Date("1980-01-01"),
         date <= as.Date("1995-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 500, 20)) +
  ylab("") + xlab("")

Japan

1980-1995

Code
xrates %>%
  filter(Ticker == "USDJPY",
         date >= as.Date("1980-01-01"),
         date <= as.Date("1995-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 500, 20)) +
  ylab("") + xlab("")

1995-2020

(ref:USDJPY-1995-2020) Japan Exchange Rate (1995-2020)

Code
xrates %>%
  filter(Ticker == "USDJPY",
         date >= as.Date("1995-01-01"),
         date <= as.Date("2020-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 500, 10)) +
  ylab("") + xlab("")

(ref:USDJPY-1995-2020)

1914-1927

(ref:USDJPY-1914-1927) Japan Exchange Rate (1914-1927)

Code
xrates %>%
  filter(Ticker == "USDJPY",
         date >= as.Date("1914-01-01"),
         date <= as.Date("1927-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(1, 4, 0.1)) +
  ylab("") + xlab("")

(ref:USDJPY-1914-1927)

1910-1940

(ref:USDJPY-1910-1940) Japan Exchange Rate (1910-1940)

Code
xrates %>%
  filter(Ticker == "USDJPY",
         date >= as.Date("1910-01-01"),
         date <= as.Date("1940-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 50, 0.5)) +
  ylab("") + xlab("")

(ref:USDJPY-1910-1940)

1940-1973

(ref:USDJPY-1940-1973) Japan Exchange Rate (1940-1973)

Code
xrates %>%
  filter(Ticker == "USDJPY",
         date >= as.Date("1940-01-01"),
         date <= as.Date("1973-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 500, 50)) +
  ylab("") + xlab("")

(ref:USDJPY-1940-1973)

1970-2020

(ref:USDJPY-1970-2020) Japan Exchange Rate (1970-2020)

Code
xrates %>%
  filter(Ticker == "USDJPY",
         date >= as.Date("1970-01-01"),
         date <= as.Date("2020-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 5), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(0, 500, 50)) +
  ylab("") + xlab("")

(ref:USDJPY-1970-2020)

U.K.

1800-1930

(ref:uk-pound-1790-1930) Dollar / Pound Exchange Rate

Code
xrates %>%
  filter(Ticker == "GBPUSD",
         date >= as.Date("1790-01-01"),
         date <= as.Date("1930-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1800, 2025, 20), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(2, 15, 1)) +
  ylab("") + xlab("")

(ref:uk-pound-1790-1930)

1860-1930

(ref:uk-pound-1860-1930) Dollar / Pound Exchange Rate

Code
xrates %>%
  filter(Ticker == "GBPUSD",
         date >= as.Date("1860-01-01"),
         date <= as.Date("1930-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 10), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(2, 15, 1)) +
  ylab("") + xlab("")

(ref:uk-pound-1860-1930)

1910-1930

(ref:uk-pound-1910-1930) U.K. Dollar / Pound Exchange Rate (1910-1930)

Code
xrates %>%
  filter(Ticker == "GBPUSD",
         date >= as.Date("1910-01-01"),
         date <= as.Date("1930-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(2, 15, 0.5)) +
  ylab("") + xlab("")

(ref:uk-pound-1910-1930)

1919-1924

(ref:uk-pound-1919-1924) U.K. Dollar / Pound Exchange Rate (1919-1924)

Code
xrates %>%
  filter(Ticker == "GBPUSD",
         date >= as.Date("1919-01-01"),
         date <= as.Date("1924-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(2, 15, 0.5)) +
  ylab("") + xlab("")

(ref:uk-pound-1919-1924)

1914-1927

(ref:uk-pound-1914-1927) U.K. Dollar / Pound Exchange Rate (1914-1927)

Code
xrates %>%
  filter(Ticker == "GBPUSD",
         date >= as.Date("1914-01-01"),
         date <= as.Date("1927-01-01")) %>%
  ggplot() + geom_line(aes(x = date, y = value)) + theme_minimal() + 
  scale_x_date(breaks = as.Date(paste0(seq(1850, 2025, 1), "-01-01")),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = seq(2, 15, 0.5)) +
  ylab("") + xlab("")

(ref:uk-pound-1914-1927)

GBPUSD, USDFRF

1900-1925

Code
xrates %>%
  filter(iso3c %in% c("GBP", "FRF", "USD"),
         iso3c_c %in% c("GBP", "USD", "FRF"),
         date >= as.Date("1910-01-01"),
         date <= as.Date("1925-01-01")) %>%
  group_by(Ticker) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ticker, linetype = Ticker)) + 
  theme_minimal() + xlab("") + ylab("Exchange Rate") +
  scale_x_date(breaks = seq(1600, 2020, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(0.1*c(0.1, 0.2, 0.3, 0.5), c(0.1, 0.2, 0.3, 0.5), c(1, 2, 3, 5), seq(10, 100, 10)),
                     labels = dollar_format(accuracy = 0.01, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.6),
        legend.title = element_blank())

1800-1925

(ref:GBPUSD-USDFRF-1800-1925) France, Germany, United Kingdom Exchange Rates (1800-1925).

Code
xrates %>%
  filter(iso3c %in% c("GBP", "FRF", "USD"),
         iso3c_c %in% c("GBP", "USD", "FRF"),
         date >= as.Date("1800-01-01"),
         date <= as.Date("1925-01-01")) %>%
  group_by(Ticker) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ticker, linetype = Ticker)) + 
  theme_minimal() + xlab("") + ylab("Exchange Rate") +
  scale_x_date(breaks = seq(1600, 2020, 20) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(0.1*c(0.1, 0.2, 0.3, 0.5), c(0.1, 0.2, 0.3, 0.5), c(1, 2, 3, 5), seq(10, 100, 10)),
                     labels = dollar_format(accuracy = 0.01, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.6),
        legend.title = element_blank())

(ref:GBPUSD-USDFRF-1800-1925)

1900-1940

(ref:GBPUSD-USDFRF-1900-1940) France, Germany, United Kingdom Exchange Rates (1900-1940).

Code
xrates %>%
  filter(iso3c %in% c("GBP", "FRF", "USD"),
         iso3c_c %in% c("GBP", "USD", "FRF"),
         date >= as.Date("1900-01-01"),
         date <= as.Date("1940-01-01")) %>%
  group_by(Ticker) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ticker, linetype = Ticker)) + 
  theme_minimal() + xlab("") + ylab("Exchange Rate") +
  scale_x_date(breaks = seq(1600, 2020, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(0.1*c(0.1, 0.2, 0.3, 0.5), c(0.1, 0.2, 0.3, 0.5), c(1, 2, 3, 5), seq(10, 100, 10)),
                     labels = dollar_format(accuracy = 0.01, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.6),
        legend.title = element_blank())

(ref:GBPUSD-USDFRF-1900-1940)

1925-1970

(ref:GBPUSD-USDFRF-1925-1970) France, Germany, United Kingdom Exchange Rates (1925-1970).

Code
xrates %>%
  filter(iso3c %in% c("GBP", "FRF", "USD"),
         iso3c_c %in% c("GBP", "USD", "FRF"),
         date >= as.Date("1925-01-01"),
         date <= as.Date("1970-01-01")) %>%
  group_by(Ticker) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ticker, linetype = Ticker)) + 
  theme_minimal() + xlab("") + ylab("Exchange Rate") +
  scale_x_date(breaks = seq(1925, 2020, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(0.01, 0.02, 0.03, 0.05, 0.1, 0.2, 0.3, 0.5, 1, 2, 3, 5, 10, 20, 30, 50),
                     labels = dollar_format(accuracy = 0.01, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.80),
        legend.title = element_blank())

(ref:GBPUSD-USDFRF-1925-1970)

1970-2020

(ref:GBPUSD-USDFRF-1970-2020) France, Germany, United Kingdom Exchange Rates (1970-2020).

Code
xrates %>%
  filter(iso3c %in% c("GBP", "FRF", "USD"),
         iso3c_c %in% c("GBP", "USD", "FRF"),
         date >= as.Date("1970-01-01"),
         date <= as.Date("2020-01-01")) %>%
  group_by(Ticker) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ticker, linetype = Ticker)) + 
  theme_minimal() + xlab("") + ylab("Exchange Rate") +
  scale_x_date(breaks = seq(1925, 2020, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 3, 0.1),
                labels = dollar_format(accuracy = 0.1, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.8, 0.9),
        legend.title = element_blank())

(ref:GBPUSD-USDFRF-1970-2020)

Interwar - 1918-1940

(ref:GBPUSD-USDFRF-1918-1940) France, Germany, United Kingdom Exchange Rates (1800-1970).

Code
xrates %>%
  filter(iso3c %in% c("GBP", "FRF", "USD"),
         iso3c_c %in% c("GBP", "USD", "FRF"),
         date >= as.Date("1918-01-01"),
         date <= as.Date("1940-01-01")) %>%
  group_by(variable) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ticker, linetype = Ticker)) + 
  theme_minimal() + xlab("") + ylab("Exchange Rate") +
  scale_x_date(breaks = seq(1600, 2020, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(c(0.1, 0.2, 0.3, 0.5), c(1, 2, 3, 5), seq(10, 100, 10)),
                     labels = dollar_format(accuracy = 0.1, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.80),
        legend.title = element_blank())

(ref:GBPUSD-USDFRF-1918-1940)

FRADEM

Weimar Hyperinflation Period

(ref:FRADEM-1900-1940) Weimar Hyperinflation Period (1900-1940).

Code
xrates %>%
  filter(iso3c %in% c("DEM", "FRF", "USD"),
         iso3c_c %in% c("DEM", "FRF", "USD"),
         date >= as.Date("1900-01-01"),
         date <= as.Date("1940-01-01")) %>%
  select(Ticker, date, value) %>%
  spread(Ticker, value) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = USDDEM/USDFRF)) + 
  theme_minimal() + xlab("") + ylab("$1 in Deutsche Mark") +
  scale_x_date(breaks = seq(1600, 2020, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = 10^seq(-20, 0, 1),
                  labels = dollar_format(accuracy = 0.0000000000001, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.6),
        legend.title = element_blank())

(ref:FRADEM-1900-1940)

USDDEM

Weimar Hyperinflation Period

(ref:USDDEM-1900-1940) Weimar Hyperinflation Period (1900-1940).

Code
xrates %>%
  filter(iso3c %in% c("DEM", "USD"),
         iso3c_c %in% c("DEM", "USD"),
         date >= as.Date("1900-01-01"),
         date <= as.Date("1940-01-01")) %>%
  group_by(Ticker) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value)) + 
  theme_minimal() + xlab("") + ylab("$1 in Deutsche Mark") +
  scale_x_date(breaks = seq(1600, 2020, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = 10^seq(-20, 0, 1),
                  labels = dollar_format(accuracy = 0.0000000000001, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.6),
        legend.title = element_blank())

(ref:USDDEM-1900-1940)

1924-1926

(ref:USDDEM-1900-1940) Weimar Hyperinflation Period (1900-1940).

Code
xrates %>%
  filter(iso3c %in% c("DEM", "USD"),
         iso3c_c %in% c("DEM", "USD"),
         date >= as.Date("1918-01-01"),
         date <= as.Date("1926-01-01")) %>%
  group_by(Ticker) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value)) + 
  theme_minimal() + xlab("") + ylab("$1 in Deutsche Mark") +
  scale_x_date(breaks = seq(1600, 2020, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = 10^seq(-20, 0, 1),
                  labels = dollar_format(accuracy = 0.0000000000001, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.6),
        legend.title = element_blank())

(ref:USDDEM-1900-1940)

1930-1932 Deflation Policy in Germany

1928-1934 1 USD in Deutsch Mark

(ref:USDDEM-1928-1934) Devaluation of the Dollar vis-à-vis Germany.

Code
xrates %>%
  filter(iso3c %in% c("DEM", "USD"),
         iso3c_c %in% c("DEM", "USD"),
         date >= as.Date("1928-01-01"),
         date <= as.Date("1935-01-01")) %>%
  group_by(Ticker) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value)) + 
  theme_minimal() + xlab("") + ylab("$1 in Deutsche Mark") +
  scale_x_date(breaks = seq(1600, 2020, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 2, 0.01),
                  labels = dollar_format(accuracy = 0.01, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.6),
        legend.title = element_blank())

(ref:USDDEM-1928-1934)

1928-1934 1 USD in Deutsch Mark

Code
xrates %>%
  filter(iso3c %in% c("DEM", "USD", "GBP"),
         iso3c_c %in% c("DEM", "USD", "FRF"),
         date >= as.Date("1929-01-01"),
         date <= as.Date("1937-01-01")) %>%
  select(date, Ticker, value) %>%
  spread(Ticker, value) %>%
  transmute(date, 
            `Deutschemark per US Dollar` = USDDEM,
            `Deutschemark per British Pound` = GBPUSD*USDDEM,
            `Deutschemark per French Franc` = USDDEM/USDFRF) %>%
  gather(variable, value, -date) %>%
  group_by(variable) %>%
  mutate(value = 100*value/value[1]) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Deutschemark Exchange Rate (Base 100 = 1929)") +
  geom_line(aes(x = date, y = value, color = variable)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  scale_x_date(breaks = seq(1600, 2020, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 5),
                  labels = dollar_format(accuracy = 1, prefix = "")) +
  theme(legend.position = c(0.2, 0.15),
        legend.title = element_blank())

1928-1934 1 Pound in Deutsch Mark

(ref:GBPDEM-1928-1934) Devaluation of the Pound vis-à-vis the Mark.

Code
xrates %>%
  filter(iso3c %in% c("DEM", "GBP", "USD"),
         iso3c_c %in% c("DEM", "GBP", "USD"),
         date >= as.Date("1928-01-01"),
         date <= as.Date("1935-01-01")) %>%
  select(Ticker, date, value) %>%
  spread(Ticker, value) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = USDDEM/USDGBP)) + 
  theme_minimal() + xlab("") + ylab("1 Pound in Deutsche Mark") +
  scale_x_date(breaks = seq(1600, 2020, 1) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 2, 0.1),
                  labels = dollar_format(accuracy = 0.1, prefix = "")) +
  scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.position = c(0.2, 0.6),
        legend.title = element_blank())

(ref:GBPDEM-1928-1934)