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.