Interest Rates
Building Blocks
DiffFusion.Numeraire — Typestruct Numeraire <: Leaf
obs_time::ModelTime
curve_key::String
endThe price of our numeraire asset price N(t) at observation time t.
Typically, this coincides with the bank account price in numeraire (i.e. domestic) currency.
DiffFusion.BankAccount — Typestruct BankAccount <: Leaf
obs_time::ModelTime
key::String
endThe price of a continuous compounded bank account B(t) at observation time t and with unit notional at inception.
DiffFusion.ZeroBond — Typestruct ZeroBond <: Leaf
obs_time::ModelTime
maturity_time::ModelTime
key::String
endThe price of a zero coupon bond P(t,T) with observation time t and bond maturity time T.
DiffFusion.Fixing — Typestruct Fixing <: Leaf
obs_time::ModelTime
key::String
endThe value of an index fixing Idx(t) at observation time t.
The value is obtained from a term structure linked to the path.
Rates Payoffs
DiffFusion.LiborRate — Typestruct LiborRate <: Leaf
obs_time::ModelTime
start_time::ModelTime
end_time::ModelTime
year_fraction::ModelValue
key::String
endA simple compounded forward Libor rate.
DiffFusion.LiborRate — MethodLiborRate(
obs_time::ModelTime,
start_time::ModelTime,
end_time::ModelTime,
key::String,
)A simple compounded forward Libor rate with year fraction from model time.
DiffFusion.CompoundedRate — Typestruct CompoundedRate <: Payoff
obs_time::ModelTime
start_time::ModelTime
end_time::ModelTime
year_fraction::ModelValue
fixed_compounding::Union{Payoff, Nothing}
key::String
fixed_type::DataType # distinguish from constructors
endA continuously compounded backward looking rate.
This is a proxy for daily compounded RFR coupon rates.
For obstime less starttime it is equivalent to a Libor rate.
DiffFusion.CompoundedRate — MethodCompoundedRate(
obs_time::ModelTime,
start_time::ModelTime,
end_time::ModelTime,
key::String,
fixed_compounding::Union{Payoff, Nothing} = nothing,
)A continuously compounded backward looking rate with year fraction from model time.
DiffFusion.Optionlet — Typestruct Optionlet <: Payoff
obs_time::ModelTime
expiry_time::ModelTime
gearing_factor::Payoff
forward_rate::Union{LiborRate, CompoundedRate}
strike_rate::Payoff
call_put::ModelValue
endThe time-t forward price of an option paying [ϕ(R-K)]^+. Rate R is determined at expiry_time. The rate R can be forward-looking or backward-looking.
forward price is calculated as expectation in T-forward measure where T corresponds to the period end time. Conditioning (for time-t price) is on information at obs_time.
The rate R is written in terms of a compounding factor C and R = [G C - 1]/τ. Here, G is an additional gearing factor to capture past OIS fixings.
Then, option payoff becomes G/τ [ϕ(C - (1 + τK)/G)]^+.
DiffFusion.Optionlet — TypeOptionlet(
obs_time_::ModelTime,
expiry_time::ModelTime,
forward_rate::Union{LiborRate, CompoundedRate},
strike_rate::Payoff,
call_put::ModelValue,
gearing_factor::Payoff = ScalarValue(1.0),
)Create an Optionlet payoff.
DiffFusion.Swaption — Typestruct Swaption <: Payoff
obs_time::ModelTime
expiry_time::ModelTime
settlement_time::ModelTime
forward_rates::AbstractVector
forward_rate_pay_times::AbstractVector
fixed_times::AbstractVector
fixed_weights::AbstractVector
fixed_rate::ModelValue
payer_receiver::ModelValue
disc_key::String
zcb_pay_times::AbstractVector
rate_type::DataType # to distinguish from functions
endTime-t forward price of an option paying An⋅[ϕ(S-K)]^+. Swap rate S is determined at expiry_time. Floating rates in S can be forward looking of backward looking rates.
Forward price is calculated in T-forward measure where T corresponds to settlement_time. Conditioning (for time-t price) is on information at obs_time.
DiffFusion.Swaption — MethodSwaption(
obs_time_::ModelTime,
expiry_time::ModelTime,
settlement_time::ModelTime,
forward_rates::AbstractVector,
fixed_times::AbstractVector,
fixed_weights::AbstractVector,
fixed_rate::ModelValue,
payer_receiver::ModelValue,
disc_key::String,
)Create a Swaption payoff.