Affine Term Structure Models (Characteristics, Comparisons & Coding Example)

Contributor Image
Written By
Contributor Image
Written By
Dan Buckley
Dan Buckley is an US-based trader, consultant, and part-time writer with a background in macroeconomics and mathematical finance. He trades and writes about a variety of asset classes, including equities, fixed income, commodities, currencies, and interest rates. As a writer, his goal is to explain trading and finance concepts in levels of detail that could appeal to a range of audiences, from novice traders to those with more experienced backgrounds.

Affine Term Structure Models (ATSMs) are a class of models used in finance to describe the evolution of interest rates or the term structure of interest rates.

These models are characterized by the fact that the yield of a bond at any given time can be expressed as an affine (i.e., linear) function of factors that represent the state of the economy.

Affine here means that the yield is a linear combination of these factors plus a constant.


Key Takeaways – Affine Term Structure Models

  • Flexibility in Modeling
    • Affine Term Structure Models (ATSMs) offer a flexible framework for modeling interest rates.
    • Allow for various economic scenarios and accommodating different shapes of yield curves.
    • Used by central banks (economic analysis and policymaking) and financial institutions (analysis and trading interest rates).
  • Analytical Tractability
    • ATSMs provide explicit solutions for bond prices and yields.
    • Faciliate quick and accurate pricing of interest rate derivatives.
  • Market Adaptability
    • These models can be calibrated to current market data.
    • Highly relevant for traders in real-time market analysis and risk management.
  • We include comparisons with other interest rate models.
  • Plus, a Python coding example below.


Characteristics of Affine Term Structure Models

Key characteristics and aspects of Affine Term Structure Models include:

Factor Models

ATSMs typically involve one or more factors, which are variables representing the state of the economy or financial markets.

Common choices for these factors include short-term interest rates, spreads, and other economic indicators (e.g., inflation, nominal or real growth).

Linear Relationship

The term “affine” refers to the linear relationship between the yield of a bond and the underlying factors.

Mathematically, this means that the yield on a bond is a linear function of these factors.

This allows for a relatively straightforward calculation of bond prices and yields.

Dynamic Nature

These models are dynamic, meaning they describe how the term structure evolves over time.

This is typically done using stochastic differential equations.

These equations incorporate random elements to model the high range of unknowns (relative to the range of knows) inherent in financial markets.

Risk-neutral Valuation

ATSMs often employ risk-neutral valuation, which is a fundamental concept in financial economics that adjusts for risk when pricing derivative securities.

In a risk-neutral world, the expected return on a security is the risk-free rate.

Applications in Derivatives Pricing

ATSMs are useful in the pricing of interest rate derivatives, such as interest rate swaps and options on bonds.

They provide a way to model the entire yield curve, not just individual interest rates.

No-arbitrage Condition

A key aspect of these models is the enforcement of a no-arbitrage condition.

This ensures that there are no opportunities for riskless profit in the modeled financial market.

Examples of ATSMs

There are several specific models within this framework, each with different assumptions and characteristics.

Examples include the Vasicek model, the Cox-Ingersoll-Ross (CIR) model, and the Hull-White model.

Yield Curve Modeling

One of the primary uses of ATSMs is in the modeling of yield curves.

These models can explain various shapes of yield curves (normal, inverted, humped) observed in the market.


ATSMs are often calibrated to market data.

This means their parameters are adjusted so that the model output (like bond prices or yield curves) fits actual market data as closely as possible.

Complexity and Computation

ATSMs provide a theoretically sound and systematic approach to modeling interest rates, but they can be complex to implement without specific training and knowing one’s way around mathematical and computational tools.


Affine Term Structure Models vs. Other Interest Rate & Yield Curve Models

Interest rate and yield curve models are essential tools in finance for valuing fixed-income securities, assessing interest rate risk, and managing bond portfolios.

Beyond Affine Term Structure Models (ATSMs), there are several other models that are widely used.

Each has its unique approach and assumptions.

Here, we’ll discuss some of these models and compare them to ATSMs:

Vasicek Model

One of the earliest interest rate models, the Vasicek model is a one-factor short-rate model.

It models the evolution of the interest rate using a mean-reverting stochastic differential equation (Ornstein-Uhlenbeck process).

Vasicek vs. Affine Term Structure Models

ATSMs can incorporate multiple factors and yield curves that are more flexible,while  the Vasicek model is simpler with mean reversion and normally distributed rates.

However, the Vasicek can lead to negative interest rates, a limitation that’s not typically present in ATSMs.

Cox-Ingersoll-Ross (CIR) Model

Similar to the Vasicek model, the CIR model is a one-factor model but ensures that the interest rates are always positive.

CIR uses a square root process to model the short rate.

CIR Model vs. Affine Term Structure Models

The CIR model, like the Vasicek model, is less flexible than ATSMs.

But it addresses the issue of negative rates (which occurred in large parts of the world after the 2008 financial crisis and again after the pandemic in the 2020-21 period).

ATSMs, on the other hand, provide more realistic modeling of the term structure due to their multi-factor approach.

Hull-White Model

As an extension of the Vasicek and CIR models, the Hull-White model adds time-dependent parameters to the mean-reversion and volatility aspects.

This allows it to fit the current term structure more accurately.

Hull-White Model vs. Affine Term Structure Models

The Hull-White model offers more flexibility than the Vasicek and CIR models and can better adapt to the current yield curve.

ATSMs may still provide a more comprehensive framework for capturing dynamic movements in the yield curve.

Heath-Jarrow-Morton (HJM) Framework

The HJM framework models the entire forward rate curve instead of the short rate.

It allows for a no-arbitrage condition in the term structure of interest rates and can incorporate multiple factors.

HJM Framework vs. Affine Term Structure Models

HJM is more comprehensive and flexible than the Vasicek and CIR models.

And in some ways, it’s similar to ATSMs in its ability to model multiple factors.

HJM can nonetheless be more complex and computationally intensive.

Libor Market Model (LMM)

Also known as the Brace-Gatarek-Musiela model, LMM has been historically used to model the evolution of the Libor rates (Libor no longer exists) and is often used in the pricing of interest rate derivatives.

Libor Market Model vs. Affine Term Structure Models

LMM is particularly useful for modeling derivatives and is more aligned with market observables compared to traditional short-rate models.

ATSMs, while comprehensive, might not be as directly aligned with market instruments as the LMM.

Nelson-Siegel and Svensson Models

These are empirical models used to fit the term structure of interest rates.

They use polynomial functions to describe the shape of the yield curve.

Nelson-Siegel and Svensson Models vs. Affine Term Structure Models

These models are less theoretically rigorous than ATSMs or other stochastic models, as they are more focused on curve fitting.

Nonetheless, they’re widely used for their simplicity and ability to provide a good fit to observed data.


Each of these models has its strengths and weaknesses, and the choice of model often depends on the:

  • specific application
  • nature of the interest rate dynamics in the market, and
  • complexity an institution is willing to manage

ATSMs are popular for their flexibility and ability to capture various dynamics of the yield curve.

But simpler models like Vasicek or CIR might be sufficient for certain applications.

More complex models like HJM or LMM are often reserved for sophisticated interest rate derivatives pricing.


Affine Term Structure Models – Coding Example in Python

Creating a Python example for an Affine Term Structure Model (ATSM) involves several steps, including:

  • setting up the model
  • calibrating it to market data, and
  • then using it to model the yield curve.

ATSMs typically involve specifying a dynamic model for the short rate or the forward rate, where the parameters are affine functions of state variables.

Below is a simplified example using a basic ATSM framework. (For example, we simulate the short rate over time, and for simplicity, we assume constant parameters. Moreover, we use the Euler method for discounting.)

Note that in real-world applications, these models can become quite complex and require significant market data for calibration. This example will focus on a conceptual demonstration rather than a practical implementation.

We’ll define a simple one-factor ATSM.

The short rate r(t) is modeled as r(t) = theta(t) + phi(t) * X(t), where X(t) is a mean-reverting process.


import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
def short_rate(theta, phi, X):
    return theta + phi * X

def mean_reverting_process(X0, kappa, mu, sigma, T, steps):
    dt = T / steps
    X = np.zeros(steps)
    X[0] = X0
    for t in range(1, steps):
        dW = np.random.normal(scale=np.sqrt(dt))
        X[t] = X[t-1] + kappa * (mu - X[t-1]) * dt + sigma * dW
    return X

# Model parameters (normally these should be calibrated to market data)
theta, phi = 0.02, 0.03
kappa, mu, sigma = 0.1, 0.05, 0.02
X0, T, steps = 0.01, 5, 100

# Simulate the mean-reverting process
X = mean_reverting_process(X0, kappa, mu, sigma, T, steps)

# Calculate the short rate
r = short_rate(theta, phi, X)

def bond_price(r, T, steps):
    dt = T / steps
    discount_factors = np.exp(-r * dt)
    return np.cumprod(discount_factors)

# Calculate bond prices for varying maturities
maturities = [1, 2, 3, 4, 5]
bond_prices = {maturity: bond_price(r[:int(steps * maturity / T)], maturity, int(steps * maturity / T)) for maturity in maturities}

plt.figure(figsize=(10, 6))
for maturity, prices in bond_prices.items():
    yields = -np.log(prices[-1]) / maturity
    plt.plot(maturity, yields, 'o', label=f'Maturity: {maturity} years')

plt.xlabel('Maturity (Years)')
plt.title('Simulated Yield Curve from ATSM')


  • In practice, the model parameters (theta, phi, kappa, mu, sigma) are calibrated to market data (e.g., bond prices, yield curves).
  • The model can be extended to multiple factors, and the calibration process can be sophisticated. It often involves optimization techniques to fit the model to observed yield curves.
  • This code doesn’t include any risk-neutral pricing adjustments, which are often required for derivative pricing.

This example aims to provide a basic understanding of how ATSMs can be implemented in Python.

For practical applications, extensive market data analysis and more advanced numerical methods are recommended.



In practice, Affine Term Structure Models are widely used by financial institutions and central banks for risk management, portfolio optimization, strategic planning, and economic forecasting, given their ability to better understand the dynamics of interest rates and yield curves.