Оценка Используя модели дерева процентной ставки

Введение

В целях рисунка этот раздел полагается на модели 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

Используйте команду whos MATLAB, чтобы отобразить список переменных, загруженных из 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

Используйте команду whos MATLAB, чтобы отобразить список переменных, загруженных из 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

Смотрите также

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

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

Больше о