floatbyhjm

Ценовое долговое обязательство с плавающей ставкой от дерева процентной ставки Хита-Джарроу-Мортона

Синтаксис

[Price,PriceTree] = floatbyhjm(HJMTree,Spread,Settle,Maturity)
[Price,PriceTree] = floatbyhjm(___,Name,Value)

Описание

пример

[Price,PriceTree] = floatbyhjm(HJMTree,Spread,Settle,Maturity) оценивает долговое обязательство с плавающей ставкой от дерева процентной ставки Хита-Джарроу-Мортона.

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

пример

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

Примеры

свернуть все

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

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

load deriv.mat;

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

Spread = 20;
Settle = '01-Jan-2000';
Maturity = '01-Jan-2003';

Используйте floatbyhjm, чтобы вычислить цену примечания.

Price = floatbyhjm(HJMTree, Spread, Settle, Maturity)
Price = 100.5529

Оцените долговое обязательство с плавающей ставкой амортизации с помощью входного параметра 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}};

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

MatDates = {'15-Nov-2012'; '15-Nov-2013';'15-Nov-2014';'15-Nov-2015';'15-Nov-2016';'15-Nov-2017'};
HJMTimeSpec = hjmtimespec(RateSpec.ValuationDate, MatDates);
Volatility = [.10; .08; .06; .04];
CurveTerm = [ 1; 2; 3; 4];
HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6);
HJMT = hjmtree(HJMVolSpec,RateSpec,HJMTimeSpec);

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

Price = floatbyhjm(HJMT, 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);

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

MatDates = {'1-April-2013'; '1-April-2014';'1-April-2015';...
'1-April-2016';'1-April-2017';'1-April-2018'};
HJMTimeSpec = hjmtimespec(RateSpec.ValuationDate, MatDates);
Volatility = [.10; .08; .06; .04];
CurveTerm = [ 1; 2; 3; 4];
HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6);
HJMT = hjmtree(HJMVolSpec,RateSpec,HJMTimeSpec);

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

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

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

CapStrike = [0.04;0.055];
PriceCapped = floatbyhjm(HJMT, Spread, Settle, Maturity,...
'CapRate', CapStrike)
PriceCapped = 2×1

   98.9986
  100.2051

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

FloorStrike = [0.035;0.040];
PriceCollared = floatbyhjm(HJMT, Spread, Settle, Maturity,...
'CapRate', CapStrike, 'FloorRate', FloorStrike)
PriceCollared = 2×1

   99.9246
  102.2321

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

свернуть все

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

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

Количество пунктов по ссылочному уровню, заданному как NINST-by-1 вектор.

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Дневное основание количества, представляющее основание, используемое при пересчитывании на год входного дерева форвардного курса, заданного как пара, разделенная запятой, состоящая из 'Basis' и NINST-by-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-by-1 вектор или NINST-by-1 массив ячеек, где каждым элементом массива ячеек является NumDates-by-2 массив ячеек, и первый столбец является датами, и второй столбец является своим связанным отвлеченным основным значением. Дата указывает в последний день, что основное значение допустимо.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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