exponenta event banner

Распространение

Spread объект прибора

Описание

Создать и оценить Spread объект инструмента с использованием этого рабочего процесса:

  1. Использовать fininstrument для создания Spread объект прибора.

  2. Использовать finmodel для указания BlackScholes или Bachelier модель для Spread инструмент.

    • При использовании BlackScholes модель, использование finpricer для указания Kirk, BjerksundStensland, или AssetMonteCarlo метод ценообразования для Spread инструмент.

    • При использовании Bachelier модель, использование finpricer для указания AssetMonteCarlo метод ценообразования для Spread инструмент.

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

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

Создание

Описание

пример

SpreadObj = fininstrument(InstrumentType,'Strike',strike_value,'ExerciseDate',exercise_date) создает Spread путем указания объекта InstrumentType и задает свойства для необходимых аргументов пары имя-значение Strike и ExerciseDate.

пример

SpreadObj = fininstrument(___,Name,Value) задает дополнительные свойства, используя дополнительные пары имя-значение в дополнение к требуемым аргументам в предыдущем синтаксисе. Например, SpreadObj = fininstrument("Spread",'Strike',100,'ExerciseDate',datetime(2019,1,30),'OptionType',"put",'ExerciseStyle',"American",'Name',"spread_instrument") создает Spread пут вариант с американским упражнением. Можно указать несколько аргументов пары имя-значение.

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

развернуть все

Тип прибора, указанный как строка со значением "Spread" или символьный вектор со значением 'Spread'.

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

Spread Аргументы пары «имя-значение»

Укажите требуемые и необязательные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: SpreadObj = fininstrument("Spread",'Strike',100,'ExerciseDate',datetime(2019,1,30),'OptionType',"put",'ExerciseStyle',"American",'Name',"spread_instrument")
Необходимый Spread Аргументы пары «имя-значение»

развернуть все

Цена страйка опциона, указанная как пара, разделенная запятыми, состоящая из 'Strike' и скалярное неотрицательное числовое значение.

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

Дата выполнения опциона, указанная как пара, разделенная запятыми, состоящая из 'ExerciseDate' и скалярное значение datetime, порядковый номер даты, вектор символов даты или строка даты.

Примечание

Для европейского варианта есть только один ExerciseDate на дату истечения срока действия опциона.

Если используется вектор символов даты или строка даты, формат должен быть распознаваемым по datetime потому что ExerciseDate свойство сохраняется как datetime.

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

Дополнительный Spread Аргументы пары «имя-значение»

развернуть все

Тип опции, указанный как разделенная запятыми пара, состоящая из 'OptionType' и скалярный строковый или символьный вектор.

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

Стиль дополнительного упражнения, заданный как разделенная запятыми пара, состоящая из 'ExerciseStyle' и скалярный строковый или символьный вектор.

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

Определяемое пользователем имя прибора, указанное как пара, разделенная запятыми, состоящая из 'Name' и скалярный строковый или символьный вектор.

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

Свойства

развернуть все

Цена страйка опциона, возвращаемая как скалярное неотрицательное числовое значение.

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

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

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

Тип параметра, возвращаемый в виде строки со значением "call" или "put".

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

Стиль дополнительного упражнения, возвращаемый в виде строки со значением "European".

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

Определяемое пользователем имя инструмента, возвращаемое в виде строки.

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

Примеры

свернуть все

В этом примере показан поток операций для оценки Spread инструмент с европейским вариантом при использовании BlackScholes модель и BjerksundStensland способ ценообразования.

Создать Spread Объект КИП

Использовать fininstrument для создания Spread объект прибора.

SpreadOpt = fininstrument("Spread",'Strike',105,'ExerciseDate',datetime(2021,9,15),'OptionType',"put",'ExerciseStyle',"european",'Name',"spread_option")
SpreadOpt = 
  Spread with properties:

       OptionType: "put"
           Strike: 105
    ExerciseStyle: "european"
     ExerciseDate: 15-Sep-2021
             Name: "spread_option"

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

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

BlackScholesModel = finmodel("BlackScholes",'Volatility',[0.2,0.1])
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: [0.2000 0.1000]
    Correlation: [2x2 double]

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

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

Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

outPricer = finpricer("analytic",'Model',BlackScholesModel,'DiscountCurve',myRC,'SpotPrice',[103 105],'DividendValue',[0.025 , 0.028],'PricingMethod',"BjerksundStensland")
outPricer = 
  BjerksundStensland with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.BlackScholes]
        SpotPrice: [103 105]
    DividendValue: [0.0250 0.0280]
     DividendType: "continuous"

Цена Spread Инструмент

Использовать price для расчета цены и чувствительности для Spread инструмент.

[Price, outPR] = price(outPricer,SpreadOpt,["all"])
Price = 95.9884
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: []

outPR.Results
ans=1×7 table
    Price           Delta                    Gamma                    Lambda                 Vega          Theta      Rho  
    ______    __________________    _______________________    ____________________    ________________    _____    _______

    95.988    -0.8916    0.90457    0.0021316    0.00048175    -0.95673     0.97064    13.582    1.5785    3.135    -278.49

В этом примере показан поток операций для определения цены товара. Spread инструмент при использовании BlackScholes модель и Kirk и BjerksundStensland аналитические методы ценообразования.

Общие сведения о параметрах распространения трещин

В нефтяной промышленности нефтепереработчики обеспокоены разницей между их затратами на сырье (сырая нефть) и ценами на продукцию (продукты переработки - бензин, мазут, дизельное топливо и так далее). Разница между этими двумя основными товарами называется спредом трещин. Она представляет собой маржу прибыли между сырой нефтью и нефтепродуктами.

Опцион на спред - это опцион на спред, в котором держатель имеет право, но не обязательство, заключать спотовый или форвардный спред-договор. Варианты распространения трещин часто используются для защиты от снижения распространения трещин или для монетизации волатильности или ценовых ожиданий в отношении распространения.

Определение товара

Предположим, что текущие цены на бензин сильны, и вы хотите смоделировать стратегию варианта распространения трещин, чтобы защитить маржу бензина. Стратегия распределения трещин используется для сохранения прибыли в следующем сезоне. Фьючерс на нефть WTI находится на уровне $93,20 за баррель, а фьючерсный контракт на бензин RBOB - на уровне $2,85 за галлон.

Strike = 20;
Rate = 0.05;

Settle = datetime(2020,1,1);
Maturity = datemnth(Settle,3);

% Price and volatility of RBOB gasoline
PriceGallon1 = 2.85;          % Dollars per gallon
Price1 = PriceGallon1 * 42;   % Dollars per barrel
Vol1 = 0.29;

% Price and volatility of WTI crude oil
Price2 = 93.20;         % Dollars per barrel
Vol2 = 0.36;

% Correlation between the prices of the commodities
Corr = 0.42;

Создать Spread Объект КИП

Использовать fininstrument для создания Spread объект прибора.

SpreadOpt = fininstrument("Spread", 'ExerciseDate', Maturity, 'Strike', Strike,'ExerciseStyle',"european",'Name',"spread_instrument")
SpreadOpt = 
  Spread with properties:

       OptionType: "call"
           Strike: 20
    ExerciseStyle: "european"
     ExerciseDate: 01-Apr-2020
             Name: "spread_instrument"

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

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

BlackScholesModel = finmodel("BlackScholes", 'Volatility', [Vol1,Vol2], 'Correlation', [1 Corr; Corr 1]);

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

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

ZeroCurve = ratecurve('zero', Settle, Maturity, Rate, 'Basis', 1);

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

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

BJSPricer = finpricer("Analytic", 'Model', BlackScholesModel, 'SpotPrice', [Price1 , Price2], 'DiscountCurve', ZeroCurve,'PricingMethod', "BjerksundStensland");

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

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

KirkPricer = finpricer("Analytic", 'Model', BlackScholesModel,'SpotPrice', [Price1 , Price2], 'DiscountCurve', ZeroCurve,'PricingMethod', "Kirk");

Цена Spread Использование прибора BjerksundStensland и Kirk Аналитические методы ценообразования

Использовать price для расчета цены и чувствительности товара Spread инструмент.

[PriceKirk, outPR_Kirk] = price(KirkPricer, SpreadOpt, "all");
[PriceBJS,  outPR_BJS]  = price(BJSPricer,  SpreadOpt, "all");

[outPR_Kirk.Results; outPR_BJS.Results]
ans=2×7 table
    Price           Delta                  Gamma                 Lambda                Vega           Theta      Rho  
    _____    ___________________    ____________________    _________________    ________________    _______    ______

    11.19    0.67224    -0.60665    0.019081    0.021662    7.1907    -6.4891    11.299    9.8869    -14.539    3.1841
     11.2    0.67371    -0.60816    0.018992    0.021572    7.2003    -6.4997    11.198    9.9878    -14.555    3.1906

В этом примере показан поток операций для оценки Spread инструмент с американской опцией при использовании BlackScholes модель и AssetMonteCarlo способ ценообразования.

Создать Spread Объект КИП

Использовать fininstrument для создания Spread объект прибора.

SpreadOpt = fininstrument("Spread",'Strike',100,'ExerciseDate',datetime(2021,9,15),'OptionType',"put",'ExerciseStyle',"American",'Name',"spread_option")
SpreadOpt = 
  Spread with properties:

       OptionType: "put"
           Strike: 100
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2021
             Name: "spread_option"

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

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

Corr = 0.42;
BlackScholesModel = finmodel("BlackScholes","Volatility",[0.3,0.1],"Correlation", [1 Corr;Corr 1])
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: [0.3000 0.1000]
    Correlation: [2x2 double]

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

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

Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

outPricer = finpricer("AssetMonteCarlo","DiscountCurve",myRC,"Model",BlackScholesModel,'SpotPrice',[100,95],'simulationDates',datetime(2021,9,15),'dividendType',["continuous","continuous"],'dividendvalue',[0,0.01])
outPricer = 
  GBMMonteCarlo with properties:

      DiscountCurve: [1x1 ratecurve]
          SpotPrice: [100 95]
    SimulationDates: 15-Sep-2021
          NumTrials: 1000
      RandomNumbers: []
              Model: [1x1 finmodel.BlackScholes]
       DividendType: ["continuous"    "continuous"]
      DividendValue: [0 0.0100]

Цена Spread Инструмент

Использовать price для расчета цены и чувствительности для Spread инструмент.

[Price, outPR] = price(outPricer,SpreadOpt,["all"])
Price = 95
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×7 table
    Price     Delta           Gamma               Lambda          Rho    Theta     Vega 
    _____    ________    _______________    __________________    ___    _____    ______

     95      -1     1    0    3.1492e-14    -1.0526          1     0       0      0    0

В этом примере показан поток операций для оценки Spread инструмент с американской опцией при использовании Bachelier модель и AssetMonteCarlo способ ценообразования.

Создать Spread Объект КИП

Использовать fininstrument для создания Spread объект прибора.

SpreadOpt = fininstrument("Spread",'Strike',100,'ExerciseDate',datetime(2021,9,15),'OptionType',"put",'ExerciseStyle',"American",'Name',"spread_option")
SpreadOpt = 
  Spread with properties:

       OptionType: "put"
           Strike: 100
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2021
             Name: "spread_option"

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

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

Corr = 0.42;
BachelierModel = finmodel("BlackScholes","Volatility",[0.3,0.1],"Correlation", [1 Corr;Corr 1])
BachelierModel = 
  BlackScholes with properties:

     Volatility: [0.3000 0.1000]
    Correlation: [2x2 double]

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

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

Settle = datetime(2018,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

outPricer = finpricer("AssetMonteCarlo","DiscountCurve",myRC,"Model",BachelierModel,'SpotPrice',[100,95],'simulationDates',datetime(2021,9,15),'dividendType',["continuous","continuous"],'dividendvalue',[0,0.01])
outPricer = 
  GBMMonteCarlo with properties:

      DiscountCurve: [1x1 ratecurve]
          SpotPrice: [100 95]
    SimulationDates: 15-Sep-2021
          NumTrials: 1000
      RandomNumbers: []
              Model: [1x1 finmodel.BlackScholes]
       DividendType: ["continuous"    "continuous"]
      DividendValue: [0 0.0100]

Цена Spread Инструмент

Использовать price для расчета цены и чувствительности для Spread инструмент.

[Price, outPR] = price(outPricer,SpreadOpt,["all"])
Price = 95
outPR = 
  priceresult with properties:

       Results: [1x7 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×7 table
    Price     Delta           Gamma               Lambda          Rho    Theta     Vega 
    _____    ________    _______________    __________________    ___    _____    ______

     95      -1     1    0    3.1492e-14    -1.0526          1     0       0      0    0

Подробнее

развернуть все

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