This repository contains an implementation of the Svensson (1994) model for yield curve fitting and analysis in R. The Svensson model extends the Nelson-Siegel approach by adding a fourth term to better capture complex yield curve shapes, making it particularly useful for fixed income analysis and interest rate modeling.
- Spot Rate Calculation: Calculate spot interest rates for any maturity using calibrated Svensson model parameters
- Parameter Estimation: Fit the Svensson model parameters to observed market rates using numerical optimization
- Fixed Maturity Series Generation: Create time series of interest rates for standard fixed maturities from treasury bond data
Calculate spot interest rates using the Svensson model.
svensson_rate(t, beta0, beta1, beta2, beta3, tau1, tau2)
Parameters:
t
: Time to maturity in yearsbeta0
: Long-term interest rate level parameterbeta1
: Short-term component parameterbeta2
: Medium-term component parameterbeta3
: Second medium-term component parametertau1
: First decay parameter (must be positive)tau2
: Second decay parameter (must be positive)
Estimate Svensson model parameters from observed market rates.
fit_svensson(maturities, rates)
Parameters:
maturities
: Numeric vector of times to maturity in yearsrates
: Numeric vector of observed interest rates corresponding to maturities
Generate a time series of interest rates for standard fixed maturities using treasury bond data.
generate_fixed_maturity_series(dados_tesouro)
Parameters:
dados_tesouro
: Data frame with treasury bond data containing columns:ref_date
: Reference datematur_date
: Maturity dateyield_bid
: Yield to maturity
# Calculate 5-year spot rate
rate <- svensson_rate(
t = 5, beta0 = 0.04, beta1 = -0.02,
beta2 = -0.01, beta3 = 0.005,
tau1 = 1.5, tau2 = 4
)
# Fit model to market data
maturities <- c(0.5, 1, 2, 5, 10)
rates <- c(0.02, 0.025, 0.03, 0.035, 0.04)
params <- fit_svensson(maturities, rates)
# Use the fitted parameters
params
# [1] beta0 beta1 beta2 beta3 tau1 tau2
# Assuming dados_tesouro is your treasury bond data
fixed_rates <- generate_fixed_maturity_series(dados_tesouro)
# View the first few rows
head(fixed_rates)
# Install directly from GitHub
devtools::install_github("yourusername/svensson-yield-curve")
Svensson, L. E. (1994). Estimating and Interpreting Forward Interest Rates: Sweden 1992-1994. NBER Working Paper Series, No. 4871.