Опции ценообразования с использованием метода Лонгстафа-Шварца

В этом примере показано, как оценить опцию swing с помощью симуляции Монте-Карло и метода Лонгстафа-Шварца. Нейтральное к риску симуляция базовой цены на природный газ проводится с использованием модели среднего возврата. Результаты симуляции используются для оценки опции swing на основе метода Лонгстафа-Шварца [6]. Этот подход использует регрессионный метод, чтобы аппроксимировать значение продолжения опции. Сравнение проводится между полиномиальным и сплайн базисом, чтобы соответствовать регрессии. Наконец, полученные цены анализируются по более низким и верхним контурам, полученным из стандартных европейских и американских опций.

Обзор опций Swing

Опции swing являются популярными финансовыми инструментами на энергетическом рынке, которые обеспечивают гибкость в объеме поставляемого актива. В порядок, чтобы потребители энергии защитились от колебаний цен на энергоносители, они хотят заблокироваться в цене, приобретая форвардный контракт, называемый форвардным контрактом базовой нагрузки. Тем не менее, потребители не знают, сколько энергии будет использовано в будущем, и энергетические товары, такие как электроэнергия и газ, не могут быть легко сохранены. Поэтому потребитель хочет гибкости, чтобы изменить количество энергии, которое поставляется на каждую дату поставки. Опции swing обеспечивают эту гибкость. Таким образом, полный контракт состоит из двух частей: базового форвардного контракта и компонента swing опции.

Опции swing, как правило, являются внебиржевыми (OTC) контрактами, которые могут быть сильно настроены. Поэтому существует много различных типов ограничений и штрафов (для получения дополнительной информации см. [5]). В этом примере опция swing оценивается там, где единственным ограничением является дневной объем, который известен как Количество ежедневного контракта (DCQ). При использовании права качания объем не может опуститься ниже минимального значения DCQ (minDCQ), или подняться выше максимального DCQ (maxDCQ).

Существует несколько методов ценовых опций качания, такие как конечные различия, симуляция и динамическое программирование на основе деревьев [5]. Этот пример использует основанный на симуляции подход с методом Лонгстафа-Шварца. Преимущество основанного на моделировании подхода заключается в том, что динамика, используемая для моделирования базовой цены актива, отделяется от алгоритма ценообразования. В конечных различиях и древовидных методах алгоритм ценообразования должен быть изменен в порядок, чтобы рассмотреть ценообразование с другой базовой динамикой цен.

Нейтральная симуляция цен на природный газ

В этом примере природный газ используется в качестве базового актива со следующей динамикой среднего возврата [8]:

dSt=κ(μ-log(St))Stdt+σStdWt

где Wt является стандартным броуновским движением. Применение леммы Ито к логарифму цены приводит к процессу Орштейна-Уленбека:

dXt=κ(θ-Xt)dt+σdWt

где Xt=log(St), κ>0, и θ определяется как:

θ=μ-σ22κ

θ - средний уровень реверсии, который определяет значение, до которого моделируемые значения будут возвращаться в долгосрочном запуске. κ - средняя скорость реверсии, которая определяет, как быстро происходит эта реверсия. σ - волатильность X. Сначала мы приступаем к моделированию логарифма цены. После этого для получения цен берутся экспоненциалы моделируемых значений.

Продолжительность симуляции рассчитана на один год с начальной ценой 3,9 доллара за MMBtu. Симуляция Монте-Карло проводится в течение 1000 испытаний с ежедневными периодами. На практике эти параметры калибруются по рыночным данным. В этом примере, κ=1.2, θ=1.7, и σ=59%. The hwv объект из Financial Toolbox™ используется для моделирования средней регрессионной динамики цены природного газа.

% Settlement date
Settle = '01-Jun-2014';

% Maturity Date
Maturity = '01-Jun-2015';

% Actual/Actual basis
Basis = 0;

% Initial log(price in $/MMBtu)
X0 = log(3.9);

% Volatility of log(price)
Sigma = 0.59;

% Number of trials in the Monte Carlo simulation
NumTrials =1000;

% Number of periods (daily)
NumPeriods = daysdif(Settle, Maturity, Basis);

% Daily time step
dt = 1/NumPeriods;

% Mean reversion speed of log(price)
Kappa = 1.2;

% Mean reversion level of log(price)
Theta = 1.7;

% Create HWV object
hwvobj = hwv(Kappa, Theta, Sigma, 'StartState', X0);

Симуляция выполняется и строится график.

% Set random number generator seed
savedState = rng(0, 'twister');

% Simulate gas prices
[Paths, Times] = hwvobj.simBySolution(NumPeriods, 'NTRIALS', NumTrials, ...
    'DeltaTime', dt);
Paths = squeeze(exp(Paths));

% Restore random number generator state
rng(savedState);

% Plot paths
figure;
plot(Times, Paths);
title('Natural Gas Risk-Neutral Price Simulation');
xlabel('Time');
ylabel('Price');

Figure contains an axes. The axes with title Natural Gas Risk-Neutral Price Simulation contains 1000 objects of type line.

В этом примере природный газ используется в качестве базового актива со средней динамикой реверсирования. Однако алгоритм Лонгстафа-Шварца может использоваться для других базовых активов, таких как электроэнергия, с любой базовой динамикой цен.

Расчет цены опции Swing

Мы рассматриваем опцию качания с пятью правами качания при забастовке $4,69/MMBtu, который может осуществляться ежедневно между днем после даты расчета и датой погашения. Количество ежедневного контракта (DCQ) составляет 10 000 MMBtu, что является средним объемом природного газа, который потребитель рассчитывает приобрести в данный день. Потребитель обладает гибкостью, чтобы уменьшить сумму покупки (падение) за один день до минимального DCQ 2500 MMBtu, или увеличить покупку (увеличение) до 15 000 MMBtu. Постоянно сложная годовая безрисковая ставка составляет 1%.

RateSpec используется для представления структуры терминов процентных ставок. Для простоты в этом примере мы рассмотрим структуру с фиксированной процентной ставкой. Значения RateSpec может быть изменен с учетом любой кривой процентной ставки. Функция hswingbyls в этом примере принимает ежедневное упражнение, если ExerciseDates вход пуст.

% Define RateSpec
rfrate = 0.01;
Compounding = -1;
RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, ...
                     'EndDates', Maturity, 'Rates', rfrate, ...
                     'Compounding', Compounding, 'Basis', Basis);

% Daily exercise
% hswingbyls assumes daily exercise for empty ExerciseDates
ExerciseDates = [];

% Number of swings
NumSwings = 5;

% Daily Contract Quantity in MMBtu
DCQ = 10000;

% Minimum DCQ constraint in MMBtu
minDCQ = 2500;

% Maximum DCQ constraint in MMBtu
maxDCQ = 15000;

% Strike
Strike = 4.69;

Метод Лонгстафа-Шварца является алгоритмом итерации назад, который шагает назад по времени от даты зрелости. На каждую дату упражнения алгоритм аппроксимирует значение продолжения, которое является значением опции, если оно не выполняется. Это осуществляется путем подгонки регрессии по значениям моделируемых цен и дисконтированной будущей стоимости опции на следующую дату упражнения. Будущее значение опции известно, когда алгоритм движется назад во времени. Значение продолжения сравнивается с суммой окупаемости от немедленного упражнения (нисходящий или восходящий) и значением продолжения опции качания с одним меньшим правом качания. Если эта сумма меньше, оптимальная стратегия владельца опции состоит в том, чтобы не выполняться в эту дату. Функция hswingbyls в этом примере этот метод используется для определения оптимальной стратегии исполнения и цены для опций качания [1,2,7].

Как обсуждалось ранее, единственным ограничением, рассматриваемым в этом примере, является минимальный и максимальный DCQ. В этом случае оптимальная стратегия ранних упражнений типа «bang-bang». Это означает, что, когда оптимально повышать или понижать на определенную дату упражнения, держатель опции должен всегда тренироваться на максимальном или минимальном DCQ, чтобы максимизировать прибыль. Упражнение «bang-bang» не было бы оптимальной стратегией, если, например, существует терминальный штраф, основанный на объеме. Затем алгоритм ценообразования должен будет дополнительно отслеживать все возможные уровни объема, что значительно увеличивает затраты на эффективность во время выполнения.

Во-первых, опция swing оценивается с помощью полинома третьего порядка, чтобы соответствовать регрессии метода Лонгстафа-Шварца. Функция hswingbyls также генерирует график регрессии между базовой ценой и значением продолжения на дату упражнения до погашения.

% Price swing option using 3rd order polynomial to fit Longstaff-Schwartz
% regression
tic;
useSpline = false;
SwingPrice = hswingbyls(Paths, Times, RateSpec, Settle, Maturity, ...
    Strike, ExerciseDates, NumSwings, DCQ, minDCQ, maxDCQ, useSpline, ...
    [], true)

Figure contains an axes. The axes with title Longstaff-Schwartz regression fit (3rd order polynomial) contains 2 objects of type scatter, line.

SwingPrice = 5.6943e+04
lsPolyTime = toc;

Приведенный выше график регрессионной подгонки показывает, что полином третьего порядка не идеально соответствует значению продолжения, особенно около шарнира и в крайних точках. Используйте csaps функция для аппроксимации регрессии с помощью кубического сглаживающего сплайна с параметром сглаживания 0,7. Для выполнения оставшейся части примера требуется Curve Fitting Toolbox™.

% Price swing option using smoothed splines to fit Longstaff-Schwartz
% regression
tic;
useSpline = true;
smoothingParam = 0.7;
SwingPriceSpline = hswingbyls(Paths, Times, RateSpec, Settle, Maturity, ...
    Strike, ExerciseDates, NumSwings, DCQ, minDCQ, maxDCQ, useSpline, ...
    smoothingParam, true)

Figure contains an axes. The axes with title Longstaff-Schwartz regression fit (Spline) contains 2 objects of type scatter, line.

SwingPriceSpline = 6.0757e+04
lsSplineTime = toc;

График регрессии показывает, что кубический сглаживающий сплайн имеет лучшую подгонку к данным, таким образом получая более точное значение для значений продолжения. Однако сравнение ниже показывает, что использование кубического сглаживающего сплайна занимает больше времени, чем полином третьего порядка.

% Print comparison of running times
displayRunningTimes(lsPolyTime, lsSplineTime)
Comparison of running times:

3rd order polynomial: 3.32 sec
Spline              : 9.63 sec

Кроме того, важно отметить, что цена представляет собой только компонент опциональности. Следовательно, цена форвардного контракта на базовую нагрузку не включена в вышеуказанную расчетную цену. Поскольку мы использовали фиксированную цену доставки, контракт baseload имеет ненулевое значение, которая может быть рассчитана:

BaseLoadPrice=i=1Ne-rtiE(Sti-K)

где ti,i=1,...,N, являются датами упражнений (для получения дополнительной информации см. [3]). Полная цена контракта, включая базовую нагрузку и опцию swing, рассчитывается ниже с помощью цены опции swing из сглаженного кубического сплайна.

% Obtain discount factors
RS2 = intenvset(RateSpec, 'StartTimes', 0, 'EndTimes', Times(2:end));
D = intenvget(RS2,'Disc');

% Calculate baseload price
BaseLoadPrice = DCQ.*mean(Paths(2:end,:)-Strike,2)'*D;

% Calculate full contract price, based on results from cubic spline LS
FullContractPrice = BaseLoadPrice + SwingPriceSpline
FullContractPrice = 1.2482e+05

Ценовые границы

Нижняя граница для опции swing является полосой европейских опций, а верхняя граница - полосой американских опций [4]. По сравнению с европейскими опциями, опции качания имеют премию за раннее упражнение на каждую дату упражнения, поэтому цена должна быть выше. Цена ниже, чем у американских опционных полос, потому что на каждую дату исполнения можно воспользоваться только одним правом качания. Более одной полосы можно использовать за один день, используя американские опции.

Цены для полос нижней и верхней границы рассчитываются ниже, чтобы проверить, что цены опций swing находятся в пределах этих границ. Европейские цены на стриптиз рассчитываются относительно последних пяти дат упражнений.

% Obtain discount factor for the last NumSwings exercise dates
D = D(end-NumSwings+1:end);

% European lower bound
idx = size(Paths, 1):-1:(size(Paths, 1) - NumSwings + 1);
putEuro = D'*mean(max(Strike - Paths(idx,:), 0),2);
callEuro = D'*mean(max(Paths(idx,:) - Strike, 0),2);
lowerBound = ((DCQ-minDCQ).*putEuro+(maxDCQ-DCQ).*callEuro);

% American upper bound
[putAmer, callAmer] = hamericanPrice(Paths, Times, RateSpec, Strike);
upperBound = NumSwings.*((DCQ-minDCQ).*putAmer+(maxDCQ-DCQ).*callAmer);

% Print price and lower/upper bounds
displaySummary(SwingPriceSpline, lowerBound, upperBound);
Comparison to lower and upper bounds:

Lower bound (European) : 44412.14
Swing Option Price     : 60757.33
Upper bound (American) : 68181.42

Цены, рассчитанные с помощью алгоритма Лонгстафа-Шварца, находятся в пределах нижней и верхней границ. Рисунок ниже показывает сравнение между опцией swing и верхними и нижними границами, когда количество swings увеличивается. Когда количество качаний 1, опция swing эквивалентна американской опции. В случае возможности ежедневного упражнения (NumSwings = 365), опция качания эквивалентна полосе европейских опций с ежедневной зрелостью.

Заключение

Пример показывает использование метода Longstaff-Schwartz для оценки опции swing, где базовый актив следует средней динамике возврата. Полином 3-го порядка и сглаженный кубический сплайн используются для аппроксимации регрессии в алгоритме Лонгстафа-Шварца, чтобы аппроксимировать значение продолжения. Было показано, что сглаженный кубический сплайн лучше подходит для данных за счет более медленной эффективности. Наконец, получившиеся цены на опцию были проверены на соответствие нижним границам полосы европейских опций и верхним границам полосы американских опций.

Ссылки

[1] Boogert, A., de Jong, C. «Оценка хранилища газа методом Монте-Карло». Журнал производных. 15(3):81-98, 2008.

[2] Дорр, Уве. Оценка Опций Swing и оценка стратегий учений Monte Carlo Методов. Оксфорд, 2002.

[3] Hull, John C. Опции, фьючерсы и другие производные. Шестое издание, Pearson Education, Inc., 2006.

[4] Jaillet, P., Ronn, E. I., Tompaidis, S. "Оценка основанных на товарах опций свинга, управленческая наука. 50(7):909-921, 2004.

[5] Лоланд, Эмберс, Линдквист, Ола. «Оценка основанных на товаре опций качания: обследование». Норск, Регнесентрал, 2008.

[6] Longstaff, Francis A., Schwartz, Eduardo S. «Оценка американских опций по симуляции: простой подход методом наименьших квадратов». Обзор финансовых исследований. 14(1):113-147, 2001.

[7] Meinshausen, N., Hambly, B.M. «Monte Carlo Methods for the Valuation of Multiple Experience Options». Математическая наука. 14:557-583, 2004.

[8] Шварц, Эдуардо С. «Стохастическое поведение цен на сырьевые товары: последствия для оценки и хеджирования». The Journal of Finance. 52(3):923-973, 1997.

Служебные функции

function displaySummary(SwingPriceSpline, lowerBound, upperBound)
fprintf('Comparison to lower and upper bounds:\n');
fprintf('\n')
fprintf('Lower bound (European) : %.2f\n', lowerBound);
fprintf('Swing Option Price     : %.2f\n', SwingPriceSpline);
fprintf('Upper bound (American) : %.2f\n\n', upperBound); 
end

function displayRunningTimes(lsPolyTime, lsSplineTime)
fprintf('Comparison of running times:\n');
fprintf('\n')
fprintf('3rd order polynomial: %.2f sec\n', lsPolyTime);
fprintf('Spline              : %.2f sec\n\n', lsSplineTime);
end

См. также

| | | | | | | | | | | | | | | | | | | | | |

Похожие примеры

Подробнее о

Внешние веб-сайты