CZK Reference Interest Rates

Jindra Lacko

2020-05-28

PRIBOR - PRague InterBank Offered Rate

The PRIBOR rates are provided by ČNB as a courtesy of the Czech Financial Benchmark Facility s.r.o., the benchmark administrator of the PRIBOR benchmark.

The rates can be accessed for internal purposes free of charge via internet pages of the Czech National Bank - https://www.cnb.cz/en/financial-markets/money-market/pribor/format-of-the-pribor-rate-on-the-cnb-website/

The package {czechrates} provides a convenient way to access the information stored on the ČNB site from the comfort of your R session. It does not store the rates (this would be against the terms of use, and the data would get stale rather soon). As a consequence a working internet connection is required to use the package.

The czechrates::pribor() function has two parameters:

library(czechrates)

# PRIBOR: relying on default for both date and tenor
pribor() 
## # A tibble: 1 x 2
##   date_valid PRIBOR_1D
##   <date>         <dbl>
## 1 2020-05-27    0.0025

# PRIBOR: specific date, default tenor
pribor(as.Date("2020-05-20")) 
## # A tibble: 1 x 2
##   date_valid PRIBOR_1D
##   <date>         <dbl>
## 1 2020-05-20    0.0025

# three specific dates + a specific tenor (weekly rate)
three_dates <- as.Date(c("2020-05-11", "2020-05-12", "2020-05-13"))
three_dates
## [1] "2020-05-11" "2020-05-12" "2020-05-13"

pribor(three_dates, "1W")
## # A tibble: 3 x 2
##   date_valid PRIBOR_1W
##   <date>         <dbl>
## 1 2020-05-11    0.0028
## 2 2020-05-12    0.0028
## 3 2020-05-13    0.0028

# PRIBOR: four rates for a single date
pribor(as.Date("2020-05-20"), c("1D", "1W", "1M", "1Y")) 
## # A tibble: 1 x 5
##   date_valid PRIBOR_1D PRIBOR_1W PRIBOR_1M PRIBOR_1Y
##   <date>         <dbl>     <dbl>     <dbl>     <dbl>
## 1 2020-05-20    0.0025    0.0027    0.0031   0.00410

Using czechrates::pribor() you can re-live some of the scariest phases of the Prague interbank market - such as the period around Asian crisis of 1997 (when overnight rates briefly went over 100% on annual basis).

library(czechrates)
library(ggplot2)
library(scales)

offered_rate <- pribor(seq(from = as.Date("1997-05-01"), 
                           to   = as.Date("1997-06-30"),
                           by = 1))

ggplot(data = offered_rate, aes(x = date_valid, y = PRIBOR_1D)) +
  geom_line(color = "red", size = 1.25) +
  scale_x_date(date_labels = "%d.%m.%Y") +
  scale_y_continuous(labels = percent_format()) +
  theme_bw() +
  labs(title = "A ghost of rates past...",
       y = "Overnight PRIBOR (per annum basis)") +
  theme(axis.title.x = element_blank())

Two-week Repo Rate

The two-week repo rate (a key policy rate) is set directly by ČNB and also published on the ČNB internet – https://www.cnb.cz/en/faq/How-has-the-CNB-two-week-repo-rate-changed-over-time/

The czechrates::repo2w() function has but a single parameter (as maturity is by definition two weeks):

# two-week REPO rate for yesterday
repo2w()
## # A tibble: 1 x 2
##   date_valid REPO_2W
##   <date>       <dbl>
## 1 2020-05-27  0.0025

# two-week REPO rate for three specific dates (as defined in the PRIBOR section)
repo2w(three_dates)
## # A tibble: 3 x 2
##   date_valid REPO_2W
##   <date>       <dbl>
## 1 2020-05-11  0.01  
## 2 2020-05-12  0.0025
## 3 2020-05-13  0.0025

To ilustrate the development of the main policy rate – i.e. czechrates::repo2w() – we can consider a more recent history:

library(czechrates)
library(ggplot2)
library(scales)

policy_rate <- repo2w(seq(from = as.Date("2020-01-01"), 
                          to   = as.Date("2020-05-31"),
                          by = 1))

ggplot(data = policy_rate, aes(x = date_valid, y = REPO_2W)) +
  geom_line(color = "red", size = 1.25) +
  scale_x_date(date_labels = "%d.%m.%Y") +
  scale_y_continuous(labels = percent_format()) +
  theme_bw() +
  labs(title = "COVID-19 impact on CZK policy rate",
       y = "ČNB REPO rate (per annum basis)") +
  theme(axis.title.x = element_blank())