exponenta event banner

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

Введение

В целях иллюстрации в этом разделе используются модели HJM и BDT. Функции HW и BK, выполняющие вычисления цены и чувствительности, здесь явно не показаны. Функции, использующие модели HW и BK, работают аналогично модели BDT.

Расчет цен на приборы

Функции расчета цен портфеля hjmprice и bdtprice рассчитать цену любого набора поддерживаемых инструментов на основе дерева процентных ставок. Функции позволяют рассчитать цены для следующих видов инструментов:

  • Связи

  • Опционы на облигации

  • Соединение со встроенными опциями

  • Произвольные денежные потоки

  • Примечания с фиксированной ставкой

  • Банкноты с плавающей ставкой

  • Заметки с плавающей ставкой с опциями или встроенными опциями

  • Заглавные буквы

  • Этажи

  • Примечания к диапазону

  • Обмены

  • Swaptions

Например, синтаксис вызова hjmprice является:

[Price, PriceTree] = hjmprice(HJMTree, InstSet, Options)

Аналогично, синтаксис вызова для bdtprice является:

[Price, PriceTree] = bdtprice(BDTTree, InstSet, Options)

Каждая функция требует два входных аргумента: дерево процентных ставок и набор инструментов, InstSet. Необязательный аргумент, Options, далее управляет ценообразованием и выводом на экран. (См. раздел Структура вариантов ценообразования для получения информации о Options аргумент.)

HJMTree - выборка дерева Хита-Джарроу-Мортона процесса прямой скорости, созданная с помощью hjmtree. BDTTree - выборка дерева Black-Derman-Toy процесса процентной ставки, созданная с использованием bdttree. Сведения о создании этих структур см. в разделе Построение дерева форвардных ставок.

InstSet - набор инструментов, которые должны быть оценены по цене. Эта структура представляет набор инструментов, которые должны оцениваться независимо с использованием модели.

Options - структура опций, созданная с помощью функции derivset. Эта структура определяет способ использования дерева для поиска цены инструментов в портфеле и объем дополнительной информации, отображаемой в окне команд при вызове функции расчета цены. Если этот входной аргумент не указан в вызове функции ценообразования, используется структура опционов по умолчанию. Структура опционов расчета цены описана в разделе Структура опционов расчета цены.

Функции расчета цен портфеля классифицируют инструменты и вызывают соответствующую специфичную для инструмента функцию расчета цен для каждого из видов инструментов. Специфичные для инструмента функции расчета цен HJM: bondbyhjm, cfbyhjm, fixedbyhjm, floatbyhjm, optbndbyhjm, rangefloatbyhjm, swapbyhjm, и swaptionbyhjm. Для моделей BDT существует набор функций с аналогичным именем. Эти функции также можно использовать непосредственно для вычисления цены наборов инструментов одного типа.

Пример расчета цены HJM

Рассмотрим следующий пример, в котором используются данные портфеля и процентной ставки в MAT-файле. deriv.mat включен в набор инструментов. Загрузите данные в рабочую область MATLAB ®.

load deriv.mat

Использование MATLAB whos для отображения списка переменных, загруженных из MAT-файла.

whos
Name              Size            Bytes  Class     Attributes

  BDTInstSet        1x1             15956  struct              
  BDTTree           1x1              5138  struct              
  BKInstSet         1x1             15946  struct              
  BKTree            1x1              5904  struct              
  CRRInstSet        1x1             12434  struct              
  CRRTree           1x1              5058  struct              
  EQPInstSet        1x1             12434  struct              
  EQPTree           1x1              5058  struct              
  HJMInstSet        1x1             15948  struct              
  HJMTree           1x1              5838  struct              
  HWInstSet         1x1             15946  struct              
  HWTree            1x1              5904  struct              
  ITTInstSet        1x1             12438  struct              
  ITTTree           1x1              8862  struct              
  ZeroInstSet       1x1             10282  struct              
  ZeroRateSpec      1x1              1580  struct         

HJMTree и HJMInstSet являются входными аргументами, необходимыми для вызова функции hjmprice.

Используйте функцию instdisp для изучения набора инструментов, содержащихся в переменной HJMInstSet.

instdisp(HJMInstSet)
Index Type CouponRate Settle         Maturity       Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face Name    Quantity
1     Bond 0.04       01-Jan-2000    01-Jan-2003    1      NaN   NaN          NaN       NaN             NaN            NaN       NaN  4% bond 100     
2     Bond 0.04       01-Jan-2000    01-Jan-2004    2      NaN   NaN          NaN       NaN             NaN            NaN       NaN  4% bond  50     
 
Index Type    UnderInd OptSpec Strike ExerciseDates  AmericanOpt Name       Quantity
3     OptBond 2        call    101    01-Jan-2003    NaN         Option 101 -50     
 
Index Type  CouponRate Settle         Maturity       FixedReset Basis Principal Name     Quantity
4     Fixed 0.04       01-Jan-2000    01-Jan-2003    1          NaN   NaN       4% Fixed 80      
 
Index Type  Spread Settle         Maturity       FloatReset Basis Principal Name       Quantity
5     Float 20     01-Jan-2000    01-Jan-2003    1          NaN   NaN       20BP Float 8       
 
Index Type Strike Settle         Maturity       CapReset Basis Principal Name   Quantity
6     Cap  0.03   01-Jan-2000    01-Jan-2004    1        NaN   NaN       3% Cap 30      
 
Index Type  Strike Settle         Maturity       FloorReset Basis Principal Name     Quantity
7     Floor 0.03   01-Jan-2000    01-Jan-2004    1          NaN   NaN       3% Floor 40      
 
Index Type LegRate    Settle         Maturity       LegReset Basis Principal LegType Name         Quantity
8     Swap [0.06  20] 01-Jan-2000    01-Jan-2003    [1  1]   NaN   NaN       [NaN]   6%/20BP Swap 10      


Index Type CouponRate Settle       Maturity     Period Basis  ...  Name      Quantity
1     Bond 0.04       01-Jan-2000  01-Jan-2003  1      NaN    ...  4% bond   100 
2     Bond 0.04       01-Jan-2000  01-Jan-2004  2      NaN    ...  4% bond    50  

В этом портфельном наборе восемь инструментов: две облигации, один облигационный опцион, одна нота с фиксированной ставкой, одна нота с плавающей ставкой, одна шапка, один этаж и один своп. Каждый инструмент имеет соответствующий индекс, который определяет цены инструмента в векторе цен, возвращаемом hjmprice.

Теперь используйте hjmprice для расчета цены каждого инструмента в наборе инструментов.

Price = hjmprice(HJMTree, HJMInstSet)
Warning: Not all cash flows are aligned with the tree. Result will 
be approximated.

Price =

   98.7159
   97.5280
    0.0486
   98.7159
  100.5529
    6.2831
    0.0486
    3.6923

Примечание

Предупреждение, показанное выше, появляется, поскольку некоторые денежные потоки для второй облигации не попадают точно на узел дерева.

Пример расчета цены BDT

Загрузка файла MAT deriv.mat в рабочую область MATLAB.

load deriv.mat

Использование MATLAB whos для отображения списка переменных, загруженных из MAT-файла.

whos
 Name              Size            Bytes  Class     Attributes

  BDTInstSet        1x1             15956  struct              
  BDTTree           1x1              5138  struct              
  BKInstSet         1x1             15946  struct              
  BKTree            1x1              5904  struct              
  CRRInstSet        1x1             12434  struct              
  CRRTree           1x1              5058  struct              
  EQPInstSet        1x1             12434  struct              
  EQPTree           1x1              5058  struct              
  HJMInstSet        1x1             15948  struct              
  HJMTree           1x1              5838  struct              
  HWInstSet         1x1             15946  struct              
  HWTree            1x1              5904  struct              
  ITTInstSet        1x1             12438  struct              
  ITTTree           1x1              8862  struct              
  ZeroInstSet       1x1             10282  struct              
  ZeroRateSpec      1x1              1580  struct         

BDTTree и BDTInstSet являются входными аргументами, необходимыми для вызова функции bdtprice.

Используйте функцию instdisp для изучения набора инструментов, содержащихся в переменной BDTInstSet.

instdisp(BDTInstSet)
Index Type CouponRate Settle         Maturity       Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face Name     Quantity
1     Bond 0.1        01-Jan-2000    01-Jan-2003    1      NaN   NaN          NaN       NaN             NaN            NaN       NaN  10% Bond 100     
2     Bond 0.1        01-Jan-2000    01-Jan-2004    2      NaN   NaN          NaN       NaN             NaN            NaN       NaN  10% Bond  50     
 
Index Type    UnderInd OptSpec Strike ExerciseDates  AmericanOpt Name      Quantity
3     OptBond 1        call    95     01-Jan-2002    NaN         Option 95 -50     
 
Index Type  CouponRate Settle         Maturity       FixedReset Basis Principal Name      Quantity
4     Fixed 0.1        01-Jan-2000    01-Jan-2003    1          NaN   NaN       10% Fixed 80      
 
Index Type  Spread Settle         Maturity       FloatReset Basis Principal Name       Quantity
5     Float 20     01-Jan-2000    01-Jan-2003    1          NaN   NaN       20BP Float 8       
 
Index Type Strike Settle         Maturity       CapReset Basis Principal Name    Quantity
6     Cap  0.15   01-Jan-2000    01-Jan-2004    1        NaN   NaN       15% Cap 30      
 
Index Type  Strike Settle         Maturity       FloorReset Basis Principal Name     Quantity
7     Floor 0.09   01-Jan-2000    01-Jan-2004    1          NaN   NaN       9% Floor 40      
 
Index Type LegRate    Settle         Maturity       LegReset Basis Principal LegType Name          Quantity
8     Swap [0.15  10] 01-Jan-2000    01-Jan-2003    [1  1]   NaN   NaN       [NaN]   15%/10BP Swap 10  

В этом портфельном наборе восемь инструментов: две облигации, один облигационный опцион, одна нота с фиксированной ставкой, одна нота с плавающей ставкой, одна шапка, один этаж и один своп. Каждый инструмент имеет соответствующий индекс, который определяет цены инструмента в векторе цен, возвращаемом bdtprice.

Теперь используйте bdtprice для расчета цены каждого инструмента в наборе инструментов.

Price = bdtprice(BDTTree, BDTInstSet)
Warning: Not all cash flows are aligned with the tree. Result will 
be approximated.

Price =

   95.5030
   93.9079
    1.7657
   95.5030
  100.4865
    1.4863
    0.0245
    7.4222

Выпуск вектора цен

Цены в векторе выпуска Price соответствуют ценам в нулевое время наблюдения (tObs = 0), которая определяется как дата оценки дерева процентных ставок. Индексация прибора в пределах Price совпадает с индексацией в пределах InstSet.

В примере HJM цены в Price вектор соответствует приборам в этом порядке.

InstNames = instget(HJMInstSet, 'FieldName','Name')
InstNames =

4% bond     
4% bond     
Option 101  
4% Fixed    
20BP Float  
3% Cap      
3% Floor    
6%/20BP Swap

Итак, в Price вектор, четвертый элемент, 98,7159, представляет цену четвертого инструмента (4% нота с фиксированной ставкой); шестой элемент, 6.2831, представляет цену шестого инструмента (ограничение 3%).

В примере BDT цены в Price вектор соответствует приборам в этом порядке.

InstNames = instget(BDTInstSet, 'FieldName','Name')
InstNames =

10% Bond     
10% Bond     
Option 95    
10% Fixed    
20BP Float   
15% Cap      
9% Floor     
15%/10BP Swap

Итак, в Price вектор, четвертый элемент, 95.5030, представляет цену четвертого инструмента (10% нота с фиксированной ставкой); шестой элемент, 1.4863, представляет цену шестого инструмента (ограничение 15%).

Вывод структуры дерева цен

Например, при вызове функции расчета цены с двумя аргументами вывода:

[Price, PriceTree] = hjmprice(HJMTree, HJMInstSet) 

создается дерево цен вместе с информацией о ценах.

Необязательная древовидная структура выходных цен PriceTree содержит всю информацию о ценах.

Дерево цен HJM.  В примере HJM первое поле этой структуры, FinObjуказывает, что эта структура представляет дерево цен. Второе поле, PBush, - дерево, держащее цену инструментов в каждом узле дерева. Третье поле, AIBush, - дерево, в котором хранятся начисленные проценты по инструментам в каждом узле дерева. Наконец, четвертое поле, tObs, представляет время наблюдения каждого уровня PBush и AIBush, с единицами в терминах периодов компаундирования.

В этом примере дерево цен выглядит следующим образом:

PriceTree = 
FinObj: 'HJMPriceTree'
 PBush: {[8x1 double]  [8x1x2 double]  ...[8x8 double]}
AIBush: {[8x1 double]  [8x1x2 double] ... [8x8 double]}
  tObs: [0 1 2 3 4]

Оба PBush и AIBush являются 1около-5 массивы ячеек, соответствующие пяти временам наблюдения tObs. Отображение данных здесь сокращено для размещения на одной строке.

С помощью интерфейса командной строки можно выполнить непосредственную проверку PriceTree.PBush, поле в пределах PriceTree структура, содержащая дерево цен с векторами цен в каждом штате. Первый узел представляет tObs = 0, соответствующее дате оценки.

PriceTree.PBush{1}
ans =

   98.7159
   97.5280
    0.0486
   98.7159
  100.5529
    6.2831
    0.0486
    3.6923

С помощью этого интерфейса можно наблюдать цены для всех инструментов в портфеле в определенное время.

Дерево цен BDT.  Древовидная структура выходных цен BDT PriceTree содержит всю информацию о ценах. Первое поле этой структуры, FinObjуказывает, что эта структура представляет дерево цен. Второе поле, PTree, - дерево, держащее цену инструментов в каждом узле дерева. Третье поле, AITree, - дерево, в котором хранятся начисленные проценты по инструментам в каждом узле дерева. Четвертое поле, tObs, представляет время наблюдения каждого уровня PTree и AITree, с единицами в терминах периодов компаундирования.

Вы можете непосредственно изучить поле в PriceTree структура, которая содержит дерево цен с векторами цен в каждом штате. Первый узел представляет tObs = 0, соответствующее дате оценки.

[Price, PriceTree] = bdtprice(BDTTree, BDTInstSet)

PriceTree.PTree{1}
ans =

   95.5030
   93.9079
    1.7657
   95.5030
  100.4865
    1.4863
    0.0245
    7.4222

См. также

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

Связанные примеры

Подробнее