zbtprice

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

Описание

пример

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

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

пример

ZeroRates,CurveDates = zbtprice(___,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];

Prices = [99.375;
          99.875;
         105.75 ;
          96.875;
         103.625;
         101.125;
         103.125;
          99.375;
         101.0  ;
         101.25 ;
          96.375;
         102.75 ];

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

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

OutputCompounding = 2;

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

[ZeroRates, CurveDates] = zbtprice(Bonds, Prices, Settle,... 
OutputCompounding)
ZeroRates = 11×1

    0.0616
    0.0609
    0.0658
    0.0590
    0.0647
    0.0655
    0.0606
    0.0601
    0.0642
    0.0621
      ⋮

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];

Prices = [99.375;
          99.875;
         105.75 ;
          96.875;
         103.625;
         101.125;
         103.125;
          99.375;
         101.0  ;
         101.25 ;
          96.375;
         102.75 ];

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

t=array2table(Bonds);
t.Bonds1=datetime(t.Bonds1,'ConvertFrom','datenum','Locale','en_US');
Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US');
[ZeroRates, CurveDates] = zbtprice(t, Prices, Settle,...
OutputCompounding)
ZeroRates = 11×1

    0.0616
    0.0609
    0.0658
    0.0590
    0.0647
    0.0655
    0.0606
    0.0601
    0.0642
    0.0621
      ⋮

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

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

свернуть все

Информация о купонной облигации для генерации кривого нуля заданной в виде 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 дата, zbtprice возвращает среднюю нулевую ставку для этого Maturity. Любые тарифы перед первым Maturity приняты равными ставке на первом Maturity, то есть кривая принята плоской перед первым Maturity.

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

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

Ссылки

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

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

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

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