Spread

Spread инструментальный объект

Описание

Создайте и оцените Spread инструментальный объект для одного или нескольких инструментов Распространения с помощью этого рабочего процесса:

  1. Использование fininstrument создать Spread инструментальный объект для одного или нескольких инструментов Распространения.

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

  3. Выберите метод ценообразования.

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

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

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

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

Создание

Описание

пример

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', NINST- 1 массив строк со значениями "Spread", или NINST- 1 массив ячеек из символьных векторов со значениями 'Spread'.

Типы данных: char | cell | 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' и скаляр, неотрицательный числовой или NINST- 1 неотрицательный числовой вектор.

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

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

Примечание

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

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

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

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

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

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

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

Осуществление опции разрабатывает в виде разделенной запятой пары, состоящей из 'ExerciseStyle' и скалярная строка или вектор символов или NINST- 1 массив ячеек из символьных векторов или массив строк.

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

Пользовательское имя для одного из большего количества инструментов в виде разделенной запятой пары, состоящей из 'Name' и скалярная строка или вектор символов или NINST- 1 массив ячеек из символьных векторов или массив строк.

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

Свойства

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

Значение цены исполнения опциона опции, возвращенное как скаляр, неотрицательный числовой или NINST- 1 неотрицательный числовой вектор.

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

Дата осуществления опции, возвращенная как скалярный datetime или NINST- 1 вектор из datetimes.

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

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

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

Стиль осуществления опции, возвращенный как строка или NINST- 1 массив строк со значениями "European".

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

Пользовательское имя для инструмента, возвращенного как скалярная строка или NINST- 1 массив строк.

Типы данных: 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 объект калькулятора цен и использование 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 модель и BjerksundStensland метод ценообразования.

Создайте Spread Инструментальный объект

Используйте fininstrument создать Spread инструментальный объект для трех инструментов Распространения.

SpreadOpt = fininstrument("Spread",'Strike',[105 ; 120 ; 150],'ExerciseDate',datetime([2021,9,15 ; 2021,10,15 ; 2021,11,15]),'OptionType',"put",'ExerciseStyle',"european",'Name',"spread_option")
SpreadOpt=3×1 object
  3x1 Spread array with properties:

    OptionType
    Strike
    ExerciseStyle
    ExerciseDate
    Name

Создайте 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 объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

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

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

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

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

[Price, outPR] = price(outPricer,SpreadOpt,["all"])
Price = 3×1

  146.1732
  159.1989
  185.5513

outPR=3×1 object
  3x1 priceresult array with properties:

    Results
    PricerData

outPR.Results
ans=1×7 table
    Price            Delta                     Gamma                     Lambda                 Vega           Theta       Rho  
    ______    ____________________    ________________________    ____________________    _________________    ______    _______

    146.17    -0.91985     0.91683    0.00057696    7.9581e-05    -0.64817     0.64604    3.6848    0.60671    4.9043    -282.63

ans=1×7 table
    Price           Delta                     Gamma                     Lambda                 Vega           Theta       Rho  
    _____    ____________________    ________________________    ____________________    _________________    ______    _______

    159.2    -0.92024     0.91557    0.00042064    5.4001e-05    -0.59539     0.59237    2.7723    0.40502    5.3984    -331.26

ans=1×7 table
    Price            Delta                    Gamma                    Lambda                 Vega           Theta       Rho  
    ______    ____________________    ______________________    ____________________    _________________    ______    _______

    185.55    -0.92123     0.91439    0.000216    1.9895e-05    -0.51138     0.50758    1.4478    0.16988    6.3711    -424.75

Этот пример показывает рабочий процесс, чтобы оценить товарный 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 объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

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

Создайте Kirk Объект калькулятора цен

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