Spread

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.

Типы данных: 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 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 ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

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

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

Использование finpricer для создания Kirk и используйте объект pricer 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 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 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