pub struct SmithWilson {
pub ultimate_forward_rate: f64,
pub convergence_speed: f64,
pub last_liquid_point: f64,
}Expand description
Smith-Wilson extrapolation for regulatory yield curves.
The Smith-Wilson method is the regulatory standard for extrapolating risk-free rate curves under Solvency II (EIOPA). It ensures smooth convergence from the Last Liquid Point (LLP) to the Ultimate Forward Rate (UFR) at long maturities.
§EIOPA Standard Parameters
| Currency | UFR | LLP | Alpha |
|---|---|---|---|
| EUR | 3.45% | 20Y | 0.126 |
| GBP | 3.45% | 50Y | 0.100 |
| USD | 3.45% | 30Y | 0.100 |
| CHF | 3.45% | 25Y | 0.100 |
Note: UFR values are updated annually by EIOPA. Values shown are as of 2024.
§Properties
- Regulatory compliant: Matches EIOPA specification
- Smooth convergence: C∞ continuity
- UFR target: Converges to Ultimate Forward Rate
- Speed control: Alpha parameter controls convergence speed
§Convergence Behavior
The forward rate converges to UFR according to:
- At LLP: forward rate equals observed market rate
- At LLP + 40Y: forward rate within 3bp of UFR (EIOPA convergence criterion)
- At infinity: forward rate equals UFR exactly
§Example
use convex_math::extrapolation::{SmithWilson, Extrapolator};
// EUR parameters (EIOPA 2024)
let sw = SmithWilson::new(0.0345, 0.126, 20.0);
// Extrapolate from 20Y (LLP) to 60Y
let rate_60y = sw.extrapolate(60.0, 20.0, 0.03, 0.001);
// The rate should be moving towards UFR (3.45%)
assert!(rate_60y > 0.03); // Moving up towards UFRFields§
§ultimate_forward_rate: f64Ultimate Forward Rate (continuously compounded)
convergence_speed: f64Convergence speed parameter (alpha)
last_liquid_point: f64Last Liquid Point (years)
Implementations§
Source§impl SmithWilson
impl SmithWilson
Sourcepub fn eiopa_eur() -> Self
pub fn eiopa_eur() -> Self
Creates a Smith-Wilson extrapolator with EIOPA EUR parameters.
Uses standard EIOPA parameters for EUR curves:
- UFR: 3.45% (2024 value)
- Alpha: 0.126
- LLP: 20 years
Sourcepub fn eiopa_gbp() -> Self
pub fn eiopa_gbp() -> Self
Creates a Smith-Wilson extrapolator with EIOPA GBP parameters.
Uses standard EIOPA parameters for GBP curves:
- UFR: 3.45% (2024 value)
- Alpha: 0.100
- LLP: 50 years
Sourcepub fn eiopa_usd() -> Self
pub fn eiopa_usd() -> Self
Creates a Smith-Wilson extrapolator with EIOPA USD parameters.
Uses standard EIOPA parameters for USD curves:
- UFR: 3.45% (2024 value)
- Alpha: 0.100
- LLP: 30 years
Trait Implementations§
Source§impl Clone for SmithWilson
impl Clone for SmithWilson
Source§fn clone(&self) -> SmithWilson
fn clone(&self) -> SmithWilson
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SmithWilson
impl Debug for SmithWilson
Source§impl Extrapolator for SmithWilson
impl Extrapolator for SmithWilson
Source§impl PartialEq for SmithWilson
impl PartialEq for SmithWilson
impl Copy for SmithWilson
impl StructuralPartialEq for SmithWilson
Auto Trait Implementations§
impl Freeze for SmithWilson
impl RefUnwindSafe for SmithWilson
impl Send for SmithWilson
impl Sync for SmithWilson
impl Unpin for SmithWilson
impl UnwindSafe for SmithWilson
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.