spreadbyfd

Ценовые европейские или американские опции спреда с использованием метода конечного различия

Описание

пример

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

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

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

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

Примеры

свернуть все

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

Settle = '01-Jan-2012';
Maturity = '01-April-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: 734960
       StartDates: 734869
    ValuationDate: 734869
            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: []

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

[Price, PriceGrid, AssetPrice1, AssetPrice2, Times] = ...
 spreadbyfd(RateSpec, StockSpec1, StockSpec2, Settle, ...
 Maturity, OptSpec, Strike, Corr);

Отобразите цену.

Price
Price = 11.1998

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

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 вектор или массив ячеек с вектором символов датами.

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

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

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

Определение опции как '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.

Пример: [Price,PriceGrid,AssetPrice1,AssetPrice2,Times] = spreadbyfd(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr,'AssetPriceMin','AssetPriceMax','PriceGridSize','TimeGridSize','AmericanOpt',0)

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

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

свернуть все

Ожидаемые цены опции спреда, возвращенные как NINST-by- 1 вектор.

Сетка, содержащая цены, рассчитанные методом конечных различий, возвращается как 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
Для просмотра документации необходимо авторизоваться на сайте