This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


Price range floating note using Black-Karasinski tree


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


Price = rangefloatbybk(BKTree,Spread,Settle,Maturity,
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


Interest-rate tree structure created by bktree.


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


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.


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


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.


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/365 (ISDA)

  • 13 = BUS/252

For more information, see basis.

Default: 0 (actual/actual)


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

Default: 1 (in effect)


Structure created with derivset containing derivatives pricing options.

Default: None


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

Default: 100


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

Default: 1

Output Arguments


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


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.


collapse all

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 =


Related Examples

More About

collapse 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 direct exposure to the reference rate. In return for the drawback that no interest is paid for the time the range is left, they offer higher coupon rates than comparable standard products, like vanilla floating notes.


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

Introduced in R2012a

Was this topic helpful?