Struct RangeAccrualCoupon
pub struct RangeAccrualCoupon {Show 15 fields
pub accrual_start: NaiveDate,
pub accrual_end: NaiveDate,
pub payment_date: NaiveDate,
pub notional: f64,
pub fixed_rate: f64,
pub day_count: DayCountFraction,
pub accrual: f64,
pub payment_ordinal: i32,
pub currency: Currency,
pub index: String,
pub index_tenor: f64,
pub lower: Option<f64>,
pub upper: Option<f64>,
pub observations: Vec<RangeObservation>,
pub gap: f64,
}Expand description
A range accrual: notional · rate · tau · (days in range) / (days), each
calendar day of the accrual period in range when the index’s fixing it
observes lies in [lower, upper] (a missing bound is open).
By digital replication. A day still to fix is in range with the
probability P(R > lower) − P(R > upper), each a digital call on the index
replicated by a call spread gap wide, centred on its strike, off the
currency’s cap vol surface at the fixing’s expiry and the index tenor —
the replication Digital uses. A fixed day reads its print.
Fields§
§accrual_start: NaiveDateAccrual start.
accrual_end: NaiveDateAccrual end.
payment_date: NaiveDatePayment date.
notional: f64The notional. Contract data.
fixed_rate: f64The rate paid for a day in range, as a decimal. Contract data.
day_count: DayCountFractionThe accrual day count.
accrual: f64The accrual year fraction under day_count, evaluated once at build.
payment_ordinal: i32The payment date as a proleptic-Gregorian day number.
currency: CurrencyThe coupon’s currency.
index: StringThe observed index’s registry code.
index_tenor: f64The index’s tenor, in years: the cap vol surface’s tenor column.
lower: Option<f64>The range’s lower bound on the index, if any.
upper: Option<f64>The range’s upper bound on the index, if any.
observations: Vec<RangeObservation>The distinct fixings observed, in date order.
gap: f64The call spread’s width, on the rate.
Implementations§
§impl RangeAccrualCoupon
impl RangeAccrualCoupon
pub fn on_index(
index: &IborIndex,
accrual_start: NaiveDate,
accrual_end: NaiveDate,
payment_date: NaiveDate,
notional: f64,
fixed_rate: f64,
day_count: DayCountFraction,
currency: Currency,
lower: Option<f64>,
upper: Option<f64>,
gap: f64,
) -> Result<Self, PayoffError>
pub fn on_index( index: &IborIndex, accrual_start: NaiveDate, accrual_end: NaiveDate, payment_date: NaiveDate, notional: f64, fixed_rate: f64, day_count: DayCountFraction, currency: Currency, lower: Option<f64>, upper: Option<f64>, gap: f64, ) -> Result<Self, PayoffError>
A range accrual on the registered term index over
[accrual_start, accrual_end), every calendar day observing the fixing
of the latest business day on or before it on the index’s calendar.
§Errors
PayoffError::EmptyRange with no bound; PayoffError::NonFinite
for a bound that is not finite; PayoffError::InvertedRange for a
lower bound above the upper; PayoffError::NonPositiveGap for a gap
that is not positive.
§Panics
If the accrual period runs to the last representable date.
fn rate_with<R: Scalar, C: CurveByIndex<R> + ?Sized>(
&self,
curves: &C,
fixings: &FixingsView<'_, R>,
as_of: NaiveDate,
) -> Result<R, CashflowError>
fn rate_with<R: Scalar, C: CurveByIndex<R> + ?Sized>( &self, curves: &C, fixings: &FixingsView<'_, R>, as_of: NaiveDate, ) -> Result<R, CashflowError>
The rate paid over the period: the fixed rate times the fraction of days in range, expected where a day is still to fix.
Trait Implementations§
§impl Clone for RangeAccrualCoupon
impl Clone for RangeAccrualCoupon
§fn clone(&self) -> RangeAccrualCoupon
fn clone(&self) -> RangeAccrualCoupon
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for RangeAccrualCoupon
impl Debug for RangeAccrualCoupon
§impl PartialEq for RangeAccrualCoupon
impl PartialEq for RangeAccrualCoupon
§fn eq(&self, other: &RangeAccrualCoupon) -> bool
fn eq(&self, other: &RangeAccrualCoupon) -> bool
self and other values to be equal, and is used by ==.