exponenta event banner

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около-1 векторные или клеточные массивы символьных векторных дат.

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

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

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

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

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

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

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

Корреляция между базовыми ценами активов, заданными как целое число с использованием NINSTоколо-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' и 1около-2 массив. Первая запись в массиве соответствует первому активу, определенному StockSpec1 и вторая запись соответствует второму основному средству, определенному StockSpec2.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

Подробнее

свернуть все

Опцион разворота

Опцион спреда - это опцион, написанный на разнице двух базовых активов.

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

max (X1 X2 K, 0)

где:

K - цена удара.

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

Ссылки

[1] Кармона, Р., Дуррлеман, В. «Опционы на ценообразование и хеджирование спредов». Обзор СИАМ. том 45, № 4, стр. 627-685, Общество промышленной и прикладной математики, 2003.

[2] Вильнев, С., Занетт, А. «Параболические методы ADI для ценообразования американских опционов на две акции». Математика исследований операций. том 27, № 1, стр. 121-149, INFORMS, 2002.

[3] Иконен, С., Тойванен, Дж. Эффективные численные методы ценообразования американских опционов при стохастической волатильности. Wiley InterScience, 2007.

Представлен в R2013b