VarianceSwap

VarianceSwap инструментальный объект

Описание

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

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

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

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

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

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

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

Создание

Описание

пример

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.

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

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

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

Дата начала, возвращенная как datetime.

Типы данных: 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 объект калькулятора цен и использование 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 объект калькулятора цен и использование 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