exponenta event banner

ReplicatingVarianceSwap

Создать ReplicatingVarianceSwap объект pricer для VarianceSwap прибор с использованием ratecurve объект

Описание

Создать и оценить VarianceSwap объект прибора с ratecurve объект и ReplicatingVarianceSwap метод ценообразования с использованием этого потока операций:

  1. Использовать fininstrument для создания VarianceSwap объект прибора.

  2. Использовать ratecurve для задания модели кривой для VarianceSwap инструмент.

  3. Использовать finpricer для указания ReplicatingVarianceSwap ценовой объект для VarianceSwap инструмент.

Дополнительные сведения об этом потоке операций см. в разделе Начало работы с потоками операций с использованием объектной структуры для расчета цен на финансовые инструменты.

Для получения дополнительной информации о доступных методах ценообразования для VarianceSwap см. раздел Выбор приборов, моделей и прайсеров.

Создание

Описание

пример

ReplicatingVarianceSwapPricerObj = finpricer(PricerType,'DiscountCurve',ratecurve_obj,'VolatilitySmile',volatilitysmile_value,'SpotPrce',spotprice_value) создает ReplicatingVarianceSwap объект pricer путем указания PricerType и устанавливает свойства, используя необходимые аргументы пары имя-значение DiscountCurve, VolatilitySmile, и SpotPrice.

пример

ReplicatingVarianceSwapPricerObj = finpricer(___,Name,Value) задает дополнительные свойства, используя дополнительные пары имя-значение в дополнение к требуемым аргументам в предыдущем синтаксисе. Например, ReplicatingVarianceSwapPricerObj = finpricer("ReplicatingVarianceSwap",'DiscountCurve',ratecurve_obj,'VolatilitySmile',smiletable,'SpotPrice',1000,'CallPutBoundary',"forwardprice",'InterpMethod',"cubic") создает ReplicatingVarianceSwap объект прайсера. Можно указать несколько аргументов пары имя-значение.

Входные аргументы

развернуть все

Тип прайсера, указанный как строка со значением "ReplicatingVarianceSwap" или символьный вектор со значением 'ReplicatingVarianceSwap'.

Типы данных: char | string

ReplicatingVarianceSwap Аргументы пары «имя-значение»

Укажите требуемые и необязательные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: ReplicatingVarianceSwapPricerObj = finpricer("ReplicatingVarianceSwap",'DiscountCurve',ratecurve_obj,'VolatilitySmile',smiletable,'SpotPrice',1000,'CallPutBoundary',"forwardprice",'InterpMethod',"cubic")
Необходимый ReplicatingVarianceSwap Аргументы пары «имя-значение»

развернуть все

Это свойство доступно только для чтения.

ratecurve объект для дисконтирования денежных потоков, указанный как разделенная запятыми пара, состоящая из 'DiscountCurve' и имя ratecurve объект.

Примечание

  • Задать плоскую ratecurve объект для DiscountCurve. При использовании непластового ratecurve , программное обеспечение использует скорость в ratecurve объект на Maturity и предполагает, что значение является постоянным для срока действия опциона на акционерный капитал.

  • Программное обеспечение использует Basis значение указанного ratecurve объект для расчета дисконтирования и начисления для VarianceSwap объект прибора.

Типы данных: object

Таблица улыбки волатильности, указанная как пара, разделенная запятыми, состоящая из 'VolatilitySmile' и таблица со столбцами "Strike" и "Volatility" или NumVolsоколо-2 где первый столбец - страйки, а второй столбец - волатильность в десятичных разрядах.

Типы данных: table | double

Спотовая цена базового актива, указанная как пара, разделенная запятыми, состоящая из 'SpotPrice' и скалярный неотрицательный числовой.

Примечание

SpotPrice должны быть охвачены диапазоном ударов в VolatilitySmile.

Типы данных: double

Дополнительный ReplicatingVarianceSwap Аргументы пары «имя-значение»

развернуть все

Граничный удар для опций вызова и пута, определяемый как пара, разделенная запятыми, состоящая из 'CallPutBoundary' и скалярный числовой или один из следующих символьных векторов или строк:

  • "spotprice" - Граница опциона колл и пут является спотовой ценой.

  • "forwardprice" - Забастовка границы опциона колл и пут является форвардной ценой.

Примечание

CallPutBoundary должны быть охвачены диапазоном ударов в VolatilitySmile.

Типы данных: double | char | string

Метод интерполяции для SmileTable, указанная как пара, разделенная запятыми, состоящая из 'InterpMethod' и скалярный строковый или символьный вектор, использующий поддерживаемое значение. Дополнительные сведения о методах интерполяции см. в разделе interp1.

Типы данных: char | string

Свойства

развернуть все

ratecurve объект для дисконтирования денежных потоков, возвращенный как ratecurve объект.

Примечание

Программное обеспечение использует Basis значение указанного ratecurve объект для расчета дисконтирования и начисления для VarianceSwap объект прибора.

Типы данных: object

Таблица улыбки волатильности, возвращенная как таблица со столбцами "Strike" и "Volatility" или NumVolsоколо-2 где первый столбец - страйки, а второй столбец - волатильность в десятичных разрядах.

Типы данных: table | double

Страйк-цена базового актива, возвращенная в виде скалярного неотрицательного числового.

Типы данных: double

Граничный удар для опций вызова и размещения, возвращаемый в виде цифры или строки со значением "spotprice" или "forwardprice".

Типы данных: double | char | string

Метод интерполяции, возвращаемый как скалярная строка.

Типы данных: string

Функции объекта

priceРасчетная цена долевого инструмента с ReplicatingVarianceSwap калькулятор цен

Примеры

свернуть все

В этом примере показан поток операций для оценки VarianceSwap инструмент при использовании ratecurve и ReplicatingVarianceSwap способ ценообразования.

Создать VarianceSwap Объект КИП

Использовать fininstrument для создания VarianceSwap объект прибора.

VarianceSwapInst = fininstrument("VarianceSwap",'Maturity',datetime(2021,5,1),'Notional',150,'StartDate',datetime(2020,5,1),'RealizedVariance',0.05,'Strike',0.1,'Name',"variance_swap_instrument")
VarianceSwapInst = 
  VarianceSwap with properties:

            Notional: 150
    RealizedVariance: 0.0500
              Strike: 0.1000
           StartDate: 01-May-2020
            Maturity: 01-May-2021
                Name: "variance_swap_instrument"

Создать ratecurve Объект

Создание плоского ratecurve объект с использованием ratecurve.

Settle = datetime(2020, 9, 15);
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])];
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
Basis = 1;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates,'Basis',Basis)
ZeroCurve = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 1
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 15-Sep-2020
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создать ReplicatingVarianceSwap Объект прайсера

Использовать finpricer для создания ReplicatingVarianceSwap pricer object и используйте ratecurve объект для 'DiscountCurve' аргумент пары имя-значение.

Strike = (50:5:135)';
Volatility = [.49;.45;.42;.38;.34;.31;.28;.25;.23;.21;.2;.21;.21;.22;.23;.24;.25;.26];
VolatilitySmile = table(Strike, Volatility);
SpotPrice = 100;
CallPutBoundary = 100;

outPricer =  finpricer("ReplicatingVarianceSwap",'DiscountCurve', ZeroCurve, 'VolatilitySmile', VolatilitySmile, ...
'SpotPrice', SpotPrice, 'CallPutBoundary', CallPutBoundary)
outPricer = 
  ReplicatingVarianceSwap with properties:

      DiscountCurve: [1x1 ratecurve]
       InterpMethod: "linear"
    VolatilitySmile: [18x2 table]
          SpotPrice: 100
    CallPutBoundary: 100

Цена VarianceSwap Инструмент

Использовать price для расчета цены и справедливой разницы для VarianceSwap инструмент.

[Price, outPR] = price(outPricer,VarianceSwapInst,["all"])
Price = 8.1997
outPR = 
  priceresult with properties:

       Results: [1x2 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×2 table
    Price     FairVariance
    ______    ____________

    8.1997      0.21701   

outPR.PricerData.ReplicatingPortfolio
ans=19×6 table
    CallPut    Strike    Volatility      Weight       Value     Contribution
    _______    ______    __________    __________    _______    ____________

    "put"        50         0.49        0.0064038    0.39164      0.002508  
    "put"        55         0.45        0.0052877    0.49353     0.0026097  
    "put"        60         0.42        0.0044402    0.67329     0.0029895  
    "put"        65         0.38        0.0037814    0.80343     0.0030381  
    "put"        70         0.34        0.0032592     0.9419     0.0030698  
    "put"        75         0.31        0.0028382      1.223     0.0034711  
    "put"        80         0.28        0.0024938       1.58     0.0039403  
    "put"        85         0.25        0.0022086     2.0456     0.0045177  
    "put"        90         0.23        0.0019696     2.9221     0.0057554  
    "put"        95         0.21        0.0017675     4.1406     0.0073183  
    "put"       100          0.2       0.00082405     6.1408     0.0050603  
    "call"      100          0.2       0.00077087     6.4715     0.0049887  
    "call"      105         0.21        0.0014465     4.7094     0.0068119  
    "call"      110         0.21        0.0013178     3.1644     0.0041701  
    "call"      115         0.22        0.0012056      2.307     0.0027814  
    "call"      120         0.23        0.0011072     1.7127     0.0018962  
      ⋮

Подробнее

развернуть все

Алгоритмы

Справедливая стоимость будущего отклонения Kvar приближена с точки зрения следующего портфеля опционов ᴨCP:

Kvar = 2T {rT (S0S * erT 1) −logS*S0+erTπCP}πCP=∑iw (Kip) P (S, Kip) +∑iw (Kic) C (S, Kic)

Здесь:

  • Забастовки колл-опциона - забастовка колл-опциона - K0 <K1c <K2c <K3c... < Кнк.

  • Put option striks - Забастовки put option являются Kmp <... < K3p < K2p < K1p < K0 = S *.

  • Kvar - справедливая стоимость будущего отклонения

  • ᴨCP - портфель опционов колл и пут

  • S0 - текущая цена основного средства

  • S * - граница между ударами опциона колл и пут (например, спотовая цена S0 или форвардная цена S0erT)

  • P (K) - текущая цена опциона пут со страйком K

  • C (K) - текущая цена опциона колл со страйком K

Если портфель опционов ᴨCP имеет бесконечное количество опционов с непрерывно изменяющимися ударами, он имеет следующую функцию погашения на момент погашения:

f (ST) = 2T [ST S * S * − logSTS *]

Поскольку невозможно построить такой портфель с бесконечным числом вариантов и непрерывно изменяющимися ударами, соответствующие веса w (Kip) и w (Kic) для портфеля с конечным числом вариантов и дискретно изменяющимися ударами могут быть вычислены путем аппроксимации непрерывной функции f (ST) окупаемости кусочно-линейным образом. Начиная со страйка при K0, первый вес опциона вызова может быть вычислен как наклон первой кусочно-линейной функции:

wc (K0) = f (K1c) f (K0) K1c − K0

Вес опции следующего вызова с K1c страйка вычисляется как наклон следующей линейной функции по частям минус предыдущий вес:

wc (K1c) = f (K2c) f (K1c) K2c K1c − wc (K0)

Эта процедура продолжается для остальных ударов опциона колла:

wc (Kn, c) = f (Kn + 1, c) f (Knc) Kn+1,c−Kn,c−∑i=0n−1wc (Ki, c)

Для вычисления весов опциона пут можно использовать аналогичную процедуру в противоположном направлении (начиная с K0):

wp (Km, p) = f (Km + 1, p) f (Kmp) Km,p−Km+1,p−∑i=0m−1wp (Ki, p)

После вычисления справедливого отклонения фактическая цена, уплаченная на рынке в момент времени t для свопа отклонения с, в момент времени 0, будет вычислена следующим образом:

VariaSwap (t) = Условный × диск (t, T) × [tTRealizedVariance (0, t) + T tTFairVariance (t, T) − StrikeVariance]

Здесь:

  • t - время от даты начала свопа отклонений до даты расчета.

  • T - это время от даты начала до даты погашения свопа отклонений.

  • Диск (t, T) - это коэффициент дисконтирования от расчета до срока погашения.

  • Отклонение (0, t) - это реализованное отклонение от начальной даты до даты расчета в базисных точках.

  • FairVariance (t, T) является справедливым отклонением для оставшегося срока действия контракта на дату расчета в базисных пунктах.

  • StrikeVariance представляет собой дисперсию страйка, заданную на начальном этапе (дату начала), в базисных точках.

Ссылки

[1] Деметерфи, К., Дерман, Э., Камаль, М. и Дж. Зоу. «Больше, чем вы когда-либо хотели знать о свопах волатильности». Научно-исследовательские записки по количественным стратегиям. Goldman Sachs, 1999.

Представлен в R2020b