Documentation Center

  • Trial Software
  • Product Updates

rangefloatbybk

Price range floating note using Black-Karasinski tree

Syntax

Price = rangefloatbybk(BKTree,Spread,Settle,Maturity,
RateSched)
[Price,PriceTree] = rangefloatbybk(BKTree,Spread,Settle,
Maturity, RateSched, Name,Value)

Description

Price = rangefloatbybk(BKTree,Spread,Settle,Maturity,
RateSched)
calculates the price of the range note instrument at the valuation date using a BK model.

[Price,PriceTree] = rangefloatbybk(BKTree,Spread,Settle,
Maturity, RateSched, Name,Value)
calculates the price of the range note instrument at the valuation date and the price evolution for one or more range instruments using a BK model with additional options specified by one or more Name,Value pair arguments.

Input Arguments

BKTree

Interest-rate tree structure created by bktree.

Spread

NINST-by-1 vector of the number of basis points over the reference rate.

Settle

NINST-by-1 vector of dates representing the settle date of the range floating note.

    Note:   The Settle date for every range floating instrument is set to the ValuationDate of the BK tree. The range floating note argument Settle is ignored.

Maturity

NINST-by-1 vector of dates representing the maturity date of the floating-rate note.

RateSched

NINST-by-1 vector of structures representing the range of rates within which cash flows are nonzero. Each element of the structure array contains two fields:

  • RateSched.DatesNDates-by-1 cell array of dates corresponding to the range schedule.

  • RateSched.RatesNDates-by-2 array with the first column containing the lower bound of the range and the second column containing the upper bound of the range. Cash flow for date RateSched.Dates(n) is nonzero for rates in the range RateSched.Rates(n,1) < Rate < RateSched.Rate (n,2).

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

'Basis'

NINST-by-1 vector representing the day-count basis used when annualizing the input forward rate tree.

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (BMA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ICMA)

  • 9 = actual/360 (ICMA)

  • 10 = actual/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = actual/actual (ISDA)

  • 13 = BUS/252

For more information, see basis.

Default: 0 (actual/actual)

'EndMonthRule'

NINST-by-1 vector for end-of-month rule. Values are 1 (in effect) and 0 (not in effect).

Default: 1 (in effect)

'Options'

Structure created with derivset containing derivatives pricing options.

Default: None

'Principal'

NINST-by-1 vector of the notional principal amount.

Default: 100

'Reset'

NINST-by-1 vector representing the frequency of payments per year.

Default: 1

Output Arguments

Price

NINST-by-1 vector for expected prices at time 0.

PriceTree

Structure containing trees of vectors of instrument prices and accrued interest, and a vector of observation times for each node. Values are:

  • PriceTree.PTree contains the clean prices.

  • PriceTree.AITree contains the accrued interest.

  • PriceTree.tObs contains the observation times.

Examples

expand all

Compute the Price of a Range Note Using a Black-Karasinski Tree

This example shows how to compute the price of a range note using a Black-Karasinski tree with the following interest-rate term structure data.

Rates = [0.035; 0.042147; 0.047345; 0.052707];
ValuationDate = 'Jan-1-2011';
StartDates = ValuationDate;
EndDates = {'Jan-1-2012'; 'Jan-1-2013'; 'Jan-1-2014'; 'Jan-1-2015'};
Compounding = 1;

% define RateSpec
RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,...
'EndDates', EndDates, 'Rates', Rates, 'Compounding', Compounding);

% range note instrument matures in Jan-1-2014 and has the following RateSchedule:
Spread = 100;
Settle = 'Jan-1-2011';
Maturity = 'Jan-1-2014';
RateSched(1).Dates = {'Jan-1-2012'; 'Jan-1-2013'  ; 'Jan-1-2014'};
RateSched(1).Rates = [0.045 0.055 ; 0.0525  0.0675; 0.06 0.08];

% data to build the tree is as follows:
VolDates = ['1-Jan-2012'; '1-Jan-2013'; '1-Jan-2014';'1-Jan-2015'];
VolCurve = 0.01;
AlphaDates = '01-01-2015';
AlphaCurve = 0.1;

BKVS = bkvolspec(RS.ValuationDate, VolDates, VolCurve,...
AlphaDates, AlphaCurve);
BKTS = bktimespec(RS.ValuationDate, VolDates, Compounding);
BKT = bktree(BKVS, RS, BKTS);

% price the instrument
Price = rangefloatbybk(BKT, Spread, Settle, Maturity, RateSched)
Price =

  102.7574

More About

expand all

Range Note Instrument

A range note is a structured (market-linked) security whose coupon rate is equal to the reference rate as long as the reference rate is within a certain range. If the reference rate is outside of the range, the coupon rate is 0 for that period. This type of instrument entitles the holder to cash flows that depend on the level of some reference interest rate and are floored to be positive. The note holder gets directs exposure to the reference rate. In return for the drawback that no interest will be paid for the time the range is left, they offer higher coupon rates than comparable standard products, like vanilla floating notes.

References

Jarrow, Robert, Modelling Fixed Income Securities and Interest Rate Options, Stanford Economics and Finance, 2nd edition, 2002.

See Also

| | | | | | | | | |

Was this topic helpful?