exponenta event banner

цена

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

Описание

пример

[Price,PriceResult] = price(inpPricer,inpInstrument) вычисляет цену инструмента и соответствующую информацию о расчете цены на основе объекта расчета цены inpPricer и объект прибора inpInstrument.

пример

[Price,PriceResult] = price(___,inpSensitivity) добавляет необязательный аргумент для указания чувствительности.

Примеры

свернуть все

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

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

свернуть все

Объект Pricer, указанный как скаляр ReplicatingVarianceSwap объект прайсера. Использовать finpricer для создания ReplicatingVarianceSwap объект прайсера.

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

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

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

(Необязательно) Список вычисляемых чувствительности, указанный как NOUTоколо-1 или 1около-NOUT массив ячеек символьных векторов или строковый массив с возможными значениями 'Price' и 'All'.

inpSensitivity = {'All'} или inpSensitivity = ["All"] указывает, что вывод: 'Price'. Это то же самое, что указать inpSensitivity для включения каждой чувствительности.

Пример: inpSensitivity = {'price'}

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

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

свернуть все

Цена инструмента, возвращенная в виде цифры.

Результат цены, возвращенный как PriceResult объект. Объект имеет следующие поля:

  • PriceResult.Results - Таблица результатов, включающая:

    • Price - Числовое скалярное значение цены свопа

    • FairVariance - Числовая справедливая дисперсия в десятичных разрядах

  • PriceResult.PricerData.ReplicatingPortfolio - Таблица, содержащая ценовые данные

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