exponenta event banner

VarianceSwap

VarianceSwap объект прибора

Описание

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

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

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

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

    При использовании Heston модель, использование finpricer для указания Heston метод ценообразования для VarianceSwap инструмент.

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

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

Создание

Описание

пример

VarianceSwapInstrument = fininstrument(InstrumentType,'Maturity',maturity_date,'Notional',notional_value) создает VarianceSwap путем указания объекта InstrumentType и устанавливает свойства, используя необходимые аргументы пары имя-значение Maturity и Notional.

VarianceSwap прибор поддерживает ReplicatingVarianceSwap и Heston методы ценообразования. Для получения дополнительной информации о VarianceSwap см. раздел Подробнее.

пример

VarianceSwapInstrument = fininstrument(___,Name,Value) задает дополнительные свойства, используя дополнительные аргументы пары имя-значение в дополнение к требуемым аргументам в предыдущем синтаксисе. Например, VarianceSwapInstrument = fininstrument("VarianceSwap",'Maturity',datetime(2019,1,30),'Notional',100,'StartDate',datetime(2016,1,30),'RealizedVariance',0.02,'Strike',110,'Name',"varianceswap_instrument") создает VarianceSwap опцион со сроком погашения 30 января 2019 года. Можно указать несколько аргументов пары имя-значение.

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

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

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

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

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

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

Пример: VarianceSwapInstrument = fininstrument("VarianceSwap",'Maturity',datetime(2019,1,30),'Notional',100,'StartDate',datetime(2016,1,30),'RealizedVariance',0.02,'Strike',110,'Name',"varianceswap_instrument")
Необходимый VarianceSwap Аргументы пары «имя-значение»

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

Дата погашения свопа отклонений, указанная как пара, разделенная запятыми, состоящая из 'Maturity' и скалярное значение datetime, порядковый номер даты, вектор символов даты или строка даты.

Если используется вектор символов даты или строка даты, формат должен быть распознаваемым по datetime потому что Maturity свойство сохраняется как datetime.

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

Условное количество, указанное как разделенная запятыми пара, состоящая из 'Notional' и скалярный числовой.

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

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

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

Дата начала, указанная как пара, разделенная запятыми, состоящая из 'StartDate' и скалярное значение datetime, порядковый номер даты, вектор символов даты или строка даты.

Если используется вектор символов даты или строка даты, формат должен быть распознаваемым по datetime потому что ExerciseDate свойство сохраняется как datetime.

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

Реализованная дисперсия, указанная как разделенная запятыми пара, состоящая из 'RealizedVariance' и скалярное десятичное число.

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

Дисперсия страйка, указанная как разделенная запятыми пара, состоящая из 'Strike' и скалярное десятичное число.

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

Определяемое пользователем имя прибора, указанное как пара, разделенная запятыми, состоящая из 'Name' и скалярный строковый или символьный вектор.

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

Свойства

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

Дата погашения, возвращенная в качестве даты и времени.

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

Условная величина, возвращаемая в виде скалярного числа.

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

Дата начала, возвращенная в качестве даты и времени.

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

Реализованная дисперсия, возвращаемая как скалярное десятичное число.

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

Дисперсию страйка, возвращаемую как скалярное десятичное число.

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

Определяемое пользователем имя инструмента, возвращаемое в виде строки.

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

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

Примеры

свернуть все

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

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

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

VarianceSwapInst = fininstrument("VarianceSwap",'Maturity',datetime(2020,9,15),'Notional',100,'StartDate',datetime(2020,6,15),'RealizedVariance',0.02,'Strike',0.05,'Name',"variance_swap_instrument")
VarianceSwapInst = 
  VarianceSwap with properties:

            Notional: 100
    RealizedVariance: 0.0200
              Strike: 0.0500
           StartDate: 15-Jun-2020
            Maturity: 15-Sep-2020
                Name: "variance_swap_instrument"

Создать Heston Объект модели

Использовать finmodel для создания Heston объект модели.

HestonModel = finmodel("Heston",'V0',0.06,'ThetaV',0.1,'Kappa',0.9,'SigmaV',0.7,'RhoSV',-.3)
HestonModel = 
  Heston with properties:

        V0: 0.0600
    ThetaV: 0.1000
     Kappa: 0.9000
    SigmaV: 0.7000
     RhoSV: -0.3000

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

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

Settle = datetime(2020, 1, 1);
ZeroTimes = calmonths(3);
ZeroRates = 0.05;
ZeroDates = Settle + ZeroTimes;
Basis = 1;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates,'Basis',Basis)
ZeroCurve = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 1
                Dates: 01-Apr-2020
                Rates: 0.0500
               Settle: 01-Jan-2020
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

outPricer = finpricer("Analytic",'DiscountCurve',ZeroCurve,'Model',HestonModel)
outPricer = 
  Heston with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.Heston]

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

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

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

       Results: [1x2 table]
    PricerData: []

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

    10.832      0.07039   

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

Подробнее

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

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