exponenta event banner

колебания

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

Описание

пример

outVolatilities = volatilities(inpPricer,ExerciseDate,ForwardValue,Strike) вычисляет подразумеваемые волатильности для Swaption инструмент при использовании SABR прайсер.

Примеры

свернуть все

В этом примере показан рабочий процесс для вычисления подразумеваемых волатильностей для Swaption Прибор.

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

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

ValuationDate = datetime(2016,3,5);
ZeroDates = datemnth(ValuationDate,[1 2 3 6 9 12*[1 2 3 4 5 6 7 8 9 10 12]])';
ZeroRates = [-0.33 -0.28 -0.24 -0.12 -0.08 -0.03 0.015 0.028 ...
            0.033 0.042 0.056 0.095 0.194 0.299 0.415 0.525]'/100;
Compounding = 1;
ZeroCurve = ratecurve("zero",ValuationDate,ZeroDates,ZeroRates,'Compounding',Compounding)
ZeroCurve = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: 1
                Basis: 0
                Dates: [16x1 datetime]
                Rates: [16x1 double]
               Settle: 05-Mar-2016
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

Alpha = 0.0135;
Beta = 0.5;
Rho = 0.4654;
Nu = 0.4957;
Shift = 0.008;
 
SABRModel = finmodel("SABR",'Alpha',Alpha,'Beta',Beta,'Rho',Rho,'Nu',Nu,'Shift',Shift)
SABRModel = 
  SABR with properties:

             Alpha: 0.0135
              Beta: 0.5000
               Rho: 0.4654
                Nu: 0.4957
             Shift: 0.0080
    VolatilityType: "black"

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

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

SABRPricer = finpricer("Analytic", 'Model', SABRModel,'DiscountCurve', ZeroCurve)
SABRPricer = 
  SABR with properties:

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

Вычислить подразумеваемые волатильности

Использовать volatilities для вычисления подразумеваемых летучих компонентов для Swaption инструмент.

SwaptionExerciseDate = datetime(2017,3,5);
ForwardValue = 0.0007;
StrikeGrid = [-0.5; -0.25; -0.125; 0; 0.125; 0.25; 0.5; 1.0; 1.5]/100;
MarketStrikes = ForwardValue + StrikeGrid;

outVolatilities = volatilities(SABRPricer, SwaptionExerciseDate, ForwardValue, MarketStrikes)
outVolatilities = 9×1

    0.2132
    0.1500
    0.1409
    0.1474
    0.1609
    0.1752
    0.2004
    0.2372
    0.2627

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

свернуть все

Цена SABR, указанная как ранее созданная SABR объект прайсера.

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

Дата исполнения опциона, заданная как скалярная дата-время, порядковый номер даты, вектор символов даты или строка даты.

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

Скорость прямого свопа, заданная как скалярное десятичное число.

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

Частота страйка, заданная как скалярное десятичное число.

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

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

свернуть все

Волатильность на выходе, возвращаемая в виде числа.

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