Spread объект прибора
Создать и оценить Spread объект инструмента с использованием этого рабочего процесса:
Использовать fininstrument для создания Spread объект прибора.
Использовать 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 пут вариант с американским упражнением. Можно указать несколько аргументов пары имя-значение.
InstrumentType - Тип прибора"Spread" | символьный вектор со значением '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' - Цена страйка опционаЦена страйка опциона, указанная как пара, разделенная запятыми, состоящая из 'Strike' и скалярное неотрицательное числовое значение.
Типы данных: double
'ExerciseDate' - Дата опционного упражненияДата выполнения опциона, указанная как пара, разделенная запятыми, состоящая из 'ExerciseDate' и скалярное значение datetime, порядковый номер даты, вектор символов даты или строка даты.
Примечание
Для европейского варианта есть только один ExerciseDate на дату истечения срока действия опциона.
Если используется вектор символов даты или строка даты, формат должен быть распознаваемым по datetime потому что ExerciseDate свойство сохраняется как datetime.
Типы данных: double | char | string | datetime
Spread Аргументы пары «имя-значение»'OptionType' - Тип опции"call" (по умолчанию) | строка со значением "call" или "put" | символьный вектор со значением 'call' или 'put'Тип опции, указанный как разделенная запятыми пара, состоящая из 'OptionType' и скалярный строковый или символьный вектор.
Типы данных: char | string
'ExerciseStyle' - Стиль дополнительного упражнения"European" (по умолчанию) | строка со значением "European"
| символьный вектор со значением 'European'
Стиль дополнительного упражнения, заданный как разделенная запятыми пара, состоящая из 'ExerciseStyle' и скалярный строковый или символьный вектор.
Типы данных: string | char
'Name' - Определяемое пользователем имя прибора" "
(по умолчанию) | строка | символьный векторОпределяемое пользователем имя прибора, указанное как пара, разделенная запятыми, состоящая из 'Name' и скалярный строковый или символьный вектор.
Типы данных: char | string
Strike - Цена страйка опционаЦена страйка опциона, возвращаемая как скалярное неотрицательное числовое значение.
Типы данных: double
ExerciseDate - Дата опционного упражненияДата выполнения опциона, возвращенная в качестве даты и времени.
Типы данных: datetime
OptionType - Тип опции "call" (по умолчанию) | строка со значением "call" или "put"Тип параметра, возвращаемый в виде строки со значением "call" или "put".
Типы данных: string
ExerciseStyle - Стиль дополнительного упражнения"European" (по умолчанию) | строка со значением "European"Стиль дополнительного упражнения, возвращаемый в виде строки со значением "European".
Типы данных: string
Name - Определяемое пользователем имя прибора" "
(по умолчанию) | строкаОпределяемое пользователем имя инструмента, возвращаемое в виде строки.
Типы данных: 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
Опцион спреда написан на разнице двух базовых активов.
Например, европейский призыв о разнице двух активов X1 и X2 имеет следующие выплаты при погашении:
K, 0)
K - цена удара.
Дополнительные сведения см. в разделе Опция разворота.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.