ycevo {ycevo} | R Documentation |
Estimate yield function
Description
Nonparametric estimation of discount functions and yield curves at given dates, time-to-maturities, and one additional covariate, usually interest rate.
Usage
ycevo(
data,
x,
span_x = 60,
hx = NULL,
tau = NULL,
ht = NULL,
tau_p = tau,
htp = NULL,
cols = NULL,
...
)
estimate_yield(
data,
xgrid,
hx,
tau,
ht,
tau_p = tau,
htp = ht,
rgrid = NULL,
hr = NULL,
interest = NULL,
cfp_slist = NULL
)
Arguments
data |
Data frame; bond data to estimate discount curve from. See
|
x |
Time grids at which the discount curve is evaluated. Should be
specified using the same class of object as the quotation date ( |
span_x |
Half of the window size, or the distance from the centre |
hx |
Numeric vector. Bandwidth parameters corresponding to each time
point |
tau |
Numeric vector. Time-to-maturities in years where
discount function and yield curve will be estimated for each of time points |
ht |
Numeric vector. Bandwidth parameters corresponding to each value of
time-to-maturities |
tau_p |
Numeric vector. Auxiliary time-to-maturities in
years. See |
htp |
Numeric vector. Bandwidth parameters corresponding to each of
auxiliary time-to-maturities |
cols |
< |
... |
Specification of an additional covariate, taking the form of |
xgrid |
Numeric vector. Values between 0 and 1. Time grids over the entire time horizon (percentile) of the data at which the discount function is evaluated. |
rgrid |
(Optional) Numeric vector. Interest rate grids in percentage at which the discount function is evaluated, e.g. 4.03 means at interest rate of 4.03%. |
hr |
(Optional) Numeric vector. Bandwidth parameter in percentage determining the size of the window in the kernel function that corresponds to each interest rate grid ('rgrid'). |
interest |
(Optional) Numeric vector. Daily short term interest rates. The length is the same as the number of quotation dates included in the data, i.e. one interest rate per day. |
cfp_slist |
(Internal) Experienced users only. A list of matrices, generated by the internal function 'get_cfp_slist'. |
Details
Suppose that a bond i
has a price p_i
at time t
with a
set of cash payments, say c_1, c_2, \ldots, c_m
with a set of
corresponding discount values d_1, d_2, \ldots, d_m
. In the bond
pricing literature, the market price of a bond should reflect the
discounted value of cash payments. Thus, we want to minimise
(p_i-\sum^m_{j=1}c_j\times d_j)^2.
For the estimation of d_k(k=1,
\ldots, m)
, solving the first order condition yields
(p_i-\sum^m_{j=1}c_j \times d_j)c_k = 0,
and
\hat{d}_k =
\frac{p_i c_k}{c_k^2} - \frac{\sum^m_{j=1,k\neq k}c_k c_j d_j}{c_k^2}.
There are challenges: \hat{d}_k
depends on all the relevant discount
values for the cash payments of the bond. Our model contains random errors
and our interest lies in expected value of d(.)
where the expected
value of errors is zero. d(.)
is an infinite-dimensional function not
a discrete finite-dimensional vector. Generally, cash payments are made
biannually, not dense at all. Moreover, cash payment schedules vary over
different bonds.
Let d(\tau, X_t)
be the discount function at given covariates
X_t
(dates x
and interest rates rgrid
), and given
time-to-maturities \tau
(tau
). y(\tau, X_t)
is the yield
curve at given covariates X_t
(dates x
and interest rates
rgrid
), and given time-to-maturities \tau
(tau
).
We pursue the minimum of the following smoothed sample least squares
objective function for any smooth function d(.)
:
Q(d) =
\sum^T_{t=1}\sum^n_{i=1}\int\{p_{it}-\sum^{m_{it}}_{j=1}c_{it}(\tau_{ij})d(s_{ij},
x)\}^2 \sum^{m_{it}}_{k=1}\{K_h(s_{ik}-\tau_{ik})ds_{ik}\}K_h(x-X_t)dx,
where a bond i
has a price p_i
at time t
with a set of cash
payments c_1, c_2, \ldots, c_m
with a set of corresponding discount
values d_1, d_2, \ldots, d_m
, K_h(.) = K(./h)
is the kernel
function with a bandwidth parameter h
, the first kernel function is
the kernel in space with bonds whose maturities s_{ik}
are close to
the sequence \tau_{ik}
, the second kernel function is the kernel in
time and in interest rates with x
, which are close to the sequence
X_t
. This means that bonds with similar cash flows, and traded in
contiguous days, where the short term interest rates in the market are
similar, are combined for the estimation of the discount function at a
point in space, in time, and in "interest rates".
The estimator for the discount function over time to maturity and time is
\hat{d}=\arg\min_d Q(d).
This function provides a data frame of the estimated yield and discount rate at each combination of the provided grids. The estimated yield is transformed from the estimated discount rate.
An alternative specification of bandwidth hx
is span_x
, which provides
kernel coverage invariant to the length of data
. span_x
takes an
absolute measure of time depending on the unit of x
. The default value is
60. If the data is daily on trading days, i.e., the interval between every
two consecutive qdate
is one trading day, then the window of the kernel
function allows the estimation at each point x
to contain information
from 60 trading days prior to and after the time point x
.
For more information on the estimation method, please refer to
References
.
Value
A tibble::tibble()
object of class ycevo
with the following
columns.
- qdate
The time points that user-specified as
x
. The name of this column will be consistent with the name of the time index column in thedata
input, if the user choose to provide a data frame with the time index column named differently fromqdate
with thecols
argument.- .est
A nested columns of estimation results containing a
tibble::tibble()
for eachqdate
. Eachtibble
contains three columns:tau
for the time-to-maturity specified by the user in thetau
argument,.disount
for the estimated discount function at this time and this time-to-maturity, and.yield
for the estimated yield curve.
Functions
-
estimate_yield()
: Experienced users only. Yield estimation with interest rate and manually selected bandwidth parameters. Only length one x and length one hx are supported at a time. Returns a data frame of the yield and discount rate at each combination of the provided grids.- discount
Estimated discount rate
- xgrid
Same as input 'xgrid'
- tau
Same as input 'tau'
- yield
Estimated yield
References
Koo, B., La Vecchia, D., & Linton, O. (2021). Estimation of a nonparametric model for bond prices from cross-section and time series information. Journal of Econometrics, 220(2), 562-588.
See Also
augment.ycevo()
, autoplot.ycevo()
Examples
# Simulating bond data
bonds <- ycevo_data(n = 10)
# Estimation can take up to 30 seconds
ycevo(bonds, x = lubridate::ymd("2023-03-01"))