Package {boe}


Title: Download Data from the 'Bank of England' Statistical Database
Version: 0.4.0
Description: Provides functions to download and tidy statistical data published by the 'Bank of England' https://www.bankofengland.co.uk. Covers Bank Rate, 'SONIA', gilt yields, exchange rates, mortgage rates, mortgage approvals, consumer credit, and money supply. Series are fetched from the 'Bank of England Interactive Statistical Database' using its CSV endpoint. Data is cached locally between sessions.
License: MIT + file LICENSE
Encoding: UTF-8
Language: en-GB
RoxygenNote: 7.3.3
Imports: cli (≥ 3.6.0), httr2 (≥ 1.0.0), tools
Suggests: testthat (≥ 3.0.0), ggplot2, scales, readxl (≥ 1.4.0), knitr, rmarkdown
VignetteBuilder: knitr
Config/testthat/edition: 3
URL: https://charlescoverdale.github.io/boe/, https://github.com/charlescoverdale/boe
BugReports: https://github.com/charlescoverdale/boe/issues
Depends: R (≥ 4.1.0)
LazyData: true
NeedsCompilation: no
Packaged: 2026-08-02 09:25:03 UTC; charlescoverdale
Author: Charles Coverdale [aut, cre]
Maintainer: Charles Coverdale <charlesfcoverdale@gmail.com>
Repository: CRAN
Date/Publication: 2026-08-02 09:40:02 UTC

boe: Download Data from the 'Bank of England' Statistical Database

Description

Provides functions to download and tidy statistical data published by the 'Bank of England' https://www.bankofengland.co.uk. Covers Bank Rate, 'SONIA', gilt yields, exchange rates, mortgage rates, mortgage approvals, consumer credit, and money supply. Series are fetched from the 'Bank of England Interactive Statistical Database' using its CSV endpoint. Data is cached locally between sessions.

Author(s)

Maintainer: Charles Coverdale charlesfcoverdale@gmail.com

See Also

Useful links:


Download Bank of England Bank Rate history

Description

Downloads the official Bank Rate (base interest rate) set by the Monetary Policy Committee. Available as a daily series from January 1975.

Usage

boe_bank_rate(
  from = "1975-01-02",
  to = Sys.Date(),
  frequency = c("daily", "monthly"),
  cache = TRUE
)

Arguments

from

Date or character (YYYY-MM-DD). Start date. Defaults to "1975-01-02".

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

frequency

Character. One of "daily" (default) or "monthly" (monthly average).

cache

Logical. Use cached data if available (default TRUE).

Value

A data frame with columns:

date

Date. Observation date.

rate_pct

Numeric. Bank Rate (percent).

Source

https://www.bankofengland.co.uk/boeapps/database/

See Also

Other interest rates: boe_curve(), boe_curve_panel(), boe_sonia(), boe_yield_curve()

Examples


op <- options(boe.cache_dir = tempdir())
# Bank Rate since 2000
boe_bank_rate(from = "2000-01-01")

# Monthly average
boe_bank_rate(from = "2020-01-01", frequency = "monthly")
options(op)



Browse the BoE series catalogue

Description

Returns the catalogue with optional category or frequency filters. Equivalent to boe_search(query = NULL, category, frequency) but framed as a browse / inspect action rather than a keyword search.

Usage

boe_browse(category = NULL, frequency = NULL)

Arguments

category

Character. Optional filter on the category column, one or more of "interest_rates", "exchange_rates", "mortgage_market", "consumer_credit", "monetary_aggregates".

frequency

Character. Optional filter on the frequency column, one or more of "daily", "monthly", "annual".

Value

A data frame with the same columns as boe_series.

See Also

boe_search(), boe_series

Other discovery: boe_search()

Examples

# The whole catalogue
nrow(boe_browse())

# All exchange rate series
boe_browse(category = "exchange_rates")

# All monthly series
boe_browse(frequency = "monthly")


Inspect the local BoE cache

Description

Reports the cache directory, number of cached files, total size, and oldest / newest modification timestamps. Prints a short summary and returns the underlying values invisibly.

Usage

boe_cache_info()

Details

The cache directory defaults to tools::R_user_dir("boe", "cache") and can be overridden with options(boe.cache_dir = ...).

Value

Invisibly, a list with elements:

path

Character. Cache directory.

n_files

Integer. Number of cached files.

total_size_bytes

Numeric. Total size on disk (bytes).

oldest

POSIXct. Modification time of oldest file (or NA if cache is empty).

newest

POSIXct. Modification time of newest file (or NA if cache is empty).

See Also

clear_cache()

Examples


op <- options(boe.cache_dir = tempdir())
boe_cache_info()
options(op)



Download consumer credit outstanding

Description

Downloads monthly outstanding amounts of consumer credit (total, credit cards, and other consumer credit). Seasonally adjusted. Available from April 1993.

Usage

boe_consumer_credit(
  type = c("total", "credit_card", "other"),
  from = "1993-04-01",
  to = Sys.Date(),
  cache = TRUE,
  include_student_loans = FALSE
)

Arguments

type

Character vector. One or more of "total", "credit_card", "other". Defaults to all three.

from

Date or character (YYYY-MM-DD). Start date. Defaults to "1993-04-01".

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

cache

Logical. Use cached data if available (default TRUE).

include_student_loans

Logical. If FALSE (default), the monthly headline series excluding the Student Loans Company are used (LPMBI2O, LPMVZRJ, LPMB4TS). If TRUE, the annually updated series including student loans are used (LPMVZRI, LPMVZRJ, LPMVZRK); note their most recent months trail the headline measure. Credit cards are identical under both measures.

Details

By default the headline measure excluding the Student Loans Company is returned. This is the measure updated every month in the Bank's Money and Credit release. The alternative measure including student loans is only updated once a year, when the Student Loans Company publishes its data, so its recent months lag the headline measure by up to a year; request it with include_student_loans = TRUE.

Value

A data frame with columns:

date

Date. End of month.

type

Character. Credit type.

amount_gbp_m

Numeric. Outstanding amount (millions of pounds).

Source

https://www.bankofengland.co.uk/boeapps/database/

See Also

Other credit and housing: boe_mortgage_approvals(), boe_mortgage_rates()

Examples


op <- options(boe.cache_dir = tempdir())
boe_consumer_credit(from = "2015-01-01")
options(op)



Download BoE Anderson-Sleath fitted yield curves

Description

Downloads the Bank of England's published fitted yield curves at all maturities (typically 0.5 to 25 or 40 years) using the Anderson and Sleath (2001) smoothing methodology. Five curves are supported: nominal gilt, real (index-linked) gilt, implied inflation, overnight index swap (OIS), and the commercial bank liability curve (BLC).

Usage

boe_curve(
  curve = c("nominal", "real", "inflation", "ois", "blc"),
  measure = c("spot", "forward"),
  segment = c("standard", "short"),
  frequency = c("daily", "monthly"),
  from = NULL,
  to = NULL,
  cache = TRUE,
  cache_ttl_h = NULL
)

Arguments

curve

Character. Which curve to fetch. One of "nominal", "real", "inflation", "ois", or "blc". Defaults to "nominal". The commercial bank liability curve ("blc") is only published in the historical archive zip, so requests for it always route through the archive path regardless of from / to.

measure

Character. "spot" (default) or "forward".

segment

Character. "standard" (default) for the full maturity spectrum in half-year steps, or "short" for the separately fitted short end in monthly steps (one month to five years).

frequency

Character. "daily" (default) or "monthly". Monthly archives are end-of-month observations and are much smaller files.

from, to

Date or character ("YYYY-MM-DD"). Optional inclusive bounds. When either is set, the function uses the BoE archive zip (multi-decade history) and filters by date.

cache

Logical. Use cached download if available and within the TTL window (default TRUE).

cache_ttl_h

Numeric. Cache time-to-live in hours. When NULL (default) the TTL is 24 hours for the latest-month zip and 720 hours (30 days) for archive zips.

Details

Each curve is published in two segments. The default segment = "standard" returns the full maturity spectrum in half-year steps (0.5 years out to 25 or 40). segment = "short" returns the short end of the curve in monthly steps (one month out to five years), which the Bank fits separately and which is the segment most relevant to near-term policy-rate and money-market analysis. The short end is available for every curve in the latest month, and historically wherever the BoE published it (e.g. OIS short-end data begins later than the OIS standard curve); periods without a short-end sheet are skipped.

By default (from = NULL, to = NULL, frequency = "daily") returns the latest published month of daily data, matching the behaviour of earlier releases of this package. Setting from, to, or frequency switches to the BoE's full archive, which goes back to 1979 for nominal gilts, 1985 for real, 2000 for BLC, and 2009 for OIS.

Requires the readxl package. Data is published as Excel workbooks inside zip archives at https://www.bankofengland.co.uk/statistics/yield-curves. Each archive zip contains multiple per-period workbooks; this function concatenates them transparently.

Value

A boe_tbl data frame with columns:

date

Date. Observation date.

maturity_years

Numeric. Maturity in years.

rate_pct

Numeric. Yield or implied rate (percent).

Source

https://www.bankofengland.co.uk/statistics/yield-curves

References

Anderson, N. and Sleath, J. (2001). New estimates of the UK real and nominal yield curves. Bank of England Working Paper No. 126. https://www.bankofengland.co.uk/working-paper/2001/new-estimates-of-the-uk-real-and-nominal-yield-curves

See Also

Other interest rates: boe_bank_rate(), boe_curve_panel(), boe_sonia(), boe_yield_curve()

Examples


if (requireNamespace("readxl", quietly = TRUE)) {
  op <- options(boe.cache_dir = tempdir())
  # Latest nominal spot curve at all maturities (default behaviour)
  curve <- boe_curve(curve = "nominal", measure = "spot")
  head(curve)

  # Short end of the nominal forward curve (monthly steps to 5 years)
  se <- boe_curve(curve = "nominal", measure = "forward",
                  segment = "short")
  range(se$maturity_years)
  options(op)
}


## Not run: 
# Historical archive: multi-decade downloads, so not run automatically.
# 10-year nominal spot back to 2010:
long <- boe_curve(curve = "nominal", from = "2010-01-01")

# End-of-month real curve since 1990:
real_m <- boe_curve(curve = "real", frequency = "monthly",
                    from = "1990-01-01")

## End(Not run)


Wide panel of BoE yield curve at chosen pillar maturities

Description

Convenience wrapper around boe_curve() that returns a wide-format panel: one row per date, one column per requested pillar maturity. This is the form most users want for time-series modelling and quick plotting.

Usage

boe_curve_panel(
  curve = c("nominal", "real", "inflation", "ois", "blc"),
  measure = c("spot", "forward"),
  segment = c("standard", "short"),
  frequency = c("daily", "monthly"),
  from = NULL,
  to = NULL,
  maturities = NULL,
  cache = TRUE,
  cache_ttl_h = NULL
)

Arguments

curve

Character. Which curve to fetch. One of "nominal", "real", "inflation", "ois", or "blc". Defaults to "nominal". The commercial bank liability curve ("blc") is only published in the historical archive zip, so requests for it always route through the archive path regardless of from / to.

measure

Character. "spot" (default) or "forward".

segment

Character. "standard" (default) for the full maturity spectrum in half-year steps, or "short" for the separately fitted short end in monthly steps (one month to five years).

frequency

Character. "daily" (default) or "monthly". Monthly archives are end-of-month observations and are much smaller files.

from, to

Date or character ("YYYY-MM-DD"). Optional inclusive bounds. When either is set, the function uses the BoE archive zip (multi-decade history) and filters by date.

maturities

Numeric vector of pillar maturities in years. When NULL (default) a sensible set is chosen for the segment: c(0.5, 1, 2, 5, 10, 20) for "standard" and c(0.5, 1, 2, 3, 5) for "short". Pillars not on the published grid for the chosen curve and segment are dropped with a warning.

cache

Logical. Use cached download if available and within the TTL window (default TRUE).

cache_ttl_h

Numeric. Cache time-to-live in hours. When NULL (default) the TTL is 24 hours for the latest-month zip and 720 hours (30 days) for archive zips.

Details

For each requested pillar, the function picks the published maturity closest to the request (within a 0.05-year tolerance) and uses that. The standard grid steps in 0.5-year increments and the short-end grid (segment = "short") in monthly increments, so pillars at integer, half-integer, or whole-month maturities align exactly.

Value

A boe_tbl data frame with columns date and one numeric column per pillar named like m0.5, m1, m2, m5, m10, m20.

See Also

Other interest rates: boe_bank_rate(), boe_curve(), boe_sonia(), boe_yield_curve()

Examples


if (requireNamespace("readxl", quietly = TRUE)) {
  op <- options(boe.cache_dir = tempdir())
  # Latest month: wide panel at chosen pillar maturities
  panel <- boe_curve_panel(curve = "nominal", measure = "spot",
                           maturities = c(2, 5, 10, 20))
  head(panel)
  options(op)
}


## Not run: 
# Historical panel (multi-decade archive download; not run automatically)
hist <- boe_curve_panel(curve = "nominal", measure = "spot",
                        from = "2020-01-01", maturities = c(2, 5, 10, 20))

## End(Not run)


Download sterling exchange rates

Description

Downloads daily spot exchange rates for sterling against major currencies from the Bank of England. Most series available from January 1975.

Usage

boe_exchange_rate(
  currency = "USD",
  from = "1975-01-02",
  to = Sys.Date(),
  cache = TRUE
)

Arguments

currency

Character vector. One or more currency codes. Use list_exchange_rates() to see all available currencies. Defaults to "USD".

from

Date or character (YYYY-MM-DD). Start date. Defaults to "1975-01-02".

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

cache

Logical. Use cached data if available (default TRUE).

Value

A data frame with columns:

date

Date. Observation date.

currency

Character. Currency code (e.g. "USD").

rate

Numeric. Units of foreign currency per GBP.

Source

https://www.bankofengland.co.uk/boeapps/database/

See Also

Other exchange rates: list_exchange_rates()

Examples


op <- options(boe.cache_dir = tempdir())
# GBP/USD since 2020
boe_exchange_rate("USD", from = "2020-01-01")

# Multiple currencies
boe_exchange_rate(c("USD", "EUR", "JPY"), from = "2020-01-01")
options(op)



Fetch any series from the Bank of England Statistical Database

Description

The core data retrieval function. Fetches one or more series by their BoE series codes and returns a tidy data frame. Use this when the convenience functions (e.g. boe_bank_rate(), boe_exchange_rate()) do not cover the series you need.

Usage

boe_get(series_codes, from = "1960-01-01", to = Sys.Date(), cache = TRUE)

Arguments

series_codes

Character vector of one or more BoE series codes.

from

Date or character (YYYY-MM-DD). Start date. Defaults to "1960-01-01".

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

cache

Logical. Use cached data if available (default TRUE).

Details

Series codes can be found via the Bank of England Interactive Statistical Database at https://www.bankofengland.co.uk/boeapps/database/.

Value

A data frame with columns:

date

Date. Observation date.

code

Character. BoE series code.

value

Numeric. Observation value.

Source

https://www.bankofengland.co.uk/boeapps/database/

See Also

Other data access: clear_cache()

Examples


op <- options(boe.cache_dir = tempdir())
# Bank Rate since 2000
boe_get("IUDBEDR", from = "2000-01-01")

# Multiple series
boe_get(c("IUDBEDR", "IUDSOIA"), from = "2020-01-01")
options(op)



Download M4 money supply

Description

Downloads monthly M4 (broad money) amounts outstanding from the Bank of England. Available from June 1982.

Usage

boe_money_supply(
  from = "1982-06-01",
  to = Sys.Date(),
  seasonally_adjusted = TRUE,
  cache = TRUE
)

Arguments

from

Date or character (YYYY-MM-DD). Start date. Defaults to "1982-06-01".

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

seasonally_adjusted

Logical. Return seasonally adjusted series (default TRUE) or non-seasonally adjusted (FALSE).

cache

Logical. Use cached data if available (default TRUE).

Value

A data frame with columns:

date

Date. End of month.

amount_gbp_m

Numeric. M4 amounts outstanding (millions of pounds).

Source

https://www.bankofengland.co.uk/boeapps/database/

Examples


op <- options(boe.cache_dir = tempdir())
boe_money_supply(from = "2000-01-01")
options(op)



Download mortgage approvals for house purchase

Description

Downloads the monthly count of mortgage approvals for house purchase, a widely watched leading indicator of housing market activity. Available from April 1993.

Usage

boe_mortgage_approvals(
  from = "1993-04-01",
  to = Sys.Date(),
  seasonally_adjusted = TRUE,
  cache = TRUE
)

Arguments

from

Date or character (YYYY-MM-DD). Start date. Defaults to "1993-04-01".

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

seasonally_adjusted

Logical. Return seasonally adjusted series (default TRUE) or non-seasonally adjusted (FALSE).

cache

Logical. Use cached data if available (default TRUE).

Value

A data frame with columns:

date

Date. End of month.

approvals

Numeric. Number of mortgage approvals.

Source

https://www.bankofengland.co.uk/boeapps/database/

See Also

Other credit and housing: boe_consumer_credit(), boe_mortgage_rates()

Examples


op <- options(boe.cache_dir = tempdir())
boe_mortgage_approvals(from = "2015-01-01")
options(op)



Download quoted mortgage interest rates

Description

Downloads monthly quoted (advertised) mortgage rates from the Bank of England, including fixed-rate products and the standard variable rate (SVR). Available from January 1995.

Usage

boe_mortgage_rates(
  type = c("2yr_fixed", "3yr_fixed", "5yr_fixed", "svr"),
  from = "1995-01-01",
  to = Sys.Date(),
  cache = TRUE
)

Arguments

type

Character vector. One or more of "2yr_fixed", "3yr_fixed", "5yr_fixed", "svr". Defaults to all four.

from

Date or character (YYYY-MM-DD). Start date. Defaults to "1995-01-01".

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

cache

Logical. Use cached data if available (default TRUE).

Value

A data frame with columns:

date

Date. End of month.

type

Character. Mortgage product type.

rate_pct

Numeric. Quoted rate (percent).

Source

https://www.bankofengland.co.uk/boeapps/database/

See Also

Other credit and housing: boe_consumer_credit(), boe_mortgage_approvals()

Examples


op <- options(boe.cache_dir = tempdir())
# All mortgage rate types since 2015
boe_mortgage_rates(from = "2015-01-01")

# 2-year fixed only
boe_mortgage_rates(type = "2yr_fixed", from = "2020-01-01")
options(op)



Bank Rate decision history

Description

Returns the history of Monetary Policy Committee decisions to change Bank Rate, derived from the daily Bank Rate series. Each row is one rate-change event, showing the effective date, the new rate, the previous rate, and the change in basis points. Holds (meetings where the rate was unchanged) are not included; for the full meeting-level record including holds, see boe_mpc_votes().

Usage

boe_mpc_decisions(from = "1997-06-06", to = Sys.Date(), cache = TRUE)

Arguments

from

Date or character. Start date. Defaults to "1997-06-06" (the first MPC meeting).

to

Date or character. End date. Defaults to today.

cache

Logical. Use cached Bank Rate data if available (default TRUE).

Value

A boe_tbl data frame with columns:

date

Date. Effective date of the rate change.

new_rate_pct

Numeric. Bank Rate after the decision (percent).

prev_rate_pct

Numeric. Bank Rate before the decision (percent).

change_bps

Integer. Change in basis points (positive = hike, negative = cut).

direction

Character. "hike" or "cut".

Source

Derived from BoE series IUDBEDR (daily Bank Rate). See https://www.bankofengland.co.uk/monetary-policy.

See Also

boe_bank_rate(), boe_mpc_votes()

Other monetary policy: boe_mpc_votes(), boe_mpr_forecasts()

Examples


op <- options(boe.cache_dir = tempdir())
# All MPC decisions since the global financial crisis
boe_mpc_decisions(from = "2007-01-01")

# Just decisions in 2024 to date
boe_mpc_decisions(from = "2024-01-01")
options(op)



Monetary Policy Committee voting history

Description

Downloads the Bank of England's published MPC voting record and returns it in long format. Each row is one (meeting, member) pair showing the rate the member voted for and whether that constituted a dissent from the committee's decision.

Usage

boe_mpc_votes(cache = TRUE)

Arguments

cache

Logical. Use cached download if less than 24 hours old (default TRUE). The voting workbook is small (~110 KB).

Details

Coverage runs from the first MPC meeting in June 1997 through the most recent published minutes. Both current and past committee members are included.

Requires the readxl package.

Value

A boe_tbl data frame with columns:

date

Date. Meeting date.

member

Character. MPC member name.

member_vote_pct

Numeric. The Bank Rate the member voted for (percent).

decision_pct

Numeric. The committee's decision (percent).

dissent

Logical. TRUE if the member's vote differed from the committee decision.

Source

https://www.bankofengland.co.uk/monetary-policy

See Also

boe_mpc_decisions()

Other monetary policy: boe_mpc_decisions(), boe_mpr_forecasts()

Examples


if (requireNamespace("readxl", quietly = TRUE)) {
  op <- options(boe.cache_dir = tempdir())
  votes <- boe_mpc_votes()

  # Recent dissents
  recent <- subset(votes, dissent & date >= as.Date("2024-01-01"))
  head(recent)

  options(op)
}



Monetary Policy Report forecast data

Description

Downloads the Bank of England's Monetary Policy Report (MPR) and parses headline projections from the Projections Databank workbook. Returns a long-format data frame where each row is one (publication date, forecast horizon, series) triple.

Usage

boe_mpr_forecasts(
  series = c("cpi_inflation", "gdp_growth", "gdp_level", "unemployment", "bank_rate"),
  month = NULL,
  year = NULL,
  cache = TRUE
)

Arguments

series

Character vector of series to return. The five traditional series are the default: "cpi_inflation", "gdp_growth", "gdp_level", "unemployment", and "bank_rate". From the April 2026 report the Bank also publishes scenario paths for "output_gap", "energy_prices", "average_earnings", and "world_export_prices", which can be requested explicitly. Series not published in a given release are skipped with a warning: the scenario-only series are absent from classic releases (February 2026 and earlier), and the April 2026 scenario-format release drops "gdp_level" and "bank_rate". Hybrid releases (July 2026 onward) publish all nine.

month

Character. Publication month of the report, e.g. "february" or "may". The report is published roughly quarterly, but the exact month drifts between years (for example, the second 2026 report appeared in April, not May), so any month name is accepted and its existence is verified against the Bank's website. Supply with year. If both are NULL, the most recent compatible release is selected automatically.

year

Integer. MPR year, 2019 or later. Supply with month. If both are NULL, the most recent compatible release is selected automatically.

cache

Logical. Use cached download if available (default TRUE). Older releases never change so the cache never expires; the latest release is refreshed if older than 24 hours.

Details

Coverage runs quarterly from November 2019 (when the report was renamed from Inflation Report) to the latest published release.

Requires the readxl package. The MPR is published as a zip archive containing a projections databank workbook plus chart data and slides; this function reads only the projection sheets.

In the classic format (up to February 2026) each row of a projection sheet is one MPR publication and the columns are forecast quarters, so the function returns one row per publication and horizon with a single central projection (scenario is NA). In the scenario-based format (April 2026) each sheet holds one series with the quarters down the rows and one column per scenario, so the function returns the full quarterly path (history and projection) for every scenario, tagged in the scenario column. Hybrid releases (July 2026 onward) carry both: central projections for all publications (scenario is NA) plus the current report's scenario paths (labelled, e.g. "Adverse Scenario"), in one output.

Value

A boe_tbl data frame with columns:

date

Date. Publication date of the MPR release.

horizon

Character. Quarter label (e.g. "2026 Q1").

horizon_date

Date. Start of the quarter.

series

Character. Series identifier (e.g. "cpi_inflation").

scenario

Character. Scenario or vintage label in the scenario-based format (e.g. "April 2026 Scenario A"); NA in the classic format, which carries a single central projection.

value

Numeric. Forecast value (percent for rates and growth; index for gdp_level).

Release format

Following the Bernanke review of forecasting, the Bank replaced the single central projection of the classic "Projections Databank" with a scenario-based "Scenario Projections Databank" in the April 2026 report, then merged the two from the July 2026 report into one hybrid workbook holding both the classic central-projection sheets (GDP level and Bank Rate restored) and a "Quarterly scenarios" section. All three layouts are parsed and share the same output columns; the format is detected automatically from the release. The April 2026 release alone lacks a GDP level and Bank Rate sheet (Bank Rate was published as a conditioning assumption), so those two series are skipped with a warning for that release. Pre-2020 MPRs that predate the single databank workbook may error.

Source

https://www.bankofengland.co.uk/monetary-policy

See Also

boe_mpc_decisions(), boe_mpc_votes()

Other monetary policy: boe_mpc_decisions(), boe_mpc_votes()

Examples


if (requireNamespace("readxl", quietly = TRUE)) {
  op <- options(boe.cache_dir = tempdir())

  # Latest CPI inflation projections. In the scenario-based format
  # this returns one path per scenario (see the `scenario` column).
  cpi <- boe_mpr_forecasts(series = "cpi_inflation")
  head(cpi)

  options(op)
}



Description

Filters the boe_series catalogue by keyword and optional category and frequency. Useful for finding a series code without leaving R. Equivalent to a grepl against the title and code columns.

Usage

boe_search(query = NULL, category = NULL, frequency = NULL)

Arguments

query

Character. Keyword(s) to match against the title and code columns. Case-insensitive substring match. If NULL, returns all rows (subject to other filters).

category

Character. Optional filter on the category column, one or more of "interest_rates", "exchange_rates", "mortgage_market", "consumer_credit", "monetary_aggregates".

frequency

Character. Optional filter on the frequency column, one or more of "daily", "monthly", "annual".

Value

A data frame with the same columns as boe_series, restricted to matching rows.

See Also

boe_browse(), boe_series

Other discovery: boe_browse()

Examples

# Find mortgage-related series
boe_search("mortgage")

# All daily interest-rate series
boe_search(category = "interest_rates", frequency = "daily")

# Locate the Bank Rate code
boe_search("bank rate")


Catalogue of BoE series wrapped by this package

Description

A reference data frame of Bank of England Statistical Database series codes for which the package provides a named convenience function. Used by boe_search() and boe_browse().

Usage

boe_series

Format

A data frame with 8 columns:

code

Character. BoE series code (e.g. "IUDBEDR").

title

Character. Human-readable description.

category

Character. Topic grouping. One of "interest_rates", "exchange_rates", "mortgage_market", "consumer_credit", "monetary_aggregates".

frequency

Character. Native publication frequency ("daily", "monthly", "annual").

unit

Character. Unit of measurement ("percent", "millions_gbp", "currency_per_gbp", "index", "count").

start_date

Date. Earliest available observation date.

seasonal_adjustment

Character or NA. "SA", "NSA", or NA if not applicable.

helper

Character. Convenience function in the package that wraps the series.

Source

https://www.bankofengland.co.uk/boeapps/database/

Examples

head(boe_series)
table(boe_series$category)

Download SONIA interest rate

Description

Downloads the Sterling Overnight Index Average (SONIA), the risk-free reference rate for sterling markets. Available daily from January 1997.

Usage

boe_sonia(
  from = "1997-01-02",
  to = Sys.Date(),
  frequency = c("daily", "monthly", "annual"),
  cache = TRUE
)

Arguments

from

Date or character (YYYY-MM-DD). Start date. Defaults to "1997-01-02".

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

frequency

Character. One of "daily" (default), "monthly" (monthly average), or "annual" (annual average).

cache

Logical. Use cached data if available (default TRUE).

Value

A data frame with columns:

date

Date. Observation date.

rate_pct

Numeric. SONIA rate (percent).

Source

https://www.bankofengland.co.uk/boeapps/database/

See Also

Other interest rates: boe_bank_rate(), boe_curve(), boe_curve_panel(), boe_yield_curve()

Examples


op <- options(boe.cache_dir = tempdir())
boe_sonia(from = "2020-01-01")
options(op)



Download UK gilt yields

Description

Downloads nominal or real gilt yields at specified maturities from the Bank of England yield curve data. Nominal par yields are available daily from late 1993; real zero-coupon yields from 1985.

Usage

boe_yield_curve(
  from = "2000-01-01",
  to = Sys.Date(),
  maturity = c("5yr", "10yr", "20yr"),
  type = c("nominal", "real"),
  measure = c("par_yield", "zero_coupon"),
  cache = TRUE
)

Arguments

from

Date or character (YYYY-MM-DD). Start date.

to

Date or character (YYYY-MM-DD). End date. Defaults to today.

maturity

Character vector. One or more of "5yr", "10yr", "20yr". Defaults to all three.

type

Character. "nominal" (default) or "real".

measure

Character. "par_yield" (default, nominal only) or "zero_coupon".

cache

Logical. Use cached data if available (default TRUE).

Value

A data frame with columns:

date

Date. Observation date.

maturity

Character. Maturity label (e.g. "5yr").

yield_pct

Numeric. Yield (percent).

Source

https://www.bankofengland.co.uk/boeapps/database/

See Also

Other interest rates: boe_bank_rate(), boe_curve(), boe_curve_panel(), boe_sonia()

Examples


op <- options(boe.cache_dir = tempdir())
# 10-year nominal gilt yield since 2020
boe_yield_curve(from = "2020-01-01", maturity = "10yr")

# Full nominal curve
boe_yield_curve(from = "2020-01-01")

# Real yields
boe_yield_curve(from = "2020-01-01", type = "real", measure = "zero_coupon")
options(op)



Clear locally cached Bank of England data

Description

Removes cached data files downloaded from the Bank of England.

Usage

clear_cache(max_age_days = NULL)

Arguments

max_age_days

Numeric or NULL. If specified, only removes files older than this many days. If NULL (the default), removes all cached files.

Value

Invisibly returns the number of files removed.

See Also

Other data access: boe_get()

Examples


op <- options(boe.cache_dir = tempdir())
# Remove files older than 7 days
clear_cache(max_age_days = 7)

# Remove everything
clear_cache()
options(op)



List available exchange rate currencies

Description

Returns a data frame of currency codes and descriptions available from the Bank of England exchange rate series.

Usage

list_exchange_rates()

Value

A data frame with columns:

currency

Character. ISO currency code.

description

Character. Currency name.

boe_code

Character. BoE series code.

See Also

Other exchange rates: boe_exchange_rate()

Examples

list_exchange_rates()


Print method for boe_tbl

Description

Adds a one-line provenance header above the data frame body. The header summarises the request: number of series (and codes if few), observation count, date range, frequency, and any vintage tag.

Usage

## S3 method for class 'boe_tbl'
print(x, ...)

Arguments

x

A boe_tbl.

...

Passed to the underlying print.data.frame method.

Value

x, invisibly.

Examples


op <- options(boe.cache_dir = tempdir())
x <- boe_bank_rate(from = "2020-01-01", frequency = "monthly")
print(x)
options(op)