Skip to main content

SecuritiesLoan

Struct SecuritiesLoan 

pub struct SecuritiesLoan {
    pub loan: Repo,
    pub fee: f64,
    pub cash_collateral: bool,
}
Expand description

A securities loan: a bond lent for a fee on its market value, accrued each day on the day count and paid at the end of each of the loan’s interest periods — monthly where the repo carries monthly interest dates, else once at the end — against collateral. Cash collateral is a repo at the rebate the lender pays on it — the lender of the bond is the borrower of the cash — and other bonds as collateral change hands and come back, worth nothing on the loan.

It is carried by loan, the repo that lends the bond: its side (Repo for the lender of the bond), dates, interest dates, day count, bond, nominal and financing keys, at the rebate for cash collateral, which pays on the same dates as the fee.

Fields§

§loan: Repo

The repo that lends the bond, at the rebate for cash collateral.

§fee: f64

The lending fee, a simple annual rate on the bond’s dirty value.

§cash_collateral: bool

Whether the collateral is cash, valued as the repo at the rebate; otherwise it is other securities, which value nothing on the loan.

Implementations§

§

impl SecuritiesLoan

pub fn new( loan: Repo, fee: f64, cash_collateral: bool, ) -> Result<Self, RepoError>

loan lending its bond for fee, against cash at the loan’s rate (the rebate) when cash_collateral, or against other securities.

§Errors

RepoError::Malformed for a fee that is not finite, or a cross-currency or buy/sell-back loan.

pub fn fee_sign(&self) -> f64

+1 for the lender of the bond, who earns the fee; −1 for the borrower.

§

impl SecuritiesLoan

fn fee_value<R: Scalar>( &self, view: &PricingView<'_, R>, ) -> Result<R, PricingError>

The fee still to be paid: per interest period, fee · N/100 · Σ τ_d·F(d) over its days, F(d) the bond’s forward dirty price on its financing curve, discounted from the period’s end. A period paid by today is gone; a day already past accrues on today’s price.

Trait Implementations§

§

impl Clone for SecuritiesLoan

§

fn clone(&self) -> SecuritiesLoan

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for SecuritiesLoan

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
§

impl PartialEq for SecuritiesLoan

§

fn eq(&self, other: &SecuritiesLoan) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl<R: Scalar> Priceable<R> for SecuritiesLoan

§

fn npv(&self, view: &PricingView<'_, R>) -> Result<R, PricingError>

The fee, and against cash the repo at the rebate.

§

fn par_rate(&self, _view: &PricingView<'_, R>) -> Result<R, PricingError>

The par rate — the fixed rate at which the product is worth nothing. Read more
§

fn par_spread(&self, _view: &PricingView<'_, R>) -> Result<R, PricingError>

The par (breakeven) floating-leg spread. Zero for a product with no floating leg. Read more
§

impl PricingRiskFactors for SecuritiesLoan

§

fn risk_factors(&self) -> Result<RiskFactors<'_>, PricingError>

The loan’s repo’s: its discount curve, and the financing curve the bond’s forward value is carried on.

§

impl Product for SecuritiesLoan

§

fn currency(&self) -> Currency

The currency the product pays in. An FX product values in its quote currency; a book converts.
§

fn contract_dates(&self) -> Vec<(&'static str, NaiveDate)>

The contract dates the product resolved to, as (name, date) pairs — exactly the dates its stated constructor takes, so a product built through a derived form can be read back and rebuilt through the stated one. Empty for a product with no stated form. No default: every product states which it is — see AnyInstrument::contract_dates.
§

fn legs(&self) -> Option<Vec<&Leg>>

The legs the product itself holds, in a declared order, or None for a product that holds none — see AnyInstrument::legs. No default: every product states which it is.
§

fn final_payment_date(&self) -> Option<NaiveDate>

The date of the product’s final payment, where a calibration rung can be built on it; None for a product no ladder is built from.
§

fn restruck_at_rate(&self, _rate: f64) -> Option<AnyInstrument>

This product re-struck at the par rate rate — the scalar a par calibration rung on it is quoted in — or None for a product that carries no such scalar. What a quote scenario moves a rung to.
§

fn restruck_at_spread(&self, _spread: f64) -> Option<AnyInstrument>

This product re-struck at the basis spread spread on its spread leg, or None for a product that quotes none.
§

impl StructuralPartialEq for SecuritiesLoan

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.