zero2pyld

Кривая выражения, заданная нулевая кривая

В R2017b изменена спецификация необязательных входных параметров. Хотя синтаксис предыдущих упорядоченных входов все еще поддерживается, он может больше не поддерживаться в будущем релизе. Используйте новые необязательные входы пары "имя-значение": InputCompounding, InputBasis, OutputCompounding, и OutputBasis.

Описание

пример

[ParRates,CurveDates] = zero2pyld(ZeroRates,CurveDates,Settle) возвращает кривую номинального выражения, заданную нулевую кривую и ее даты погашения. Если либо вход для CurveDates или Settle является массивом datetime, CurveDates возвращается как массив datetime. В противном случае CurveDates возвращается как серийный номер даты. ParRates является тем же самым для любого из этих типов входных данных.

пример

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

Примеры

свернуть все

Учитывая нулевую кривую для набора дат погашения, дату расчета и ежегодное компаундирование для кривого входа нуля и ежемесячное компаундирование для выхода номинальных ставок, вычислите диаграмму выражения.

ZeroRates = [0.0457
             0.0487
             0.0506
             0.0507
             0.0505
             0.0504
             0.0506
             0.0516
             0.0539
             0.0530];

CurveDates = [datenum('06-Nov-2000')
              datenum('11-Dec-2000')
              datenum('15-Jan-2001')
              datenum('05-Feb-2001')
              datenum('04-Mar-2001')
              datenum('02-Apr-2001')
              datenum('30-Apr-2001')
              datenum('25-Jun-2001')
              datenum('04-Sep-2001')
              datenum('12-Nov-2001')];

Settle = datenum('03-Nov-2000');
InputCompounding = 12;
InputBasis = 2;
OutputCompounding = 1;
OutputBasis = 2;

[ParRates, CurveDates] = zero2pyld(ZeroRates, CurveDates,...  
Settle, 'InputCompounding',1,'InputBasis',1,'OutputCompounding',12,'OutputBasis',1)
ParRates = 10×1

    0.0448
    0.0477
    0.0495
    0.0496
    0.0494
    0.0493
    0.0495
    0.0504
    0.0526
    0.0517

CurveDates = 10×1

      730796
      730831
      730866
      730887
      730914
      730943
      730971
      731027
      731098
      731167

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

ZeroRates = [0.0457
0.0487
0.0506
0.0507
0.0505
0.0504
0.0506
0.0516
0.0539
0.0530];
CurveDates = [datenum('06-Nov-2000')
datenum('11-Dec-2000')
datenum('15-Jan-2001')
datenum('05-Feb-2001')
datenum('04-Mar-2001')
datenum('02-Apr-2001')
datenum('30-Apr-2001')
datenum('25-Jun-2001')
datenum('04-Sep-2001')
datenum('12-Nov-2001')];
Settle = datenum('03-Nov-2000');
InputCompounding = 12;
InputBasis = 2;
OutputCompounding = 1;
OutputBasis = 2;

CurveDates = datetime(CurveDates, 'ConvertFrom', 'datenum','Locale','en_US');
Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US');
[ParRates, CurveDates] = zero2pyld(ZeroRates, CurveDates,...
Settle, 'InputCompounding',12,'InputBasis',2,'OutputCompounding',1,'OutputBasis',2)
ParRates = 10×1

   -0.0436
    0.0611
    0.0579
    0.0567
    0.0550
    0.0543
    0.0541
    0.0546
    0.0565
    0.0561

CurveDates = 10x1 datetime
   06-Nov-2000
   11-Dec-2000
   15-Jan-2001
   05-Feb-2001
   04-Mar-2001
   02-Apr-2001
   30-Apr-2001
   25-Jun-2001
   04-Sep-2001
   12-Nov-2001

Учитывая следующую нулевую кривую и ее даты погашения, верните ParRates.

Settle = datenum('01-Feb-2013');

CurveDates = [datenum('01-Feb-2014')
    datenum('01-Feb-2015')
    datenum('01-Feb-2016')
    datenum('01-Feb-2018')
    datenum('01-Feb-2020')
    datenum('01-Feb-2023')
    datenum('01-Feb-2033')
    datenum('01-Feb-2043')];

OriginalZeroRates = [.11 0.30 0.64 1.44 2.07 2.61 3.29 3.55]'/100;

OutputCompounding = 1;
OutputBasis = 0;
InputCompounding = 1;
InputBasis = 0;

ParRates = zero2pyld(OriginalZeroRates, CurveDates, Settle, ...
'OutputCompounding', OutputCompounding, 'OutputBasis', OutputBasis, ...
'InputCompounding', InputCompounding, 'InputBasis', InputBasis)
ParRates = 8×1

    0.0011
    0.0030
    0.0064
    0.0142
    0.0202
    0.0251
    0.0310
    0.0331

Для ParRates, используйте pyld2zero функция для возврата ZeroRatesOut и определите ошибку округления.

ZeroRatesOut = pyld2zero(ParRates, CurveDates, Settle, ...
'OutputCompounding', OutputCompounding, 'OutputBasis', OutputBasis, ...
'InputCompounding', InputCompounding, 'InputBasis', InputBasis)
ZeroRatesOut = 8×1

    0.0011
    0.0030
    0.0064
    0.0144
    0.0207
    0.0261
    0.0329
    0.0355

max(abs(OriginalZeroRates - ZeroRatesOut)) % Roundtrip error
ans = 1.4919e-16

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

свернуть все

Годовые нулевые ставки, указанные как NUMBONDS-by- 1 вектор с использованием десятичного числа дробей. В совокупности ставки составляют подразумеваемую нулевую кривую для инвестиционного горизонта, представленного CurveDates.

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

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

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

Общая дата расчета для входных ZeroRates, заданный как серийные номера дат, векторы символов даты или массивы datetime.

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

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

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

Пример: [ParRates,CurveDates] = zero2pyld(ZeroRates,CurveDates, Settle,'OutputCompounding',3,'OutputBasis',5,'InputCompounding',4,'InputBasis',5)

Частота компаундирования выхода ParRates, заданная как разделенная разделенными запятой парами, состоящая из 'OutputCompounding' и допустимые значения:

  • 1 - Ежегодное компаундирование

  • 2 - Полугодовое компаундирование (по умолчанию)

  • 3 - Смешивание три раза в год

  • 4 - ежеквартальное компаундирование

  • 6 - Двухмесячное компаундирование

  • 12 - Ежемесячное компаундирование

Примечание

  • Если InputCompounding является 1, 2, 3, 4, 6, или 12 и OutputCompounding не задано, значение InputCompounding используется.

  • Если InputCompounding является 0 (простой), -1 (непрерывно), или 365 (ежедневно), действительный OutputCompounding также должно быть задано значение.

  • Если либо InputCompounding или OutputCompounding не заданы, значение по умолчанию 2 (полугодовой) для обоих.

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

Базис подсчета дней выхода ParRates, заданная как разделенная разделенными запятой парами, состоящая из 'OutputBasis' и допустимые значения:

  • 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

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

Примечание

Если OutputBasis не задан, тогда OutputBasis присваивается значение, заданное для InputBasis. Если либо InputBasis или OutputBasis не заданы, значение по умолчанию 0 (фактический/фактический) для обоих.

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

Частота компаундирования входа ZeroRates, заданная как разделенная разделенными запятой парами, состоящая из 'InputCompounding' и допустимые значения:

  • 0 - Простой интерес (без компаундирования)

  • 1 - Ежегодное компаундирование

  • 2 - Полугодовое компаундирование (по умолчанию)

  • 3 - Смешивание три раза в год

  • 4 - ежеквартальное компаундирование

  • 6 - Двухмесячное компаундирование

  • 12 - Ежемесячное компаундирование

  • 365 - Ежедневное компаундирование

  • -1 - Непрерывное компаундирование

Примечание

  • Если InputCompounding установлено в 0 (простой), -1 (непрерывно), или 365 (ежедневно), OutputCompounding также должен быть задан с использованием допустимого значения.

  • Если InputCompounding не задан, тогда InputCompounding присваивается значение, заданное для OutputCompounding.

  • Если либо InputCompounding или OutputCompounding не заданы, значение по умолчанию 2 (полугодовой) для обоих.

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

Базис подсчета дней для входа ZeroRates, заданная как разделенная разделенными запятой парами, состоящая из 'InputBasis' и допустимые значения:

  • 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

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

Примечание

Если InputBasis не задан, тогда InputBasis присваивается значение, заданное для OutputBasis. Если либо InputBasis или Outputbasis не заданы, значение по умолчанию 0 (фактический/фактический) для обоих.

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

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

свернуть все

Номинальные ставки купона по облигациям, возвращенные как NUMBONDS-by- 1 числовой вектор. ParRates упорядочены по возрастающей зрелости.

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

ParRates выражаются как серийные номера дат (по умолчанию) или datetimes (если CurveDates или Settle являются массивами datetime). CurveDates упорядочены по возрастающей зрелости.

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте