Short-Rate Interest Rate Models › Parameter Impact Analysis
Quantitative FinanceAll chapters Short-Rate Interest Rate Models › Parameter Impact AnalysisOne section · Sections in this chapter10 / 13 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
Exploring how parameters affect rate dynamics and bond prices helps build intuition for calibration.
Effect of Mean Reversion Speed
The parameter controls how quickly rates revert to the long-run mean. Higher means faster reversion and lower variance in the long run.
# Different mean reversion speeds
kappa_values = [0.1, 0.5, 1.0, 2.0]
# Simulate paths for each kappa
paths_by_kappa = {}
for k in kappa_values:
paths_by_kappa[k] = simulate_vasicek(
r0, k, theta, sigma, T, n_steps, 500, seed=42
)
# Calculate statistics for plotting
kappa_stats = {}
for k, paths in paths_by_kappa.items():
kappa_stats[k] = {
"mean": paths.mean(axis=0) * 100,
"p5": np.percentile(paths, 5, axis=0) * 100,
"p95": np.percentile(paths, 95, axis=0) * 100,
}
With low , rates wander more freely and take longer to approach . With high , rates snap back quickly after any shock, resulting in a tighter distribution around the long-run mean.
Effect of Volatility
The volatility parameter scales the random component. Higher volatility produces wider distributions and more variable rate paths.
# Different volatility levels
sigma_values = [0.01, 0.02, 0.04, 0.06]
# Simulate paths for each sigma
paths_by_sigma = {}
for s in sigma_values:
paths_by_sigma[s] = simulate_vasicek(
r0, kappa, theta, s, T, n_steps, 500, seed=42
)
# Calculate statistics for plotting
sigma_stats = {}
for s, paths in paths_by_sigma.items():
sigma_stats[s] = {
"mean": paths.mean(axis=0) * 100,
"p5": np.percentile(paths, 5, axis=0) * 100,
"p95": np.percentile(paths, 95, axis=0) * 100,
}
The mean paths are nearly identical across volatility levels since doesn't affect the expected rate path, only its variance. Higher volatility dramatically widens the confidence bands, increasing the probability of extreme rate scenarios.
Yield Curve Shapes
The interplay between parameters determines what yield curve shapes the model can produce. Let's explore how the current rate relative to the long-run mean affects the curve.
# Define range of initial rates around theta
r_range = np.linspace(0.01, 0.09, 9) # 1% to 9%
maturities_fine = np.linspace(0.1, 30, 100)
# Calculate yield curves for shape analysis
yield_curves_shape = []
for r_start in r_range:
curves = calculate_yields(
r_start, maturities_fine, kappa, theta, sigma, "vasicek"
)
yield_curves_shape.append(curves)
The Vasicek model (and CIR) can produce a range of yield curve shapes, but with important limitations. Both models belong to the class of single-factor models, meaning all yields are driven by a single source of randomness. This implies that yields at different maturities are perfectly correlated, which is not observed in practice where short and long rates sometimes move in opposite directions.