exponenta event banner

zbtyield

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

Описание

пример

[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
   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около-2 кому nоколо-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около-2 кому nоколо-6 матрица, где каждая строка описывает связь, первые два столбца (Maturity и CouponRate) являются обязательными. Остальные столбцы являются необязательными, но должны быть добавлены по порядку. Все строки в Bonds должно иметь одинаковое количество столбцов.

.

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

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

Примечание

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

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

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

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

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

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

  • 1 - Годовое суммирование

  • 2 - Полугодичное объединение (по умолчанию)

  • 3 - Три раза в год

  • 4 - Квартальное суммирование

  • 6 - Компаундирование раз в два месяца

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

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

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

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

свернуть все

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

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

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

Если любой из входов для Bonds или Settle иметь значения datetime, затем CurveDatesCurveDates является временем даты. Иначе CurveDates - порядковые номера.

Ссылки

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

[2] Макеналли, Ричард У. и Джеймс В. Джордан. в гл. 37 в Фабоцци и Фабоцци, там же

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

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