DailyTreasuryYieldCurve
DailyTreasuryYieldCurve.jl is a Julia package for downloading and working with historical daily yield curve data from the US Treasury.
Getting Daily Yield Curves
DailyTreasuryYieldCurve.getyieldcurves
— Functiongetyieldcurves(;real::Bool=false,begdt::Date=Date(1990,1,2),enddt::Date=today())
Download the whole published history of daily US Treasury yield curves from the official data feed.
Optionally, pass a filename if you have already downloaded the data, eg. getyieldcurves(fn::AbstractString)
.
By default, gets the nominal yield curve. Pass realrates=true
to get the real yield curve. The nominal series starts in 1990, while the real series starts in 2003.
Returns a DataFrame
.
Structure of returned data for nominal curve:
Column Name | Description |
---|---|
date | Date of yield curve |
m1 | 1 month constant maturity rate |
m2 | 2 month constant maturity rate |
m3 | 3 month constant maturity rate |
m6 | 6 month constant maturity rate |
y1 | 1 year constant maturity rate |
y2 | 2 year constant maturity rate |
y3 | 3 year constant maturity rate |
y5 | 5 year constant maturity rate |
y7 | 7 year constant maturity rate |
y10 | 10 year constant maturity rate |
y20 | 20 year constant maturity rate |
y30 | 30 year constant maturity rate |
Structure of returned data for real curve:
Column Name | Description |
---|---|
date | Date of yield curve |
y5 | 5 year constant maturity real rate |
y7 | 7 year constant maturity real rate |
y10 | 10 year constant maturity real rate |
y20 | 20 year constant maturity real rate |
y30 | 30 year constant maturity real rate |
Not all maturities were reported on every day.
Interpolation
The package contains some convenience utilities for interpolating/extrapolating with the yield curve data.
DailyTreasuryYieldCurve.RateInterpolator
— TypeRateInterpolator
A container for the series of daily yield curve interpolators.
Fields: dates
and interpolators
, both Vector
.
To interpolate, just call it with the value to interpolate (days to maturity) and the date of the curve.
(ri::RateInterpolator)(d::Real,dt::Date)
Currently supports only linear interpolation and extrapolation. See createRateInterpolator
for construction.
DailyTreasuryYieldCurve.createRateInterpolator
— FunctioncreateRateInterpolator(df;realrates::Bool=false)
Preferred method to construct a RateInterpolator
, just pass the df
that you get from getyieldcurves
.
If you request a date that does not exist in RateInterpolator.dates
, it will (blindly) carry forward the curve from the previous available date. It is your responsibility to double-check your inputs.
Day Count Convention
The standard day count convention for valuing US Treasuries is Actual/Actual (ICMA) (as opposed to something like 30/360). However, it is unclear (to me) exactly how to match this to constant maturities. Therefore, I use the convention that months are 30 days (for maturities less than 1 year) and years are 365 days (for maturities 1 year or more).