SmithWilson#

The main space in the Smith-Wilson model

SmithWilson is the only space in the Smith-Wilson model.

The Smith-Wilson method is used for extrapolating risk-free interest rates under the Solvency II framework. The method is described in “QIS 5 Risk-free interest rates – Extrapolation method”, a technical paper issued by CEIOPS (the predecessor of EIOPA). The technical paper is available on EIOPA’s web site. Cells in this space are named consistently with the mathematical symbols in the technical paper.

References

log#

log function from the standard math library

exp#

exp function from the standard math library

np#

Numpy module

N#

Number of durations for which the observed spot rates are available

spot_rates#

List of the observed spot rates (annual compound)

UFR#

The ultimate forward rate (continuous compound)

alpha#

The convergence parameter \(lpha\)

Cells

P(i)

Zero-coupon bond prices extrapolated by the Smith-Wilson method.

R(i)

The extrapolated annual compound sport rates.

W(i, j)

The Wilson functions.

W_matrix()

The W() matrix.

m(i)

Observed zero-coupon bond prices at time \(u_i\).

m_vector()

The m() vector.

mu(i)

Ultimate Forward Rate (UFR) discount factors

mu_vector()

The mu() vector.

u(i)

Time (\(u_i\))

zeta(i)

The \(\zeta_i\) parameters fitted to the observed spot rates.

zeta_vector()

The zeta() vector.

u(i)[source]#

Time (\(u_i\))

u() is a series of discrete time points. i is a 1-based index. By default, u() just returns i.

For i = 1, …, N, u() corresponds to \(u_i\) in the technical paper, The time to maturities of the observed zero-coupon bond prices.

spot_rates, the observed spot rates must exist at each u(i) from i = 1 to N. Note that spot_rates is 0-based, so the sport rate at u(i) is spot_rates[i-1].

Parameters:

i – The time index (1, 2, …)

m(i)[source]#

Observed zero-coupon bond prices at time \(u_i\).

m() is calculated from spot_rates as \((1 + spot\_rates[i-1])^{-u_i}\)

Parameters:

i (int) – Time index (1, 2, …, N)

mu(i)[source]#

Ultimate Forward Rate (UFR) discount factors

mu() is defined as \(e^{-UFR\cdot u_i}\).

Parameters:

i (int) – Time index (1, 2, …)

W(i, j)[source]#

The Wilson functions.

W() corresponds to formula (2) on page 16 in the technical paper defined as:

\[W(t, u_j)= \ e^{-UFR\cdot (t+u_j)}\cdot \ \left\{ \ \alpha\cdot\min(t, u_j) \ -0.5\cdot e^{-\alpha\cdot\max(t, u_j)}\cdot( \ e^{\alpha\cdot\min(t, u_j)} \ -e^{-\alpha\cdot\min(t, u_j)} \ ) \ \right\}\]

where \(t = u_i\).

Parameters:
  • i (int) – Time index (1, 2, …, N)

  • j (int) – Time index (1, 2, …, N)

m_vector()[source]#

The m() vector.

m() as 1-dimensional N length numpy array.

mu_vector()[source]#

The mu() vector.

mu() as 1-dimensional N length numpy array.

W_matrix()[source]#

The W() matrix.

W() as a 2-dimensional N x N numpy array.

zeta_vector()[source]#

The zeta() vector.

zeta_vector() returns \(\zeta\) parameters calculated by formula (5) on page 17 in the technical paper, which is

\[\bf \zeta= W^{-1}(p-\mu)\]
zeta(i)[source]#

The \(\zeta_i\) parameters fitted to the observed spot rates.

Parameters:

i (int) – Time index (1, 2, …, N)

P(i)[source]#

Zero-coupon bond prices extrapolated by the Smith-Wilson method.

P() corresponds to formula (1) on page 16 or formula (6) on page 18 in the technical paper, defined as:

\[P(t) = e^{-UFR\cdot t}+\sum_{j=1}^{N}\zeta_{j}\cdot W(t, u_j)\]

substituting \(t\) with \(u_i\).

The values of P() for i=1, ..., N should be the same as the values of m(), the observed bond prices.

Parameters:

i (int) – Time index (1, 2, …)

R(i)[source]#

The extrapolated annual compound sport rates.

R() corresponds to \(R_t\) defined as:

\[R_t = \left(\frac{1}{P(t)}\right)^\left(\frac{1}{t}\right)-1\]

on page 18 in the technical paper, substituting \(t\) with \(u_i\).

The values of R() for i=1,...,N should be same as the values of the observed spot rates spot_rates for 0, … ,N-1.

Parameters:

i (int) – Time index (1, 2, …)