spreadsensbyfd

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

Описание

пример

PriceSens = spreadsensbyfd(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr) возвращает цену и чувствительность европейских или американских вызовов или опций спреда с помощью метода конечного различия Alternate Direction Implicit (ADI). Спред находится между основными средствами, определенными в StockSpec1 минус актив, определенный в StockSpec2.

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

[PriceSens,PriceGrid,AssetPrice1,AssetPrice2,Times] = spreadsensbyfd(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr) возвращает PriceSens, PriceGrid, AssetPrice1, AssetPrice2, и Times для европейских или американских опций расширения вызова или размещения с помощью метода Alternate Direction Implicit (ADI) конечного различия. Спред находится между основными средствами, определенными в StockSpec1 минус актив, определенный в StockSpec2.

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

Примеры

свернуть все

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

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: []

Вычислите цену опции спреда и чувствительности на основе метода конечного различия альтернативного направления (ADI).

OutSpec = {'Price', 'Delta', 'Gamma'};
[Price, Delta, Gamma, PriceGrid, AssetPrice1, AssetPrice2, Times] = ...
spreadsensbyfd(RateSpec, StockSpec1, StockSpec2, Settle, ...
Maturity, OptSpec, Strike, Corr, 'OutSpec', OutSpec);

Отображение цены и чувствительности.

Price
Price = 11.1998
Delta
Delta = 1×2

    0.6736   -0.6082

Gamma
Gamma = 1×2

    0.0190    0.0214

Постройте график сетки конечных различий.

mesh(AssetPrice1, AssetPrice2, PriceGrid(:, :, 1)');
    title('Spread Option Prices for Range of Underlying Prices');
    xlabel('Price of underlying asset 1');
    ylabel('Price of underlying asset 2');
    zlabel('Price of spread option');

Figure contains an axes. The axes with title Spread Option Prices for Range of Underlying Prices contains an object of type surface.

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

свернуть все

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

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

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

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

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

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

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

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

Даты расчета для опции расширения, заданные как векторы символов даты или как серийные номера дат с помощью NINST-by- 1 вектор или массив ячеек с вектором символов датами.

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

Дата погашения для опции расширения, заданная как векторы символов даты или как серийные номера дат с помощью NINST-by- 1 вектор или массив ячеек с вектором символов датами.

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

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

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

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

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

Корреляция между базовыми ценами активов, заданная в виде целого числа с помощью NINST-by- 1 вектор.

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

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

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

Пример: [PriceSens,PriceGrid,AssetPrice1,AssetPrice2,Times] = spreadsensbyfd(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr, 'AssetPriceMin','AssetPriceMax','PriceGridSize','TimeGridSize','AmericanOpt',0,'OutSpec',{'All'})

Задайте выходы, заданные как разделенная разделенными запятой парами, состоящая из '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

Минимальная цена для контура сетки цен, заданная как разделенная разделенными запятой парами, состоящая из 'AssetPriceMin' и a 1-by- 2 массив. Первая запись в массиве соответствует первому активу, заданному как StockSpec1 и вторая запись соответствует второму активу, заданному как StockSpec2.

Для метода конечного различия состав сетки влияет на качество выхода и время выполнения. Настоятельно рекомендуется использовать необязательные аргументы AssetPriceMin, AssetPriceMax, PriceGridSize, и TimeGridSize контролировать состав сетки для обеспечения качества выхода и разумного времени выполнения.

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

Максимальная цена для контура сетки цен, заданная как разделенная разделенными запятой парами, состоящая из 'AssetPriceMax' и a 1-by- 2 массив. Первая запись в массиве соответствует первому активу, заданному как StockSpec1 и вторая запись соответствует второму активу, заданному как StockSpec2.

Для метода конечного различия состав сетки влияет на качество выхода и время выполнения. Настоятельно рекомендуется использовать необязательные аргументы AssetPriceMin, AssetPriceMax, PriceGridSize, и TimeGridSize контролировать состав сетки для обеспечения качества выхода и разумного времени выполнения.

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

Размер сетки с конечным различием, заданный как разделенная разделенными запятой парами, состоящая из 'PriceGridSize' и a 1-by- 2 массив. Первая запись соответствует первому активу, заданному как StockSpec1 и вторая запись соответствует второму активу, заданному как StockSpec2.

Для метода конечного различия состав сетки влияет на качество выхода и время выполнения. Настоятельно рекомендуется использовать необязательные аргументы AssetPriceMax, PriceGridSize, и TimeGridSize контролировать состав сетки для обеспечения качества выхода и разумного времени выполнения.

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

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

Для метода конечного различия состав сетки влияет на качество выхода и время выполнения. Настоятельно рекомендуется использовать необязательные аргументы AssetPriceMax, PriceGridSize, и TimeGridSize контролировать состав сетки для обеспечения качества выхода и разумного времени выполнения.

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

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

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

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

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

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

свернуть все

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

Сетка, содержащая цены, рассчитанные методом конечных различий, возвращается как 3-D сетка с размером PriceGridSize(1) * PriceGridSize(2) * TimeGridSize. Цена за t = 0 содержится в PriceGrid(:, :, 1).

Цены для первого актива, определяемые StockSpec1, соответствующий первой размерности PriceGrid, возвращается как вектор.

Цены для второго актива, определяемые StockSpec2, соответствующий второму измерению PriceGrid, возвращается как вектор.

Времена, соответствующие третьей размерности PriceGrid, возвращается как вектор.

Подробнее о

свернуть все

Опция Спреда

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

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

max(X1X2K,0)

где:

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

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

Ссылки

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

[2] Villeneuve, S., Zanette, A. «Parabolic ADI Methods for Pricing American Options on Two Stock». Математика исследований операций. Том 27, № 1, стр. 121-149, ИНФОРМС, 2002.

[3] Ikonen, S., Toivanen, J. Эффективные численные методы для ценообразования американских опций при стохастической волатильности. Wiley InterScience, 2007.

Введенный в R2013b