floatbybk

Ценовая нота с плавающей ставкой из дерева процентных ставок Black-Karasinski

Описание

пример

[Price,PriceTree] = floatbybk(BKTree,Spread,Settle,Maturity) цены на купюру с плавающей ставкой из дерева процентных ставок Black-Karasinski.

floatbybk вычисляет цены ванильных купюр с плавающей ставкой, амортизирующих купюр с плавающей ставкой, купюр с ограниченной плавающей ставкой, купюр с плавающей ставкой и банкнот с фиксированной плавающей ставкой.

пример

[Price,PriceTree] = floatbybk(___,Name,Value) добавляет дополнительные аргументы пары "имя-значение".

Примеры

свернуть все

Оцените 20-базовую точку с плавающей ставкой с помощью дерева процентных ставок Black-Karasinski.

Загрузите файл deriv.mat, который обеспечивает BKTree. The BKTree структура содержит информацию о времени и процентной ставке, необходимую для оценки банкноты.

load deriv.mat;

Определите примечание с плавающей скоростью с помощью необходимых аргументов. Другие аргументы используют значения по умолчанию.

Spread = 20;
Settle = '01-Jan-2005';
Maturity = '01-Jan-2006';

Использование floatbybk для вычисления цены примечания.

Price = floatbybk(BKTree, Spread, Settle, Maturity)
Warning: Floating range notes are valued at Tree ValuationDate rather than Settle.
Price = 100.3825

Оцените амортизирующую ноту с плавающей ставкой с помощью Principal входной параметр для определения графика амортизации.

Создайте RateSpec.

Rates = [0.03583; 0.042147; 0.047345; 0.052707; 0.054302];
ValuationDate = '15-Nov-2011';
StartDates = ValuationDate;
EndDates = {'15-Nov-2012';'15-Nov-2013';'15-Nov-2014' ;'15-Nov-2015';'15-Nov-2016'};
Compounding = 1;
RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,...
'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: [5x1 double]
            Rates: [5x1 double]
         EndTimes: [5x1 double]
       StartTimes: [5x1 double]
         EndDates: [5x1 double]
       StartDates: 734822
    ValuationDate: 734822
            Basis: 0
     EndMonthRule: 1

Создайте инструмент с плавающей скоростью с помощью следующих данных:

Settle ='15-Nov-2011';
Maturity = '15-Nov-2015';
Spread = 15;

Задайте график амортизации примечания с плавающей скоростью.

Principal ={{'15-Nov-2012' 100;'15-Nov-2013' 70;'15-Nov-2014' 40;'15-Nov-2015' 10}};

Создайте дерево BK и примите, что волатильность составляет 10%.

VolDates = ['15-Nov-2012'; '15-Nov-2013';'15-Nov-2014';'15-Nov-2015';'15-Nov-2016';'15-Nov-2017'];
VolCurve = 0.1;
AlphaDates = '15-Nov-2017';
AlphaCurve = 0.1;

BKVolSpec = bkvolspec(RateSpec.ValuationDate, VolDates, VolCurve,... 
AlphaDates, AlphaCurve);
BKTimeSpec = bktimespec(RateSpec.ValuationDate, VolDates, Compounding);
BKT = bktree(BKVolSpec, RateSpec, BKTimeSpec);

Вычислите цену амортизирующей ноты с плавающей скоростью.

Price = floatbybk(BKT, Spread, Settle, Maturity, 'Principal', Principal)
Price = 100.3059

Оцените ошейник с запиской с плавающей ставкой с помощью CapRate и FloorRate входной параметр для определения ценообразования ошейника.

Оцените портфель записок с плавающей ставкой с помощью следующих данных:

Rates = [0.0287; 0.03024; 0.03345; 0.03861; 0.04033];
ValuationDate = '1-April-2012';
StartDates = ValuationDate;
EndDates = {'1-April-2013';'1-April-2014';'1-April-2015' ;...
'1-April-2016';'1-April-2017'};
Compounding = 1;

Создайте RateSpec.

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

Создайте дерево BK и примите волатильность 5%.

VolDates = ['1-April-2013';'1-April-2014';'1-April-2015';'1-April-2016';...
'1-April-2017';'1-April-2018'];
VolCurve = 0.05;
AlphaDates = '15-Nov-2018';
AlphaCurve = 0.1;

BKVolSpec = bkvolspec(RateSpec.ValuationDate, VolDates, VolCurve,... 
AlphaDates, AlphaCurve);
BKTimeSpec = bktimespec(RateSpec.ValuationDate, VolDates, Compounding);
BKT = bktree(BKVolSpec, RateSpec, BKTimeSpec);

Создайте инструмент ноты с плавающей скоростью.

Settle ='1-April-2012';
Maturity = '1-April-2016';
Spread = [15;10];
Principal = 100;

Рассчитать цену двух ванильных плавучих аппаратов.

Price = floatbybk(BKT, Spread, Settle, Maturity)
Price = 2×1

  100.5519
  100.3680

Вычислите цену расчетных нот с плавающей ставкой.

CapStrike = {{'1-April-2013' 0.045; '1-April-2014' 0.05;...
'1-April-2015' 0.06}; 0.06};
         
FloorStrike = {{'1-April-2013' 0.035; '1-April-2014' 0.04;...
'1-April-2015' 0.05}; 0.03};
PriceCollared = floatbybk(BKT, Spread, Settle, Maturity,...
'CapRate', CapStrike,'FloorRate', FloorStrike)
PriceCollared = 2×1

  102.8537
  100.4918

При использовании floatbybk для ценовых нот с плавающей ставкой существуют случаи, когда даты, указанные в дереве BK Time Specs, не совпадают с датами денежного потока.

Ценовые ноты с плавающей ставкой с использованием следующих данных:

ValuationDate      = '13-Sep-2013'; 
ForwardRatesVector = [ 0.0001; 0.0001; 0.0010; 0.0015]; 
EndDatesVector     = ['13-Dec-2013'; '14-Mar-2014'; '13-Jun-2014'; '13-Sep-2014'];

Создайте RateSpec.

RateSpec = intenvset('ValuationDate',ValuationDate,'StartDates',...
ValuationDate,'EndDates',EndDatesVector,'Rates',ForwardRatesVector,'Compounding', 1);

Создайте дерево BK.

Volcurve         = 0.1;                         
Alpha            = 0.01; 
BKVolatilitySpec = bkvolspec(RateSpec.ValuationDate, ... 
                  EndDatesVector, Volcurve,... 
                  EndDatesVector, Alpha); 

BKTimeSpec = bktimespec(RateSpec.ValuationDate, EndDatesVector, 1); 

BKT = bktree(BKVolatilitySpec, RateSpec, BKTimeSpec); 

Создайте инструмент ноты с плавающей скоростью с помощью следующих данных;

Spread      = 0; 
Maturity    = '13-Jun-2014'; 
reset = 4; 

Вычислите цену примечания с плавающей ставкой.

Price = floatbybk(BKT, Spread, RateSpec.ValuationDate,...
Maturity, 'FloatReset', reset)
Warning: Not all cash flows are aligned with the tree. Result will be approximated. 
> In floatengbytrintree at 214
  In floatbybk at 136 
Error using floatengbytrintree (line 319)
Instrument '1 ' has cash flow dates that span across tree nodes.

Error in floatbybk (line 136)
[Price, PriceTree, CFTree] = floatengbytrintree(BKTree, Spread, Settle, Maturity, OArgs{:});

Эта ошибка указывает, что невозможно определить применимую ставку, используемую для вычисления окупаемости в даты сброса, учитывая, что необходимая применимая ставка не может быть вычислена (информация была потеряна из-за рекомбинации узлов дерева). Обратите внимание, что если период сброса для FRN охватывает более одного уровня дерева, вычисление платежа становится невозможным из-за рекомбинации дерева. То есть древовидный путь, соединяющий две последовательные даты сброса, не может быть однозначно определен, поскольку существует несколько возможных путей для соединения двух дат платежа. Самым простым решением является размещение древовидных уровней на датах денежного потока инструмента, что осуществляется путем определения BKTimeSpec. Также допустимо иметь даты сброса между уровнями дерева, если на уровнях дерева существуют даты сброса.

Чтобы восстановить эту ошибку, создайте дерево, которое выстроится вместе с инструментом.

Basis = intenvget(RateSpec, 'Basis');
EOM = intenvget(RateSpec, 'EndMonthRule');
resetDates = cfdates(ValuationDate, Maturity,reset,Basis,EOM);
BKTimeSpec = bktimespec(RateSpec.ValuationDate,resetDates,reset);
BKT        = bktree(BKVolatilitySpec, RateSpec, BKTimeSpec);

Price      = floatbybk(BKT, Spread, RateSpec.ValuationDate, ...
             Maturity, 'FloatReset', reset)
Price =

  100.0004

Входные параметры

свернуть все

Древовидная структура процентной ставки, созданная bktree

Типы данных: struct

Количество базисных точек над скоростью ссылки, заданное как NINST-by- 1 вектор.

Типы данных: double

Дата расчета, заданная в виде скаляра или NINST-by- 1 вектор серийных номеров дат или векторов символов дат.

The Settle дата для каждой ноты с плавающей скоростью устанавливается в ValuationDate дерева BK. Аргумент ноты с плавающей скоростью Settle игнорируется.

Типы данных: char | double

Дата зрелости, заданная как NINST-by- 1 вектор серийных номеров дат или векторов символов дат, представляющих дату погашения для каждой ноты с плавающей скоростью.

Типы данных: char | double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: [Price,PriceTree] = floatbybk(BKTree,Spread,Settle,Maturity,'Basis',3)

Частота платежей в год, заданная как разделенная разделенными запятой парами, состоящая из 'FloatReset' и a NINST-by- 1 вектор.

Примечание

Платежи по купюрам с плавающей ставкой (FRN) определяются эффективной процентной ставкой между датами сброса. Если период сброса для FRN охватывает более одного уровня дерева, вычисление платежа становится невозможным из-за рекомбинантного характера дерева. То есть древовидный путь, соединяющий две последовательные даты сброса, не может быть однозначно определен, поскольку существует несколько возможных путей для соединения двух дат платежа.

Типы данных: double

Базис отсчета дней, представляющий базис, используемый при аннуализации входа дерева прямой скорости, заданный как разделенная запятой пара, состоящий из 'Basis' и a NINST-by- 1 вектор.

  • 0 = факт/факт

  • 1 = 30/360 (SIA)

  • 2 = факт/360

  • 3 = факт/365

  • 4 = 30/360 (PSA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (европейский)

  • 7 = факт/365 (японский)

  • 8 = факт/факт (ICMA)

  • 9 = факт/360 (ICMA)

  • 10 = факт/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = факт/365 (ISDA)

  • 13 = BUS/252

Для получения дополнительной информации см. раздел Базиса.

Типы данных: double

Условные основные суммы, заданные как разделенная разделенными запятой парами, состоящая из 'Principal' и вектор или массив ячеек.

Principal принимает NINST-by- 1 вектор или NINST-by- 1 массив ячеек, где каждый элемент массива ячеек является NumDates-by- 2 массив ячеек и первый столбец - даты, а второй - связанное с ним условное основное значение. Дата указывает на последний день действия основного значения.

Типы данных: cell | double

Структура опций ценообразования производных, заданная как разделенная разделенными запятой парами, состоящая из 'Options' и структуру, использующую derivset.

Типы данных: struct

Флаг правила конца месяца для генерации дат при Maturity - дата конца месяца для месяца, имеющего 30 или менее дней, заданная как разделенная разделенными запятой парами, состоящая из 'EndMonthRule' и неотрицательное целое число [0, 1] использование NINST-by- 1 вектор.

  • 0 = Игнорировать правило, означающее, что дата платежа всегда является одним и тем же числовым днем месяца.

  • 1 = Установите правило, означающее, что дата платежа всегда является последним фактическим днем месяца.

Типы данных: logical

Флаг для корректировки денежных потоков на основе фактического количества дней периода, заданный как разделенная разделенными запятой парами, состоящая из 'AdjustCashFlowsBasis' и a NINST-by- 1 вектор логических единиц со значениями 0 (false) или 1 Правда.

Типы данных: logical

Праздничные дни, используемые в вычислении рабочих дней, заданные как разделенная разделенными запятой парами, состоящая из 'Holidays' и номера дат MATLAB с использованием NHolidays-by- 1 вектор.

Типы данных: double

Соглашения о рабочих днях, заданные как разделенная разделенными запятой парами, состоящая из 'BusinessDayConvention' и вектор символов или N-by- 1 массив ячеек из векторов символов соглашений о рабочих днях. Выбор для соглашения о рабочих днях определяет режим обработки нерабочих дней. Нерабочие дни определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (например, установленные законом праздничные дни). Значения:

  • actual - Нерабочие дни фактически игнорируются. Денежные потоки, которые приходятся на нерабочие дни, считаются распределенными на фактическую дату.

  • follow - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день.

  • modifiedfollow - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, то вместо этого принимается предыдущий рабочий день.

  • previous - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными в предыдущий рабочий день.

  • modifiedprevious - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в другом месяце, вместо этого принимается следующий рабочий день.

Типы данных: char | cell

Годовая скорость прописной буквы, заданная как разделенная разделенными запятой парами, состоящая из 'CapRate' и a NINST-by- 1 десятичный годовой темп или NINST-by- 1 массив ячеек, где каждый элемент является NumDates-by- 2 массив ячеек, и первый столбец массива ячеек является датами, а второй столбец - связанными скоростями прописной буквы. Дата указывает на последний день действия предельной ставки.

Типы данных: double | cell

Годовая минимальная ставка, заданная как разделенная разделенными запятой парами, состоящая из 'FloorRate' и a NINST-by- 1 десятичный годовой темп или NINST-by- 1 массив ячеек, где каждый элемент является NumDates-by- 2 массив ячеек, и первый столбец массива ячеек является датами, а второй столбец - связанными скоростями этажа. Дата указывает на последний день действия минимальной ставки.

Типы данных: double | cell

Выходные аргументы

свернуть все

Ожидаемые цены ноты с плавающей ставкой в момент 0, возвращенные как NINST-by- 1 вектор.

Древовидная структура цен на приборы, возвращаемая как структура MATLAB деревьев, содержащая векторы цен на приборы и начисленных процентов, и вектор времени наблюдения для каждого узла. Внутри PriceTree:

  • PriceTree.PTree содержит чистые цены.

  • PriceTree.AITree содержит начисленные проценты.

  • PriceTree.tObs содержит время наблюдения.

  • PriceTree.Connect содержит векторы связности. Каждый элемент массива ячеек описывает, как узлы на этом уровне соединяются с следующим. Для заданного уровня дерева существуют NumNodes элементы в векторе, и они содержат индекс узла на следующем уровне, с которым соединяется средняя ветвь. Вычитание 1 из этого значения указывает, где соединяется восходящая ветвь, и добавление 1 указывает, где соединяется нисходящая ветвь.

  • PriceTree.Probs содержит массивы вероятностей. Каждый элемент массива ячеек содержит вероятности перехода вверх, посередине и вниз для каждого узла уровня.

Подробнее о

свернуть все

Примечание с плавающей скоростью

floating-rate note является обеспечением, подобным облигации, но процентная ставка банкноты периодически сбрасывается относительно ссылки индекса ставки, чтобы отразить колебания рыночных процентных ставок.

Представлено до R2006a