exponenta event banner

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

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

Функции расчета цен портфеля crrprice, eqpprice, и ittprice рассчитать цену любого набора поддерживаемых инструментов на основе двоичного дерева цен акций, подразумеваемого триномиального дерева цен или стандартного триномиального дерева. Эти функции позволяют рассчитать цены на следующие виды инструментов:

  • Ванильные опционы на акции

    • Американские и европейские посылки и звонки

  • Экзотические варианты

    • Азиат

    • Барьер

    • Комплекс

    • Lookback

    • Опционы на акции (графики пут и колл на Бермудских островах)

Синтаксис вызова функции crrprice является:

[Price, PriceTree] = crrprice(CRRTree, InstSet, Options)

Синтаксис для eqpprice является:

[Price, PriceTree] = eqpprice(EQPTree, InstSet, Options)

Синтаксис для ittprice является:

Price = ittprice(ITTTree, ITTInstSet, Options)

Синтаксис для sttprice является:

[Price, PriceTree] = sttprice(STTTree, InstSet, Name, Value)

Эти функции требуют двух входных аргументов: дерево цен акций и набор инструментов, InstSetи разрешить третий необязательный аргумент.

Обязательные аргументы

CRRTree - дерево цен акций CRR, созданное с помощью crrtree. EQPTree - дерево равных вероятностей цен акций, созданное с помощью eqptree. ITTTree - дерево цен акций ITT, созданное с помощью itttree. STTTree является стандартным триномиальным деревом цен акций, созданным с помощью stttree. Сведения о создании этих структур см. в разделах Создание двоичных деревьев Equity и Создание подразумеваемых триномиальных деревьев.

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

Необязательный аргумент

Можно ввести третий необязательный аргумент, Options, используется при ценообразовании опционов барьера. Дополнительные сведения см. в разделе Структура вариантов ценообразования.

Эти функции расчета цен внутренне классифицируют инструменты и вызывают соответствующую отдельную функцию расчета цен инструментов для каждого из видов инструментов. Функции расчета цены CRR: asianbycrr, barrierbycrr, compoundbycrr, lookbackbycrr, и optstockbycrr. Аналогичный набор функций существует для ценообразования EQP, ITT и STT. Эти функции также можно использовать непосредственно для вычисления цены наборов инструментов одного типа. Для получения дополнительной информации см. справочные страницы по этим отдельным функциям.

Расчет цен с использованием CRR

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

load deriv.mat

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

Name              Size            Bytes  Class     Attributes

  BDTInstSet        1x1             27344  struct              
  BDTTree           1x1              7322  struct              
  BKInstSet         1x1             27334  struct              
  BKTree            1x1              8532  struct              
  CRRInstSet        1x1             21066  struct              
  CRRTree           1x1              7086  struct              
  EQPInstSet        1x1             21066  struct              
  EQPTree           1x1              7086  struct              
  HJMInstSet        1x1             27336  struct              
  HJMTree           1x1              8334  struct              
  HWInstSet         1x1             27334  struct              
  HWTree            1x1              8532  struct              
  ITTInstSet        1x1             21070  struct              
  ITTTree           1x1             12660  struct              
  STTInstSet        1x1             21070  struct              
  STTTree           1x1              7782  struct              
  ZeroInstSet       1x1             17458  struct              
  ZeroRateSpec      1x1              2152  struct     

CRRTree и CRRInstSet являются необходимыми входными аргументами для вызова функции crrprice.

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

instdisp(CRRInstSet)
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name  Quantity
1     OptStock call    105    01-Jan-2003    01-Jan-2005    1           Call1 10      
2     OptStock put     105    01-Jan-2003    01-Jan-2006    0           Put1   5      
 
Index Type    OptSpec Strike Settle         ExerciseDates  AmericanOpt BarrierSpec Barrier Rebate Name     Quantity
3     Barrier call    105    01-Jan-2003    01-Jan-2006    1           ui          102     0      Barrier1 1       
 
Index Type     UOptSpec UStrike USettle        UExerciseDates UAmericanOpt COptSpec CStrike CSettle        CExerciseDates CAmericanOpt Name      Quantity
4     Compound call     130     01-Jan-2003    01-Jan-2006    1            put      5       01-Jan-2003    01-Jan-2005    1            Compound1 3       
 
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name      Quantity
5     Lookback call    115    01-Jan-2003    01-Jan-2006    0           Lookback1 7       
6     Lookback call    115    01-Jan-2003    01-Jan-2007    0           Lookback2 9       
 
Index Type  OptSpec Strike Settle         ExerciseDates  AmericanOpt AvgType    AvgPrice AvgDate Name   Quantity
7     Asian put     110    01-Jan-2003    01-Jan-2006    0           arithmetic NaN      NaN     Asian1 4       
8     Asian put     110    01-Jan-2003    01-Jan-2007    0           arithmetic NaN      NaN     Asian2 6       

Примечание

Из-за соображений пространства, составная опция выше (Index 4) был сжат в соответствии со страницей. instdisp отображает все составные поля опций на экране компьютера.

Набор приборов содержит восемь приборов:

  • Два варианта ванили (Call1, Put1)

  • Один вариант барьера (Barrier1)

  • Один составной вариант (Compound1)

  • Два варианта обратного просмотра (Lookback1, Lookback2)

  • Два азиатских варианта (Asian1, Asian2)

Каждый инструмент имеет соответствующий индекс, который определяет цены инструмента в векторе цен, возвращаемом crrprice.

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

Price = crrprice(CRRTree, CRRInstSet)
Price =

    8.2863
    2.5016
   12.1272
    3.3241
    7.6015
   11.7772
    4.1797
    3.4219

Расчет цен с использованием EQP

Загрузите данные в рабочую область MATLAB.

load deriv.mat

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

Name              Size            Bytes  Class     Attributes

  BDTInstSet        1x1             27344  struct              
  BDTTree           1x1              7322  struct              
  BKInstSet         1x1             27334  struct              
  BKTree            1x1              8532  struct              
  CRRInstSet        1x1             21066  struct              
  CRRTree           1x1              7086  struct              
  EQPInstSet        1x1             21066  struct              
  EQPTree           1x1              7086  struct              
  HJMInstSet        1x1             27336  struct              
  HJMTree           1x1              8334  struct              
  HWInstSet         1x1             27334  struct              
  HWTree            1x1              8532  struct              
  ITTInstSet        1x1             21070  struct              
  ITTTree           1x1             12660  struct              
  STTInstSet        1x1             21070  struct              
  STTTree           1x1              7782  struct              
  ZeroInstSet       1x1             17458  struct              
  ZeroRateSpec      1x1              2152  struct     

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

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

instdisp(EQPInstSet)
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name  Quantity
1     OptStock call    105    01-Jan-2003    01-Jan-2005    1           Call1 10      
2     OptStock put     105    01-Jan-2003    01-Jan-2006    0           Put1   5      
 
Index Type    OptSpec Strike Settle         ExerciseDates  AmericanOpt BarrierSpec Barrier Rebate Name     Quantity
3     Barrier call    105    01-Jan-2003    01-Jan-2006    1           ui          102     0      Barrier1 1       
 
Index Type     UOptSpec UStrike USettle        UExerciseDates UAmericanOpt COptSpec CStrike CSettle        CExerciseDates CAmericanOpt Name      Quantity
4     Compound call     130     01-Jan-2003    01-Jan-2006    1            put      5       01-Jan-2003    01-Jan-2005    1            Compound1 3       
 
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name      Quantity
5     Lookback call    115    01-Jan-2003    01-Jan-2006    0           Lookback1 7       
6     Lookback call    115    01-Jan-2003    01-Jan-2007    0           Lookback2 9       
 
Index Type  OptSpec Strike Settle         ExerciseDates  AmericanOpt AvgType    AvgPrice AvgDate Name   Quantity
7     Asian put     110    01-Jan-2003    01-Jan-2006    0           arithmetic NaN      NaN     Asian1 4       
8     Asian put     110    01-Jan-2003    01-Jan-2007    0           arithmetic NaN      NaN     Asian2 6       
 
>> instdisp(EQPInstSet)
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name  Quantity
1     OptStock call    105    01-Jan-2003    01-Jan-2005    1           Call1 10      
2     OptStock put     105    01-Jan-2003    01-Jan-2006    0           Put1   5      
 
Index Type    OptSpec Strike Settle         ExerciseDates  AmericanOpt BarrierSpec Barrier Rebate Name     Quantity
3     Barrier call    105    01-Jan-2003    01-Jan-2006    1           ui          102     0      Barrier1 1       
 
Index Type     UOptSpec UStrike USettle        UExerciseDates UAmericanOpt COptSpec CStrike CSettle        CExerciseDates CAmericanOpt Name      Quantity
4     Compound call     130     01-Jan-2003    01-Jan-2006    1            put      5       01-Jan-2003    01-Jan-2005    1            Compound1 3       
 
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name      Quantity
5     Lookback call    115    01-Jan-2003    01-Jan-2006    0           Lookback1 7       
6     Lookback call    115    01-Jan-2003    01-Jan-2007    0           Lookback2 9       
 
Index Type  OptSpec Strike Settle         ExerciseDates  AmericanOpt AvgType    AvgPrice AvgDate Name   Quantity
7     Asian put     110    01-Jan-2003    01-Jan-2006    0           arithmetic NaN      NaN     Asian1 4       
8     Asian put     110    01-Jan-2003    01-Jan-2007    0           arithmetic NaN      NaN     Asian2 6       
 

Примечание

Из-за соображений пространства, составная опция выше (Index 4) был сжат в соответствии со страницей. instdisp отображает все составные поля опций на экране компьютера.

Набор приборов содержит восемь приборов:

  • Два варианта ванили (Call1, Put1)

  • Один вариант барьера (Barrier1)

  • Один составной вариант (Compound1)

  • Два варианта обратного просмотра (Lookback1, Lookback2)

  • Два азиатских варианта (Asian1, Asian2)

Каждый инструмент имеет соответствующий индекс, который определяет цены инструмента в векторе цен, возвращаемом eqpprice.

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

Price = eqpprice(EQPTree, EQPInstSet)
Price =

    8.4791
    2.6375
   12.2632
    3.5091
    8.7941
   12.9577
    4.7444
    3.9178

Расчет цен с использованием ITT

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

load deriv.mat

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

Name              Size            Bytes  Class     Attributes

  BDTInstSet        1x1             27344  struct              
  BDTTree           1x1              7322  struct              
  BKInstSet         1x1             27334  struct              
  BKTree            1x1              8532  struct              
  CRRInstSet        1x1             21066  struct              
  CRRTree           1x1              7086  struct              
  EQPInstSet        1x1             21066  struct              
  EQPTree           1x1              7086  struct              
  HJMInstSet        1x1             27336  struct              
  HJMTree           1x1              8334  struct              
  HWInstSet         1x1             27334  struct              
  HWTree            1x1              8532  struct              
  ITTInstSet        1x1             21070  struct              
  ITTTree           1x1             12660  struct              
  STTInstSet        1x1             21070  struct              
  STTTree           1x1              7782  struct              
  ZeroInstSet       1x1             17458  struct              
  ZeroRateSpec      1x1              2152  struct     

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

instdisp(ITTInstSet)
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name  Quantity
1     OptStock call    95     01-Jan-2006    31-Dec-2008    1           Call1 10      
2     OptStock put     80     01-Jan-2006    01-Jan-2010    0           Put1   4      
 
Index Type    OptSpec Strike Settle         ExerciseDates  AmericanOpt BarrierSpec Barrier Rebate Name     Quantity
3     Barrier call    85     01-Jan-2006    31-Dec-2008    1           ui          115     0      Barrier1 1       
 
Index Type     UOptSpec UStrike USettle        UExerciseDates UAmericanOpt COptSpec CStrike CSettle        CExerciseDates CAmericanOpt Name      Quantity
4     Compound call     99      01-Jan-2006    01-Jan-2010    1            put      5       01-Jan-2006    01-Jan-2010    1            Compound1 3       
 
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name      Quantity
5     Lookback call    85     01-Jan-2006    01-Jan-2008    0           Lookback1 7       
6     Lookback call    85     01-Jan-2006    01-Jan-2010    0           Lookback2 9       
 
Index Type  OptSpec Strike Settle         ExerciseDates  AmericanOpt AvgType    AvgPrice AvgDate Name   Quantity
7     Asian call    55     01-Jan-2006    01-Jan-2008    0           arithmetic NaN      NaN     Asian1 5       
8     Asian call    55     01-Jan-2006    01-Jan-2010    0           arithmetic NaN      NaN     Asian2 7       

Набор приборов содержит восемь приборов:

  • Два варианта ванили (Call1, Put1)

  • Один вариант барьера (Barrier1)

  • Один составной вариант (Compound1)

  • Два варианта обратного просмотра (Lookback1, Lookback2)

  • Два азиатских варианта (Asian1, Asian2)

Каждый инструмент имеет соответствующий индекс, который определяет цены инструмента в векторе цен, возвращаемом ittprice.

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

Price = ittprice(ITTTree, ITTInstSet)
Price =

    1.6506
   10.6832
    2.4074
    3.2294
    0.5426
    6.1845
    3.2052
    6.6074

Расчет цен с использованием STT

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

load deriv.mat

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

 Name              Size            Bytes  Class     Attributes

  BDTInstSet        1x1             27344  struct              
  BDTTree           1x1              7322  struct              
  BKInstSet         1x1             27334  struct              
  BKTree            1x1              8532  struct              
  CRRInstSet        1x1             21066  struct              
  CRRTree           1x1              7086  struct              
  EQPInstSet        1x1             21066  struct              
  EQPTree           1x1              7086  struct              
  HJMInstSet        1x1             27336  struct              
  HJMTree           1x1              8334  struct              
  HWInstSet         1x1             27334  struct              
  HWTree            1x1              8532  struct              
  ITTInstSet        1x1             21070  struct              
  ITTTree           1x1             12660  struct              
  STTInstSet        1x1             21070  struct              
  STTTree           1x1              7782  struct              
  ZeroInstSet       1x1             17458  struct              
  ZeroRateSpec      1x1              2152  struct     

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

instdisp(STTInstSet)
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name  Quantity
1     OptStock call    100    01-Jan-2009    01-Jan-2011    1           Call1 10      
2     OptStock put      80    01-Jan-2009    01-Jan-2012    0           Put1   5      
 
Index Type    OptSpec Strike Settle         ExerciseDates  AmericanOpt BarrierSpec Barrier Rebate Name     Quantity
3     Barrier call    105    01-Jan-2009    01-Jan-2012    1           ui          115     0      Barrier1 1       
 
Index Type     UOptSpec UStrike USettle        UExerciseDates UAmericanOpt COptSpec CStrike CSettle        CExerciseDates CAmericanOpt Name      Quantity
4     Compound call     95      01-Jan-2009    01-Jan-2012    1            put      5       01-Jan-2009    01-Jan-2011    1            Compound1 3       
 
Index Type     OptSpec Strike Settle         ExerciseDates  AmericanOpt Name      Quantity
5     Lookback call    90     01-Jan-2009    01-Jan-2012    0           Lookback1 7       
6     Lookback call    95     01-Jan-2009    01-Jan-2013    0           Lookback2 9       
 
Index Type  OptSpec Strike Settle         ExerciseDates  AmericanOpt AvgType    AvgPrice AvgDate Name   Quantity
7     Asian call    100    01-Jan-2009    01-Jan-2012    0           arithmetic NaN      NaN     Asian1 4       
8     Asian call    100    01-Jan-2009    01-Jan-2013    0           arithmetic NaN      NaN     Asian2 6       
 

Набор приборов содержит восемь приборов:

  • Два варианта ванили (Call1, Put1)

  • Один вариант барьера (Barrier1)

  • Один составной вариант (Compound1)

  • Два варианта обратного просмотра (Lookback1, Lookback2)

  • Два азиатских варианта (Asian1, Asian2)

Каждый инструмент имеет соответствующий индекс, который определяет цены инструмента в векторе цен, возвращаемом sttprice.

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

Price = sttprice(STTTree, STTInstSet)
Price =

    4.5025
    3.0603
    3.7977
    1.7090
   11.7296
   12.9120
    1.6905
    2.6203

Анализ выходных данных функций расчета цен

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

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

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

Call1
Put1
Barrier1
Compound1 
Lookback1  
Lookback2  
Asian1     
Asian2     

Итак, в Price вектор, четвертый элемент, 3.3241, представляет собой цену четвертого инструмента (Compound1) и шестой элемент, 11.7772, представляет собой цену шестого инструмента (Lookback2).

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

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

Call1
Put1
Barrier1
Compound1 
Lookback1  
Lookback2  
Asian1     
Asian2     

Итак, в Price вектор, первый элемент, 1.650, представляет цену первого инструмента (Call1), а восьмой элемент, 6,607, представляет цену восьмого инструмента (Asian2).

Вывод дерева цен для CRR

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

[Price, PriceTree] = crrprice(CRRTree, CRRInstSet)

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

Эта структура дерева цен PriceTree содержит всю информацию о ценах.

PriceTree =
FinObj: 'BinPriceTree'
PTree: {[8x1 double] [8x2 double] [8x3 double] [8x4 double] [8x5 double]}
tObs: [0 1 2 3 4]
dObs: [731582 731947 732313 732678 733043]

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

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

PriceTree.PTree{1}
ans =
8.2863
2.5016
12.1272
3.3241
7.6015
11.7772
4.1797
3.4219

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

Функция eqpprice также возвращает дерево цен, которое можно проверить таким же образом.

Вывод дерева цен для ITT

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

[Price, PriceTree] = ittprice(ITTTree, ITTInstSet)

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

Эта структура дерева цен PriceTree содержит всю информацию о ценах.

PriceTree = 

    FinObj: 'TrinPriceTree'
     PTree: {[8x1 double]  [8x3 double]  [8x5 double]  [8x7 double]  [8x9 double]}
      tObs: [0 1 2 3 4]
      dObs: [732678 733043 733408 733773 734139]

Первое поле этой структуры, FinObjуказывает, что эта структура представляет триномиальное дерево цен. Второе поле, PTree - дерево, в котором хранятся цены на инструменты в каждом узле дерева. Наконец, третье и четвертое поля, tObs и dObs, представляют время наблюдения и дату каждого уровня PTree, с tObs использование единиц в терминах периодов компаундирования.

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

PriceTree.PTree{1}
ans =

    1.6506
   10.6832
    2.4074
    3.2294
    0.5426
    6.1845
    3.2052
    6.6074

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

Цены на поиск и азиатские опционы на деревья акций

Параметры поиска и азиатские параметры зависят от пути, и, таким образом, для любого узла, кроме корневого, не существует уникальных цен. Таким образом, соответствующие значения для опции поиска и азиатской опции в дереве цен устанавливаются как NaN, единственным исключением является корневой узел. Это становится очевидным, если изучить цены во втором узле (tobs = 1) дерева цен CRR:

PriceTree.PTree{2}
ans =

   11.9176         0
    0.9508    7.1914
   16.4600    2.6672
    2.5896    5.0000
       NaN       NaN
       NaN       NaN
       NaN       NaN
       NaN       NaN

Изучение цен во втором узле (tobs = 1) дерева цен ITT отображает:

PriceTree.PTree{2}  
 ans =

    3.9022         0         0
    6.3736   13.3743   22.1915
    5.6914         0         0
    2.7663    3.8594    5.0000
       NaN       NaN       NaN
       NaN       NaN       NaN
       NaN       NaN       NaN
       NaN       NaN       NaN

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

Можно использовать функцию treeviewer для отображения графического представления дерева, позволяющего интерактивно анализировать цены и ставки на узлах дерева до наступления срока погашения. Графические представления деревьев CRR, EQP и LR эквивалентны деревьям Black-Derman-Toy (BDT), учитывая, что все они являются двоичными рекомбинирующими деревьями. Графические представления деревьев ITT и STT эквивалентны деревьям Hull-White (HW), учитывая, что все они являются триномиальными рекомбинирующими деревьями. Обзор использования дерева см. в разделе Графическое представление деревьев treeviewer с деревьями CRR, деревьями EQP, деревьями LR, деревьями ITT и деревьями STT и соответствующими деревьями цен опционов. Следуйте инструкциям для деревьев BDT.

См. также

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

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

Подробнее