floatbybk

Ценовое долговое обязательство с плавающей ставкой от Черного-Karasinski дерева процентной ставки

Описание

пример

[Price,PriceTree] = floatbybk(BKTree,Spread,Settle,Maturity) оценивает долговое обязательство с плавающей ставкой от Черного-Karasinski дерева процентной ставки.

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

пример

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

Примеры

свернуть все

Оцените долговое обязательство с плавающей ставкой на 20 пунктов с помощью Черного-Karasinski дерева процентной ставки.

Загрузите файл deriv.mat, который обеспечивает BKTree. 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, не выравниваются с датами потока наличности.

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

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{:});

Эта ошибка указывает, что не возможно решить, что применимый уровень раньше вычислял выплату в даты сброса, учитывая, что применимый необходимый уровень не может быть вычислен (информация была потеряна из-за recombination древовидных узлов). Отметьте, если период сброса для 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- 1 вектор.

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

  •  0 = фактический/фактический

  •  1 = 30/360 (СИА)

  •  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 = ШИНА/252

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

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

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

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

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

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

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

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

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

  • 1 = Установите правило о, подразумевая, что платежный день всегда является прошлым фактическим днем месяца.

Типы данных: логический

Отметьте, чтобы настроить потоки наличности на основе фактического дневного количества периода в виде разделенной запятой пары, состоящей из 'AdjustCashFlowsBasis' и NINST- 1 вектор из logicals со значениями 0 (FALSE) или 1 TRUE.

Типы данных: логический

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

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

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

  • actual — Нерабочие дни эффективно проигнорированы. Потоки наличности, которые падают в нерабочие дни, приняты, чтобы быть распределенными в фактическую дату.

  • follow — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в следующий рабочий день.

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

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

Больше о

свернуть все

Долговое обязательство с плавающей ставкой

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

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