#' Get yield curve data on given date (data source: Bank of Canada).
#'
#' @param date Date(s) on which to retrieve yield data
#' @param yield_dt Data.table of historical yields
#'
#' @return dt Data.table of yields on the given \code{date}.
#'
#' @export
#'
#' @examples
#' # Get yield curve data for today
#' yield_dt <- download_yields(1)
#' date_today <- lubridate::today()
#' get_ycurve( date = date_today, yield_dt = yield_dt )
#'
get_ycurve <- function( date, yield_dt ){
ratecols <- names( yield_dt )[ ! stringr::str_detect( names( yield_dt ), 'date' ) ]
# validate inputs
stopifnot( lubridate::is.POSIXct( date ),
data.table::is.data.table( yield_dt ),
"dates" %in% names( yield_dt )
)
# Get yield curve data on date
data.table::setkey( yield_dt, "dates" )
dt <- yield_dt[ data.table::J( date ), roll="nearest", rollends=FALSE ]
dt <- dt[ , ratecols, with = F ] # Only keep rates
return( data.table::copy( dt ) )
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.