Struct NelsonSiegel
pub struct NelsonSiegel {
reference_date: NaiveDate,
params: Vec<f64>,
}Expand description
A Nelson-Siegel discount curve.
The zero rate is
z(τ) = β₀ + β₁·(1 − e^{−τ/λ})/(τ/λ) + β₂·[(1 − e^{−τ/λ})/(τ/λ) − e^{−τ/λ}]— a level, a slope decaying to nothing, and a hump peaking near λ. Four
parameters, stored [β₀, β₁, β₂, u].
The decay is stored squashed into a range. A fit steps freely over the
parameter vector, and both λ ≤ 0 and λ → ∞ are unusable — the first is
not a curve, the second makes the three β unidentified. See
DECAY_MIN, which explains what a fit does when the bound is absent.
Fields§
§reference_date: NaiveDate§params: Vec<f64>[β₀, β₁, β₂, u], u the unconstrained decay.
Implementations§
§impl NelsonSiegel
impl NelsonSiegel
pub fn new(
reference_date: NaiveDate,
beta0: f64,
beta1: f64,
beta2: f64,
lambda: f64,
) -> Result<Self, CurveError>
pub fn new( reference_date: NaiveDate, beta0: f64, beta1: f64, beta2: f64, lambda: f64, ) -> Result<Self, CurveError>
A Nelson-Siegel curve from its natural parameters.
§Errors
CurveError::NonFinite for a non-finite parameter, and for a decay
that is not strictly positive.
pub fn reference_date(&self) -> NaiveDate
pub fn reference_date(&self) -> NaiveDate
The curve’s reference date.
pub fn natural(&self) -> (f64, f64, f64, f64)
pub fn natural(&self) -> (f64, f64, f64, f64)
The natural parameters (β₀, β₁, β₂, λ), with the decay squashed back
out of its stored unconstrained form.
pub fn parameters(&self) -> &[f64]
pub fn parameters(&self) -> &[f64]
The free parameters, [β₀, β₁, β₂, u] with u the unconstrained form
of the decay — the vector a fit steps over and a risk lift attributes to.
pub fn from_parameters(reference_date: NaiveDate, params: &[f64]) -> Self
pub fn from_parameters(reference_date: NaiveDate, params: &[f64]) -> Self
This form carrying params verbatim — the stored vector, decay
included in its unconstrained form.
What a fit hands back at its solution. Reconstructing through
new instead would squash a decay that is already
squashed, and a parameter sitting near its bound would move.
§Panics
If params is not WIDTH long.
pub fn view<R: Scalar>(&self) -> NelsonSiegelView<'_, R>
pub fn view<R: Scalar>(&self) -> NelsonSiegelView<'_, R>
This curve lifted into mode R.
pub(crate) fn view_with_slice<'a, R: Scalar>(
&'a self,
rest: &mut &'a [R],
) -> NelsonSiegelView<'a, R>
pub(crate) fn view_with_slice<'a, R: Scalar>( &'a self, rest: &mut &'a [R], ) -> NelsonSiegelView<'a, R>
One step of a substituted walk. See
take_params.
pub(crate) fn view_seeding<R: Scalar + Seedable>(
&self,
seed: &mut Option<usize>,
) -> NelsonSiegelView<'_, R>
pub(crate) fn view_seeding<R: Scalar + Seedable>( &self, seed: &mut Option<usize>, ) -> NelsonSiegelView<'_, R>
One step of a seeded walk. See take_seed.
Trait Implementations§
§impl Clone for NelsonSiegel
impl Clone for NelsonSiegel
§fn clone(&self) -> NelsonSiegel
fn clone(&self) -> NelsonSiegel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more