prbyzero

Ценовые связи в портфеле набором кривых нулевой ширины

Синтаксис

BondPrices = prbyzero(Bonds,Settle,ZeroRates,ZeroDates)
BondPrices = prbyzero(___,Compounding)

Описание

пример

BondPrices = prbyzero(Bonds,Settle,ZeroRates,ZeroDates) вычисляет цены облигаций в портфеле с помощью набора кривых нулевой ширины.

пример

BondPrices = prbyzero(___,Compounding) добавляет дополнительный аргумент для Compounding.

Примеры

свернуть все

Этот пример использует функциональный zbtprice, чтобы вычислить кривую нулевой ширины, учитывая портфель облигаций на предъявителя и их цен. Это затем инвертирует процесс, с помощью кривой нулевой ширины в качестве входа к функциональному prbyzero, чтобы вычислить цены.

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');

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

OutputCompounding = 2;

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

[ZeroRates, ZeroDates] = 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
      ⋮

ZeroDates = 11×1

      729907
      730364
      730439
      730500
      730667
      730668
      730971
      731032
      731033
      731321
      ⋮

Выполните функциональный prbyzero.

BondPrices = prbyzero(Bonds, Settle, ZeroRates, ZeroDates)
BondPrices = 12×1

   99.3750
   98.7980
  106.8270
   96.8750
  103.6249
  101.1250
  103.1250
   99.3637
  101.0000
  101.2500
      ⋮

В этом примере zbtprice и prbyzero точно не инвертируют друг друга. Многие связи имеют конец месяца, отделяют чертой (EndMonthRule = 0). Правило тонко влияет на вычисление фактора времени. Если вы устанавливаете правило о (EndMonthRule = 1) везде в матрице Bonds, то prbyzero возвращает исходные цены, кроме тех случаев, когда две несовместимых цены падают на ту же дату погашения.

Этот пример использует функциональный zbtprice, чтобы вычислить кривую нулевой ширины, учитывая портфель облигаций на предъявителя и их цен. Это затем инвертирует процесс, с помощью кривой нулевой ширины в качестве входа к функциональному prbyzero с входными параметрами 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;

[ZeroRates, ZeroDates] = zbtprice(Bonds, Prices, Settle, OutputCompounding);

dates = datetime(Bonds(:,1),'ConvertFrom','datenum','Locale','en_US');
data = Bonds(:,2:end);
t=[table(dates) array2table(data)];
BondPrices = prbyzero(t, datetime(Settle,'ConvertFrom','datenum','Locale','en_US'),...
ZeroRates, datetime(ZeroDates,'ConvertFrom','datenum','Locale','en_US'))
BondPrices = 12×1

   99.3750
   98.7980
  106.8270
   96.8750
  103.6249
  101.1250
  103.1250
   99.3637
  101.0000
  101.2500
      ⋮

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

свернуть все

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

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

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

  • Face (Необязательно) Поверхность или номинальная стоимость связи. Значение по умолчанию = 100.

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

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

    •  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 (Необязательно) правило Конца месяца. Это правило применяется только, когда Maturity является датой конца месяца в течение месяца, имея 30 или меньше дней. 0 = игнорирует правило, означая, что дата купонного платежа связи всегда является тем же числовым днем месяца. 1 = установленное правило о (значении по умолчанию), означая, что дата купонного платежа связи всегда является прошлым фактическим днем месяца

:

Примечание

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

  • Если Bonds является матрицей, это - NUMBONDS-by-6 матрица связей, где каждая строка описывает одну связь. Первые два столбца требуются; остальные столбцы являются дополнительными, но должны быть добавлены по порядку. Все строки в Bonds должны иметь одинаковое число столбцов. Столбцами является Maturity, CouponRate, Face, Period, Basis и EndMonthRule.

.

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

Расчетный день, заданный как последовательные числа даты, векторы символов даты или массивы datetime.

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

Наблюдаемые нулевые уровни, заданные как NUMDATES-by-NUMCURVES матрица десятичных дробей. Каждый столбец представляет кривую уровня. Каждая строка представляет дату наблюдения.

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

Наблюдаемые даты ZeroRates, заданного как NUMDATES-by-1 столбец с помощью последовательных чисел даты, векторов символов даты или массивов datetime.

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

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

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

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

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

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

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

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

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

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

свернуть все

Чистые цены облигаций, возвращенные как NUMBONDS-by-NUMCURVES матрица. Каждый столбец выведен от соответствующей кривой нулевой ширины в ZeroRates.

Кроме того, можно использовать метод Financial Instruments Toolbox™ getZeroRates для объекта IRDataCurve со свойством Dates создать вектор дат и данных, приемлемых для prbyzero. Для получения дополнительной информации смотрите Преобразование Объекта IRDataCurve или IRFunctionCurve (Financial Instruments Toolbox).

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