spreadbyfd

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

Синтаксис

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

Описание

пример

Price = spreadbyfd(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr) возвращает цену европейского или американского вызова или помещенных опций распространения с помощью метода конечной разности Альтернативного неявного направления (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 для европейского или американского вызова или помещенных опций распространения с помощью метода конечной разности Альтернативного неявного направления (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: []

Вычислите цену опции распространения на основе метода конечной разности Альтернативного неявного направления (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');

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

свернуть все

Структура термина процентной ставки (пересчитанный на год и постоянно составляемый), заданный 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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-by-2 массив. Первая запись в массиве соответствует первому активу, заданному StockSpec1, и вторая запись соответствует второму активу, заданному StockSpec2.

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

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

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

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

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

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

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

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

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

Для метода конечной разности состав сетки влияет на качество вывода и время выполнения. Это настоятельно рекомендовано, чтобы использовать дополнительный argumentsAssetPriceMax, 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, возвращенного как вектор.

Ссылки

[1] Кармона, R., Деррлмен, V. “Оценок и Хеджирование Опций Распространения”. Анализ SIAM. Издание 45, № 4, стр 627–685, Общество Промышленной и Прикладной математики, 2003.

[2] Вильнев, S., Zanette, A. “Параболические Методы ADI для Оценки американских Опций на Двух Запасах”. Математика Исследования операций. Издание 27, № 1, стр 121–149, INFORMS, 2002.

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

Введенный в R2013b