Last updated: 2023-03-16.
tf_quant_finance.experimental.instruments.FloatingCashflowStream#
Represents a batch of cashflows indexed to a floating rate.
tf_quant_finance.experimental.instruments.FloatingCashflowStream(
start_date, end_date, coupon_spec, first_coupon_date=None,
penultimate_coupon_date=None, dtype=None, name=None
)
Example:#
The following example illustrates the construction of an floating cashflow stream and calculating its present value.
import numpy as np
import tensorflow as tf
import tf_quant_finance as tff
dates = tff.datetime
instruments = tff.experimental.instruments
rc = tff.experimental.instruments.rates_common
dtype = np.float64
start_date = dates.convert_to_date_tensor([(2020, 2, 2)])
maturity_date = dates.convert_to_date_tensor([(2023, 2, 2)])
valuation_date = dates.convert_to_date_tensor([(2020, 2, 2)])
period_3m = dates.months(3)
flt_spec = instruments.FloatCouponSpecs(
coupon_frequency=periods_3m, reference_rate_term=periods_3m,
reset_frequency=periods_3m, currency='usd', notional=1.,
businessday_rule=dates.BusinessDayConvention.NONE,
coupon_basis=0., coupon_multiplier=1.,
daycount_convention=rc.DayCountConvention.ACTUAL_365)
cf_stream = instruments.FloatingCashflowStream([start_date], [maturity_date],
[flt_spec], dtype=dtype)
curve_dates = valuation_date + dates.years([1, 2, 3, 5, 7, 10, 30])
reference_curve = instruments.RateCurve(
curve_dates,
np.array([
0.02834814, 0.03077457, 0.03113739, 0.03130794, 0.03160892,
0.03213901, 0.03257991
], dtype=dtype),
dtype=dtype)
market = instruments.InterestRateMarket(
reference_curve=reference_curve, discount_curve=reference_curve)
price = cf_stream.price(valuation_date, market)
# Expected result: 89259.685614769
Args:#
start_date: A rank 1DateTensorspecifying the starting dates of the accrual of the first coupon of the cashflow stream. The shape of the input correspond to the numbercof streams being created.end_date: A rank 1DateTensorspecifying the end dates for accrual of the last coupon in each cashflow stream. The shape of the input should be the same as that ofstart_date.coupon_spec: A scalar or a list ofFloatCouponSpecsspecifying the details of the coupon payment for the cashflow stream. If specified as a list then the length of the list should be the same as the number of streams being created and each coupon within the list must have the same daycount_convention and businessday_rule. If specified as a scalar, then the elements of the namedtuple must be of the same shape as (or compatible to) the shape ofstart_date.first_coupon_date: An optional rank 1DateTensorspecifying the payment dates of the first coupon of the cashflow stream. Use this input for cashflows with irregular first coupon. Default value: None which implies regular first coupon.penultimate_coupon_date: An optional rank 1DateTensorspecifying the payment date of the penultimate (next to last) coupon of the cashflow stream. Use this input for cashflows with irregular last coupon. Default value: None which implies regular last coupon.dtype:tf.Dtype. If supplied the dtype for the real variables or ops either supplied to the FloatingCashflowStream object or created by the object. Default value: None which maps to the default dtype inferred by TensorFlow.name: Python str. The name to give to the ops created by this class. Default value:Nonewhich maps to ‘floating_cashflow_stream’.
Attributes:#
notional
Methods#
price
price(
valuation_date, market, model=None, pricing_context=None, name=None
)
Returns the present value of the stream on the valuation date.
Args:#
valuation_date: A scalarDateTensorspecifying the date on which valuation is being desired.market: A namedtuple of typeInterestRateMarketwhich contains the necessary information for pricing the cashflow stream.model: Reserved for future use.pricing_context: Additional context relevant for pricing.name: Python str. The name to give to the ops created by this function. Default value:Nonewhich maps to ‘price’.
Returns:#
A Rank 1 Tensor of real type containing the modeled price of each stream
contract based on the input market data.