Skip to main content

TriPartyRepo

Struct TriPartyRepo 

pub struct TriPartyRepo {
    pub cash_leg: Repo,
    pub allocation: Vec<TriPartyAllocation>,
}
Expand description

A tri-party repo: cash against a basket an agent allocates under a collateral schedule. The cash leg is a repo’s, financed on the schedule’s repo curve then the currency’s general collateral; the agent manages the basket’s coupons and substitutions, so the leg carries none, and the allocation is margined at market net of its haircuts.

Fields§

§cash_leg: Repo

The cash leg, as a repo with no coupons of its own.

§allocation: Vec<TriPartyAllocation>

The basket the agent has allocated.

Implementations§

§

impl TriPartyRepo

pub fn new( terms: RepoTerms, cash: f64, schedule: &str, allocation: Vec<TriPartyAllocation>, ) -> Result<Self, RepoError>

cash lent or borrowed on terms under the collateral schedule (its repo curve key), against allocation.

§Errors

RepoError::Malformed for an empty allocation, a bond in another currency or maturing within the term, a nominal that is not positive, or a haircut outside [0, 1); otherwise as Repo::from_cash.

§

impl TriPartyRepo

pub fn margin(&self, market: &MarketContext) -> Result<RepoMargin, PricingError>

The margin position on market: the exposure the cash leg carries, against the allocation at its dirty value on its discount curve, each bond counted net of its haircut. required is the exposure plus the haircuts, so excess is the haircut value less the exposure, and haircut the basket’s value-weighted one.

§Errors

As Priceable::npv.

Trait Implementations§

§

impl Clone for TriPartyRepo

§

fn clone(&self) -> TriPartyRepo

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 TriPartyRepo

§

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

Formats the value using the given formatter. Read more
§

impl PartialEq for TriPartyRepo

§

fn eq(&self, other: &TriPartyRepo) -> 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 TriPartyRepo

§

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

The cash leg on the schedule’s repo curve.

§

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 TriPartyRepo

§

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

The cash leg’s: the schedule’s repo curve, then general collateral.

§

impl Product for TriPartyRepo

§

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 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_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 TriPartyRepo

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.