ReplicatingVarianceSwap

Создайте ReplicatingVarianceSwap объект калькулятора цен для VarianceSwap инструмент с помощью ratecurve объект

Описание

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

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

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

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

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

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

Создание

Описание

пример

ReplicatingVarianceSwapPricerObj = finpricer(PricerType,'DiscountCurve',ratecurve_obj,'VolatilitySmile',volatilitysmile_value,'SpotPrce',spotprice_value) создает ReplicatingVarianceSwap объект калькулятора цен путем определения 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 объект калькулятора цен и использование 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  
      ⋮

Больше о

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

Алгоритмы

Справедливая стоимость будущего отклонения K var аппроксимирована в терминах следующего портфеля опций ᴨCP:

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

Здесь:

  • Забастовки колл-опциона — забастовкой колл-опциона является K 0 <K 1c <K 2c <K 3c … <K nc.

  • Забастовки пут-опциона — забастовками пут-опциона является K mp <… <K 3p <K 2p <K 1p <K 0 = S*.

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

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

  • S 0 — цена оборотного актива

  • S* — является контуром между забастовками колл-опциона и пут-опциона (например, спотовая цена S 0 или форвардная цена S 0erT)

  • P (K) — текущая цена пут-опциона с забастовкой K

  • C (K) — текущая цена колл-опциона с забастовкой K

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

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

Поскольку не возможно создать такой портфель с бесконечным числом опций и постоянно различных забастовок, соответствующие веса w (K ip) и w (K ic) для портфеля с конечным числом опций, и дискретно различные забастовки могут быть вычислены путем аппроксимации непрерывной функции выплаты f (S T) кусочным линейным способом. Начиная с забастовки в K 0, первый вес колл-опциона может быть вычислен как наклон первой кусочной линейной функции:

wc(K0)=f(K1c)f(K0)K1cK0

Следующий вес колл-опциона с забастовкой K 1c вычисляется как наклон следующей кусочной линейной функции минус предыдущий вес:

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

Эта процедура продолжена для остающихся забастовок колл-опциона:

wc(Kn,c)=f(Kn+1,c)f(Knc)Kn+1,cKn,ci=0n1wc(Ki,c)

Чтобы вычислить веса пут-опциона, подобная процедура может использоваться в противоположном направлении (начинающий с K 0):

wp(Km,p)=f(Km+1,p)f(Kmp)Km,pKm+1,pi=0m1wp(Ki,p)

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

VarianceSwap(t)=Notional×Disc(t,T)×[tTRealizedVariance(0,t)+TtTFairVariance(t,T)StrikeVariance]

Здесь:

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

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

  • Disc (t, T) является коэффициентом дисконтирования от, обосновываются до даты погашения.

  • RealizedVariance (0, t) является реализованным отклонением от даты начала до уладить даты в пунктах.

  • FairVariance (t, T) является справедливым отклонением для остающейся жизни контракта с уладить даты в пунктах.

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

Ссылки

[1] Demeterfi, K., Дермен, E., Камаль, M. и Цз. Цзоу. “Больше, чем вы когда-либо требуемый, чтобы знать о подкачках энергозависимости”. Количественные примечания исследования стратегий. Goldman Sachs, 1999.

Введенный в R2020b