exponenta event banner

prbyzero

Ценовые облигации в портфеле по набору нулевых кривых

Описание

пример

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около-6 матрица информации о связи, где столбцы таблицы или столбцы матрицы содержат:

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

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

  • Face (Необязательно) Номинальная или номинальная стоимость облигации. По умолчанию = 100.

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

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

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

:

Примечание

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

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

.

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

Дата расчета, указанная как серийные номера, векторы символов даты или массивы datetime.

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

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

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

Наблюдаемые даты для ZeroRates, указано как NUMDATESоколо-1 с использованием серийных номеров дат, векторов символов даты или массивов datetime.

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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