price

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

Объект Instrument в виде 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