exponenta event banner

floatbyhw

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

Описание

пример

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

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

пример

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

Примеры

свернуть все

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

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

load deriv.mat;

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

Spread = 20;
Settle = '01-Jan-2004';
Maturity = '01-Jan-2007';

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

Price = floatbyhw(HWTree, Spread, Settle, Maturity)
Price = 100.5618

Цена амортизирующей ноты с плавающей ставкой с использованием 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}};

Создайте дерево аппаратных средств и предположим, что волатильность составляет 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;

HWVolSpec = hwvolspec(RateSpec.ValuationDate, VolDates, VolCurve,... 
AlphaDates, AlphaCurve);
HWTimeSpec = hwtimespec(RateSpec.ValuationDate, VolDates, Compounding);
HWT = hwtree(HWVolSpec, RateSpec, HWTimeSpec);

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

Price = floatbyhw(HWT, 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);

Создайте дерево аппаратных средств и предположим, что волатильность составит 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;

HWVolSpec = hwvolspec(RateSpec.ValuationDate, VolDates, VolCurve,... 
AlphaDates, AlphaCurve);
HWTimeSpec = hwtimespec(RateSpec.ValuationDate, VolDates, Compounding);
HWT = hwtree(HWVolSpec, RateSpec, HWTimeSpec);

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

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

Рассчитайте цену ванильного флоатера.

Price = floatbyhw(HWT, Spread, Settle, Maturity)
Price = 100.3680

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

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

  102.0458
  100.9299

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

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

ValuationDate = '01-Sep-2013'; 
Rates = [0.0001; 0.0001; 0.0010; 0.0015]; 
EndDates = ['01-Dec-2013'; '01-Mar-2014'; '01-Jun-2014'; '01-Sep-2014'];

Создать RateSpec.

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

Создайте дерево аппаратных средств.

Volcurve = 0.1;                         
Alpha = 0.01; 
HWVolatilitySpec = hwvolspec(RateSpec.ValuationDate, ... 
                             EndDates, Volcurve,... 
                             EndDates, Alpha); 

HWTimeSpec = hwtimespec(RateSpec.ValuationDate, EndDates, 1); 

HWT = hwtree(HWVolatilitySpec, RateSpec, HWTimeSpec); 

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

Spread = 10; 
Settle = '01-Sep-2013'; 
Maturity = '01-Jun-2014'; 
Reset = 2; 

Price = floatbyhw(HWT, Spread, Settle, Maturity, 'FloatReset', Reset)
Error using floatengbytrintree (line 318)
Instrument '1 ' has cash flow dates that span across tree nodes.

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

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

Для восстановления после этой ошибки создайте дерево, которое выстраивается в линию с инструментом.

Basis = intenvget(RateSpec, 'Basis');
EOM = intenvget(RateSpec, 'EndMonthRule');
resetDates = cfdates(ValuationDate, Maturity, Reset, Basis, EOM);
HWTimeSpec = hwtimespec(RateSpec.ValuationDate,resetDates, Reset);
HWT = hwtree(HWVolatilitySpec, RateSpec, HWTimeSpec);

Price = floatbyhw(HWT, Spread, RateSpec.ValuationDate, ...
                  Maturity, 'FloatReset', Reset)
Price =

  100.0748

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

свернуть все

Древовидная структура процентных ставок, созданная hwtree

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

Количество базисных пунктов над эталонной ставкой, указанное как NINSTоколо-1 вектор.

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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 содержит массивы вероятностей. Каждый элемент массива ячеек содержит вероятности перехода вверх, посередине и вниз для каждого узла уровня.

Подробнее

свернуть все

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

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

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