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

Введение

Для рисунка в этом разделе используются модели 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 - древовидная выборка Heath-Jarrow-Morton процесса прямой скорости, созданная с помощью 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-by- 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

См. также

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

Похожие примеры

Подробнее о