zbtyield

Загрузка нулевой кривой из данных купонной облигации с заданным выражением

Описание

пример

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

Кривая нуля состоит из выражений на срок для портфеля теоретических облигаций с нулевым купоном, которые получают из входа Bonds портфолио. Метод bootstrap, который использует эта функция, не требует выравнивания среди дат денежного потока облигаций в вход портфеле. Он использует теоретический par bond арбитража и интерполяции выражения, чтобы вывести все нулевые ставки; в частности, процентные ставки для денежных потоков определяются с помощью линейной интерполяции. Для достижения наилучших результатов используйте портфель из как минимум 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
   01-Jun-1998
   01-Sep-1999
   15-Nov-1999
   15-Jan-2000
   30-Jun-2000
   01-Jul-2000
   30-Apr-2001
   30-Jun-2001
   01-Jul-2001
   15-Apr-2002
   30-Apr-2002

Использование 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 (SIA)

    • 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 = BUS/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, затем CurveDatesCurveDates является datetimes. В противном случае CurveDates - серийные номера дат.

Ссылки

[1] Фабоцци, Фрэнк Дж. «Структура процентных ставок». Гл. 6 в Фабоцци, Фрэнк Дж. и Т. Десса Фабоцци, эд. Справочник по ценным бумагам с фиксированным доходом. 4-й эд. Нью-Йорк, Irwin Professional Publishing, 1995.

[2] Макиналли, Ричард У. и Джеймс В. Джордан. «Срочная структура процентных ставок». в гл. 37 в Фабоцци и Фабоцци, там же

[3] Дас, Сатьяджит. «Расчет нулевых купонных ставок». в свопе и производном финансировании. Приложение к ч. 8, стр. 219-225. Нью-Йорк, Irwin Professional Publishing, 1994.

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