price

Вычислите цену для инструмента капитала с ReplicatingVarianceSwap калькулятор цен

Описание

пример

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

пример

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

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить VarianceSwap инструмент, когда вы используете ratecurve и a 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 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-by- 1 или 1-by- NOUT массив ячеек из векторов символов или строковых массивов с возможными значениями 'Price' и 'All'.

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

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

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

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

свернуть все

Цена инструмента, возвращенная в виде числа.

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

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

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

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

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

Введенный в R2020b