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

Цены на вычислительные приборы

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

  • Опции запаса ванили

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

  • Экзотические опции

    • Азиат

    • Барьер

    • Комплекс

    • Lookback

    • Stock опций (графики размещения и вызова на Бермудских островах)

Синтаксис вызова функции 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. См. Building Equity Binary Trees и Building Implied Trinomial Trees, чтобы узнать, как создать эти структуры.

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), а восьмые элементы представляет собой цену восьмого инструмента (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

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

Цены на интерполяцию и азиатские опции для Equity Trees

Опции поиска и азиатские опции зависят от пути, и, как таковые, нет уникальных цен ни для одного узла, кроме корневого. Итак, соответствующие значения для интерполяционных и азиатских опций в дереве цен установлены в 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.

См. также

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

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

Подробнее о