zbtyield

Кривая нулевой ширины, загружающаяся от данных об облигации на предъявителя, данных урожай

Синтаксис

[ZeroRates,CurveDates] = zbtyield(Bonds,YieldsSettle)
ZeroRates,CurveDates = zbtyield(___,OutputCompounding)

Описание

пример

[ZeroRates,CurveDates] = zbtyield(Bonds,YieldsSettle) использует метод начальной загрузки, чтобы возвратить кривую нулевой ширины, учитывая портфель облигаций на предъявителя и их урожаев.

Кривая нулевой ширины состоит из доходов до срока погашения для портфеля теоретических облигаций с нулевым купоном, которые выведены от портфеля входа Bonds. Метод начальной загрузки, что эта функция использование не требует выравнивания среди дат потока наличности связей во входном портфеле. Это использует теоретический арбитраж связи паритета и интерполяцию урожая, чтобы вывести все нулевые уровни; а именно, процентные ставки для потоков наличности определяются с помощью линейной интерполяции. Для лучших результатов используйте портфель по крайней мере 30 связей, равномерно расположенных с интервалами через инвестиционный горизонт.

пример

ZeroRates,CurveDates = zbtyield(___,OutputCompounding) добавляет дополнительный аргумент для OutputCompounding.

Примеры

свернуть все

Определенные данные и доходы до срока погашения для 12 облигаций на предъявителя, два с той же датой погашения; и, учитывая общий расчетный день.

Bonds = [datenum('6/1/1998')   0.0475   100  2  0  0;
         datenum('7/1/2000')   0.06     100  2  0  0;
         datenum('7/1/2000')   0.09375  100  6  1  0;
         datenum('6/30/2001')  0.05125  100  1  3  1;
         datenum('4/15/2002')  0.07125  100  4  1  0;
         datenum('1/15/2000')  0.065    100  2  0  0;
         datenum('9/1/1999')   0.08     100  3  3  0;
         datenum('4/30/2001')  0.05875  100  2  0  0;
         datenum('11/15/1999') 0.07125  100  2  0  0;
         datenum('6/30/2000')  0.07     100  2  3  1;
         datenum('7/1/2001')   0.0525   100  2  3  0;
         datenum('4/30/2002')  0.07     100  2  0  0];

Yields = [0.0616
          0.0605
          0.0687
          0.0612
          0.0615
          0.0591
          0.0603
          0.0608
          0.0655
          0.0646
          0.0641
          0.0627];

Settle = datenum('12/18/1997');

Установите полугодовое соединение для кривой нулевой ширины.

OutputCompounding = 2;

Выполните функциональный zbtyield, который возвращает кривую нулевой ширины в датах погашения. Отметьте средний нулевой уровень этими двумя связями с той же датой погашения.

[ZeroRates, CurveDates] = zbtyield(Bonds, Yields, Settle,... 
OutputCompounding)
ZeroRates = 11×1

    0.0616
    0.0603
    0.0657
    0.0590
    0.0649
    0.0650
    0.0606
    0.0611
    0.0643
    0.0614
      ⋮

CurveDates = 11×1

      729907
      730364
      730439
      730500
      730667
      730668
      730971
      731032
      731033
      731321
      ⋮

Определенные данные и доходы до срока погашения для 12 облигаций на предъявителя (два с той же датой погашения), и, учитывая общий расчетный день, вычисляют кривую нулевой ширины с помощью входных параметров datetime.

Bonds = [datenum('6/1/1998')   0.0475   100  2  0  0;
         datenum('7/1/2000')   0.06     100  2  0  0;
         datenum('7/1/2000')   0.09375  100  6  1  0;
         datenum('6/30/2001')  0.05125  100  1  3  1;
         datenum('4/15/2002')  0.07125  100  4  1  0;
         datenum('1/15/2000')  0.065    100  2  0  0;
         datenum('9/1/1999')   0.08     100  3  3  0;
         datenum('4/30/2001')  0.05875  100  2  0  0;
         datenum('11/15/1999') 0.07125  100  2  0  0;
         datenum('6/30/2000')  0.07     100  2  3  1;
         datenum('7/1/2001')   0.0525   100  2  3  0;
         datenum('4/30/2002')  0.07     100  2  0  0];

Yields = [0.0616
          0.0605
          0.0687
          0.0612
          0.0615
          0.0591
          0.0603
          0.0608
          0.0655
          0.0646
          0.0641
          0.0627];

Settle = datenum('12/18/1997');
OutputCompounding = 2;
t = array2table(Bonds,'VariableNames',{'Maturity','CouponRate', 'Face' ,'Period', 'Basis', 'EndMonthRule'});
disp(t)
     Maturity     CouponRate    Face    Period    Basis    EndMonthRule
    __________    __________    ____    ______    _____    ____________

    7.2991e+05      0.0475      100       2         0           0      
    7.3067e+05        0.06      100       2         0           0      
    7.3067e+05     0.09375      100       6         1           0      
    7.3103e+05     0.05125      100       1         3           1      
    7.3132e+05     0.07125      100       4         1           0      
     7.305e+05       0.065      100       2         0           0      
    7.3036e+05        0.08      100       3         3           0      
    7.3097e+05     0.05875      100       2         0           0      
    7.3044e+05     0.07125      100       2         0           0      
    7.3067e+05        0.07      100       2         3           1      
    7.3103e+05      0.0525      100       2         3           0      
    7.3134e+05        0.07      100       2         0           0      
t.Maturity = datetime(t.Maturity,'ConvertFrom','datenum','Locale','en_US');
Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US');
[ZeroRates, CurveDates] = zbtyield(t, Yields, Settle,...
OutputCompounding)
ZeroRates = 11×1

    0.0616
    0.0603
    0.0657
    0.0590
    0.0649
    0.0650
    0.0606
    0.0611
    0.0643
    0.0614
      ⋮

CurveDates = 11x1 datetime array
   01-Jun-1998 00:00:00
   01-Sep-1999 00:00:00
   15-Nov-1999 00:00:00
   15-Jan-2000 00:00:00
   30-Jun-2000 00:00:00
   01-Jul-2000 00:00:00
   30-Apr-2001 00:00:00
   30-Jun-2001 00:00:00
   01-Jul-2001 00:00:00
   15-Apr-2002 00:00:00
   30-Apr-2002 00:00:00

Используйте zbtyield, чтобы вычислить действительные нулевые уровни из реальных доходностей соединенных с инфляцией связей.

% Load the data
load usbond_02Sep2008
Settle = datenum('02-Sep-2008');

Вычислите реальные доходности и затем вычислите действительные нулевые уровни.

RealYields = bndyield(TIPSPrice,TIPSCoupon,Settle,TIPSMaturity);
TIPSBonds = [TIPSMaturity TIPSCoupon];
[RealZeroRates, CurveDates] = zbtyield(TIPSBonds, RealYields, Settle)
RealZeroRates = 26×1

    0.0069
    0.0094
    0.0092
    0.0111
    0.0110
    0.0119
    0.0116
    0.0128
    0.0126
    0.0136
      ⋮

CurveDates = 26×1

      734153
      734243
      734518
      734608
      734883
      734974
      735065
      735339
      735430
      735614
      ⋮

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

свернуть все

Информация об облигации на предъявителя, чтобы сгенерировать кривую нулевой ширины, заданную как таблица с 6 столбцами или n-by-2 к n-by-6 матрица информации о связи, где столбцы таблицы или столбцы матрицы содержит:

  • Maturity (Столбец 1, Необходимый) Дата погашения связи, как последовательный номер даты. Используйте datenum, чтобы преобразовать векторы символов даты в последовательные числа даты. Если вход Bonds является таблицей, даты Maturity могут быть последовательными числами даты, векторами символов даты или массивами datetime.

  • CouponRate (Столбец 2, Необходимый) Десятичная дробь, указывающая на купонную ставку связи.

  • Face (Столбец 3, Дополнительный) Освобождение или номинальная стоимость связи. Значение по умолчанию = 100.

  • Period (Столбец 4, Дополнительный) Купоны в год связи. Позволенными значениями является 0, 1, 2 (значение по умолчанию), 3, 4, 6 и 12.

  • Basis (Столбец 5, Дополнительный) основание Дневного количества связи. Вектор целых чисел.

    •  0 = фактический/фактический (значение по умолчанию)

    •  1 = 30/360 (СИА)

    •  2 = Фактический/360

    •  3 = Фактический/365

    •  4 = 30/360 (BMA)

    •  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

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

  • EndMonthRule (Столбец 6, Дополнительный) правило Конца месяца. Это правило применяется только, когда Maturity является датой конца месяца в течение месяца, имея 30 или меньше дней. 0 = игнорирует правило, означая, что дата купонного платежа связи всегда является тем же числовым днем месяца. 1 = установленное правило о (значении по умолчанию), означая, что дата купонного платежа связи всегда является прошлым фактическим днем месяца

:

Примечание

  • Если Bonds является таблицей, даты Maturity могут быть последовательными числами даты, векторами символов даты или массивами datetime.

  • Если Bonds является матрицей, n-by-2 к n-by-6 матрица, где каждая строка описывает связь, первые два столбца (Maturity и CouponRate) требуются. Остаток от столбцов является дополнительным, но должен быть добавлен по порядку. Все строки в Bonds должны иметь одинаковое число столбцов.

.

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

Доход до срока погашения каждой связи в Bonds, заданном как N-by-1 вектор-столбец. Количество строк (n) должно совпадать с количеством строк в Bonds.

Примечание

Доход до срока погашения должен раз в полгода составляться.

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

Расчетный день представляя время обнуляет в деривации кривой нулевой ширины, заданной как последовательный номер даты, вектор символов даты или массив datetime. Settle представляет нуль времени для получения кривой нулевой ширины, и это обычно - общий расчетный день для всех связей.

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

(Необязательно) Соединяя частоту вывода ZeroRates, заданного использования позволенных значений:

  • 0 — Простой процент (никакое соединение)

  • 1 — Ежегодное соединение

  • 2 — Полугодовое соединение (значение по умолчанию)

  • 3 — Соединение три раза в год

  • 4 — Ежеквартально соединение

  • 6 — Два раза в месяц соединение

  • 12 — Ежемесячно соединение

  • -1 — Непрерывное соединение

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

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

свернуть все

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

Если больше чем одна связь имеет ту же дату Maturity, zbtyield возвращает средний нулевой уровень для того Maturity. Любые уровни перед первым Maturity приняты, чтобы быть равными уровню в первом Maturity, то есть, кривая принята, чтобы быть плоской перед первым Maturity.

Даты погашения, которые соответствуют ZeroRates, возвратились как m-by-1 вектор уникальных дат погашения, где m является количеством связей различных дат погашения. Эти даты начинаются с самой ранней даты Maturity и заканчиваются последней датой Maturity в таблице Bonds или матрице.

Если или входные параметры для Bonds или Settle имеют значения datetime, то CurveDates CurveDates является datetimes. В противном случае CurveDates является последовательными числами даты.

Ссылки

[1] Фабоцци, Франк Дж. “Структура Процентных ставок”. Ch. 6 в Фабоцци, Франке Дж. и Т. Дессе Фабоцци, редакторах Руководство Fixed Income Securities. 4-й редактор Нью-Йорк, Irwin Professional Publishing, 1995.

[2] Мсеналли, Ричард В. и Джеймс В. Джордан. “Термин Структура Процентных ставок”. в Ch. 37 в Fabozzi и Fabozzi, там же

[3] Десять кубометров, Satyajit. “Вычисляя Уровни Нулевого купона”. в Подкачке и Производном Финансировании. Приложение к Ch. 8, стр 219–225. Нью-Йорк, Ирвин Профешенэл Паблишинг, 1994.

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