spreadsensbyls

Вычислите цену и чувствительность для европейских или американских опций спреда с помощью симуляций Монте-Карло

Описание

пример

PriceSens = spreadsensbyls(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr) возвращает цену европейского или американского вызова или опции пут-спред с помощью симуляций Монте-Карло.

Для американских опций Longstaff-Schwartz методом наименьших квадратов используется для вычисления премии за ранние упражнения.

PriceSens = spreadsensbyls(___,Name,Value) добавляет необязательные аргументы пары "имя-значение".

[PriceSens,Paths,Times,Z] = spreadsensbyls(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr) возвращает PriceSens, Paths, Times, и Z европейского или американского вызов или put spreed option с помощью симуляций Монте-Карло.

[PriceSens,Paths,Times,Z] = spreadsensbyls(___,Name,Value) возвращает PriceSens, Paths, Times, и Z и добавляет необязательные аргументы пары "имя-значение".

Примеры

свернуть все

Определите даты опции спреда.

Settle = '01-Jun-2012';
Maturity = '01-Sep-2012';

Определите основное средство 1. Цена и волатильность бензина RBOB

  Price1gallon = 2.85;          % $/gallon
  Price1 = Price1gallon * 42;   % $/barrel
  Vol1 = 0.29;

Определите основное средство 2. Цена и волатильность нефти WTI

  Price2 = 93.20;         % $/barrel
  Vol2 = 0.36;

Определите корреляцию между базовыми ценами основного средства 1 и основного средства 2.

Corr = 0.42;

Определите опцию разворота.

OptSpec = 'call';
Strike = 20;

Определите RateSpec.

rates = 0.05;
Compounding = -1;
Basis = 1;
RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, ...
'EndDates', Maturity, 'Rates', rates, ...
'Compounding', Compounding, 'Basis', Basis)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: -1
             Disc: 0.9876
            Rates: 0.0500
         EndTimes: 0.2500
       StartTimes: 0
         EndDates: 735113
       StartDates: 735021
    ValuationDate: 735021
            Basis: 1
     EndMonthRule: 1

Определите StockSpec для этих двух активов.

StockSpec1 = stockspec(Vol1, Price1)
StockSpec1 = struct with fields:
             FinObj: 'StockSpec'
              Sigma: 0.2900
         AssetPrice: 119.7000
       DividendType: []
    DividendAmounts: 0
    ExDividendDates: []

StockSpec2 = stockspec(Vol2, Price2)
StockSpec2 = struct with fields:
             FinObj: 'StockSpec'
              Sigma: 0.3600
         AssetPrice: 93.2000
       DividendType: []
    DividendAmounts: 0
    ExDividendDates: []

Вычислите цену опции спреда и чувствительности с помощью симуляции Монте-Карло на основе модели Лонгстафа-Шварца.

OutSpec = {'Price', 'Delta', 'Gamma'};
[Price, Delta, Gamma] = spreadsensbyls(RateSpec, StockSpec1, StockSpec2, ...
Settle, Maturity, OptSpec, Strike, Corr, 'OutSpec', OutSpec)
Price = 11.0799
Delta = 1×2

    0.6626   -0.5972

Gamma = 1×2

    0.0209    0.0240

Входные параметры

свернуть все

Структура процентной ставки (в годовом исчислении и постоянно сложной), определяемая RateSpec получен из intenvset. Для получения информации о спецификации процентной ставки смотрите intenvset.

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

Спецификация запаса для базового актива 1. Для получения информации о спецификации запаса см. stockspec.

stockspec может обрабатывать другие типы базовых активов. Для примера, для физических товаров цена представлена StockSpec.Asset, волатильность представлена StockSpec.Sigma, и удобное выражение представлено StockSpec.DividendAmounts.

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

Спецификация запаса для базового актива 2. Для получения информации о спецификации запаса см. stockspec.

stockspec может обрабатывать другие типы базовых активов. Для примера, для физических товаров цена представлена StockSpec.Asset, волатильность представлена StockSpec.Sigma, и удобное выражение представлено StockSpec.DividendAmounts.

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

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

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

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

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

Определение опции как 'call' или 'put', заданный как вектор символов.

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

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

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

Корреляция между базовыми ценами активов, заданная в виде скалярного целого числа.

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

Аргументы в виде пар имя-значение

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

Пример: PriceSens = spreadbyls(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr,'AmericanOpt',1)

Тип опции, заданный как разделенная разделенными запятой парами, состоящая из 'AmericanOpt' и скаляр целочисленный флаг со значениями:

  • 0 - Европейский

  • 1 - Американский

Примечание

Для американских опций Longstaff-Schwartz методом наименьших квадратов используется для вычисления премии за ранние упражнения. Для получения дополнительной информации о методе наименьших квадратов смотрите https ://people.math.etz.ch/% 7Ehjfurrer/training/LongstaffSchwartzAmericanOptionsLeastSquareMonteCarlo.pdf.

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

Количество независимых путей выборки (испытания симуляции), заданное как разделенная разделенными запятой парами, состоящая из 'NumTrials' и неотрицательное скалярное целое число.

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

Количество периодов симуляции в пробной версии, заданное как разделенная разделенными запятой парами, состоящая из 'NumPeriods' и неотрицательное скалярное целое число. NumPeriods учитывается только при ценообразовании европейских опций корзины. Для американских опций спреда, NumPeriods равен количеству дней упражнений в течение срока действия опции.

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

Массив временных рядов зависимых случайных вариатов, заданный как разделенная разделенными запятой парами, состоящая из 'Z' и a NumPeriods-by- 2-by- NumTrials трехмерный массив. The Z значение генерирует вектор движения Brownian (то есть процессы Винера), который управляет симуляцией.

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

Индикатор для антитетической выборки, заданный как разделенная разделенными запятой парами, состоящая из 'Antithetic' и значение true или false.

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

Задайте выходы, заданные как разделенная разделенными запятой парами, состоящая из 'OutSpec'и a NOUT- by- 1 или 1-by- NOUT массив ячеек из векторов символов с возможными значениями 'Price', 'Delta', 'Gamma', 'Vega', 'Lambda', 'Rho', 'Theta', и 'All'.

OutSpec = {'All'} указывает, что выходы должны быть Delta, Gamma, Vega, Lambda, Rho, Theta, и Price, в таком порядке. Это то же самое, что и установка OutSpec для включения каждой чувствительности:

Пример: OutSpec = {'delta','gamma','vega','lambda','rho','theta','price'}

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

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

свернуть все

Ожидаемая цена или чувствительность опции спреда, возвращенная как 1-by- 1 массив, заданный как OutSpec.

Моделируемые пути коррелированных переменных состояния, возвращенные как NumPeriods + 1-by- 2-by- NumTrials 3-D массив временных рядов. Каждая строка Paths - транспонирование вектора X (t) состояния в момент t для данного исследования.

Время наблюдения, сопоставленное с моделируемыми путями, возвращается как NumPeriods + 1-by- 1 вектор-столбец, сопоставленный с моделируемыми путями. Каждый элемент Times связана с соответствующей строкой Paths.

Массив временных рядов зависимых случайных вариаций, возвращаемый как NumPeriods-by- 2-by- NumTrials трехмерный массив, когда Z задается как входной параметр. Если на Z входной параметр не задан, тогда Z выходной аргумент содержит случайные изменения, сгенерированные внутри.

Подробнее о

свернуть все

Опция Спреда

A spread option - это опция, написанная на различии двух базовых активов.

Например, европейский вызов к различию двух активов X1 и X2 имел бы следующую окупаемость при погашении:

max(X1X2K,0)

где:

K - цена доставки.

Для получения дополнительной информации см. Раздел «Опция распределения».

Ссылки

[1] Carmona, R., Durrleman, V. «Pricing and Hedging Spread Options». Обзор СИАМ. Том 45, № 4, с. 627-685, Общество индустриальной и прикладной математики, 2003.

Введенный в R2013b