simulate

Симулируйте многомерные стохастические дифференциальные уравнения (SDE)

Описание

пример

[Paths,Times,Z] = simulate(MDL) моделирует NTrials выборочные пути NVars коррелированные переменные состояния, управляемые NBrowns Брауновские источники риска NPeriods последовательные периоды наблюдения, аппроксимация стохастических процессов в непрерывном времени.

simulate принимает любой список входных параметров переменной длины, на которые ссылается метод симуляции или функция SDE.Simulation параметр требует или принимает. Этот входной список передается непосредственно в соответствующий метод симуляции SDE или пользовательскую функцию симуляции.

пример

[Paths,Times,Z] = simulate(___,Optional) добавляет необязательные входные параметры.

Примеры

свернуть все

Рассмотрите европейскую опцию вызова для одного базового запаса. Эволюция цены этой акции определяется моделью Geometric Brownian Motion (GBM) с постоянными параметрами:

Примите следующие характеристики:

  • В настоящее время акции торгуются на уровне 105.

  • Акции не выплачивают дивидендов.

  • Волатильность акций составляет 30% годовых.

  • Цена опции доставки - 100.

  • Срок действия опции истекает через три месяца.

  • Барьер опции составляет 120.

  • Безрисковая ставка постоянна на уровне 5% годовых.

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

Этот пример выполняет антитетическую выборку путем явной установки Antithetic флаг в true, а затем задает функцию обработки в конце периода, чтобы записать максимальные и конечные цены на акции по пути базиса.

Создайте модель GBM с помощью gbm.

barrier  	= 120;           % barrier
strike   	= 100;           % exercise price
rate     	= 0.05;          % annualized risk-free rate
sigma    	= 0.3;           % annualized volatility
nPeriods 	= 63;            % 63 trading days
dt       	= 1 / 252;       % time increment = 252 days
T        	= nPeriods * dt; % expiration time = 0.25 years
obj 	   = gbm(rate, sigma, 'StartState', 105);

Выполните маломасштабную симуляцию, которое явно возвращает два моделируемых пути.

rng('default')                % make output reproducible
[X, T] = obj.simBySolution(nPeriods, 'DeltaTime', dt, ...
				'nTrials', 2, 'Antithetic', true);

Выполните антитетическую выборку так, чтобы все первичные и антитетические пути были моделированы и сохранены в последовательных совпадающих парах. Нечетные пути (1,3,5,...) соответствуют первичным гауссовым путям. Четные пути (2,4,6,...) являются совпадающими антитетическими путями каждой пары, выведенными отрицанием Гауссовых рисунков соответствующего первичного (нечетного) пути. Проверьте это, исследуя совпадающие пути первичной/антитетической пары.

plot(T, X(:,:,1), 'blue', T, X(:,:,2), 'red')
xlabel('Time (Years)'), ylabel('Stock Price'), ... 
			title('Antithetic Sampling')
legend({'Primary Path' 'Antithetic Path'}, ...
			'Location', 'Best')

Figure contains an axes. The axes with title Antithetic Sampling contains 2 objects of type line. These objects represent Primary Path, Antithetic Path.

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

Симулируйте 200 путей с помощью метода функции обработки.

rng('default')             % make output reproducible
barrier  = 120;            % barrier
strike   = 100;            % exercise price
rate     = 0.05;           % annualized risk-free rate
sigma    = 0.3;            % annualized volatility
nPeriods = 63;             % 63 trading days
dt       = 1 / 252;        % time increment = 252 days
T        = nPeriods * dt;  % expiration time = 0.25 years
obj    = gbm(rate, sigma, 'StartState', 105);
nPaths = 200;         % # of paths = 100 sets of pairs
f      = Example_BarrierOption(nPeriods, nPaths);
simulate(obj, nPeriods, 'DeltaTime' , dt, ... 
			'nTrials', nPaths, 'Antithetic', true, ...
			'Processes', f.SaveMaxLast);

Приблизите цену опции с интервалом 95% доверия.

optionPrice   = f.OptionPrice(strike, rate, barrier);
standardError = f.StandardError(strike, rate, barrier,...
			 			true);
lowerBound    = optionPrice - 1.96 * standardError;
upperBound    = optionPrice + 1.96 * standardError;

displaySummary(optionPrice, standardError, lowerBound, upperBound);
  Up-and-In Barrier Option Price:   6.6572
         Standard Error of Price:   0.7292
 Confidence Interval Lower Bound:   5.2280
 Confidence Interval Upper Bound:   8.0864

Служебная функция

function displaySummary(optionPrice, standardError, lowerBound, upperBound)
fprintf('  Up-and-In Barrier Option Price: %8.4f\n', ...
			optionPrice);
fprintf('         Standard Error of Price: %8.4f\n', ...
			standardError);
fprintf(' Confidence Interval Lower Bound: %8.4f\n', ...
			lowerBound);
fprintf(' Confidence Interval Upper Bound: %8.4f\n', ...
			upperBound);
end

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

свернуть все

Модель Стохастического дифференциального уравнения, заданная как sde, batesbm, gbm, cev, cir, hwv, heston, merton sdeddo, sdeld, или sdemrd объект.

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

Любой список входных параметров переменной длины, на которые ссылается метод симуляции или функция SDE.Simulation параметр требует или принимает, заданный как список входных параметров переменной длины. Этот входной список передается непосредственно в соответствующий метод симуляции SDE или пользовательскую функцию симуляции.

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

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

свернуть все

Трехмерный массив временных рядов, состоящий из моделируемых путей коррелированных переменных состояния, возвращается как (NPeriods + 1)-by- NVars-by- NTrials массив.

Для данного испытания каждая строка Paths - транспонирование вектора состояния, Xt в момент t времени.

Время наблюдения, сопоставленное с моделируемыми путями, возвращается как (NPeriods + 1)-by- 1 Вектор-столбец.

Трехмерный массив временных рядов зависимых случайных вариаций, используемый для генерации вектора Броуна (процессы Винера), который управлял моделируемыми результатами, найденными в Paths, возвращается как NTimes-by- NBrowns-by- NTrials массив.

NTimes - количество временных шагов, в течение которого simulate функция дискретизирует вектор состояния. NTimes включает промежуточное время, предназначенное для повышения точности, которое simulate не обязательно сообщает в Paths вывод временных рядов.

Подробнее о

свернуть все

Антитетический отбор проб

Методы симуляции позволяют вам задать популярный метод уменьшения отклонения, называемый антитетической выборкой.

Этот метод пытается заменить одну последовательность случайных наблюдений на другую с таким же ожидаемым значением, но меньшим отклонением. В типичной симуляции Монте-Карло каждый путь выборки является независимым и представляет собой независимое исследование. Однако антитетическая выборка генерирует пути дискретизации в парах. Первый путь пары упоминается как основной путь, а второй как антитетический путь. Любая заданная пара не зависит от любой другой пары, но два пути внутри каждой пары сильно коррелируются. Антитетическая литература часто рекомендует усреднение дисконтированных выплат каждой пары, фактически вдвое сокращая количество испытаний Монте-Карло.

Этот метод пытается уменьшить отклонение путем индуцирования отрицательной зависимости между парными входными выборками, в идеале приводя к отрицательной зависимости между парными выходными выборками. Чем больше степень отрицательной зависимости, тем более эффективен антитетический отбор проб.

Алгоритмы

Эта функция описывает любой векторный SDE вида:

dXt=F(t,Xt)dt+G(t,Xt)dWt(1)
где:

  • X является NVars -by- 1 вектор состояния переменных процесса (для примера, коротких ставок или цен на акции) для моделирования.

  • W является NBrowns -by- 1 Брауновский вектор движения.

  • F является NVars -by- 1 векторная функция скорости дрейфа.

  • G является NVars -by NBrowns матричной функцией скорости диффузии.

Ссылки

[1] Ait-Sahalia, Y. «Проверка моделей спотового процента в непрерывном времени». Обзор финансовых исследований, весна 1996 года, том 9, № 2, стр. 385-426.

[2] Ait-Sahalia, Y. «Переходные плотности для процентной ставки и других нелинейных диффузий». Финансовый журнал, том 54, № 4, август 1999 года.

[3] Glasserman, P. Monte Carlo Methods in Financial Engineering. Нью-Йорк, Springer-Verlag, 2004.

[4] Hull, J. C. Options, Futures, and Other Derivatives, 5 ed. Englewood Cliffs, NJ: Prentice Hall, 2002.

[5] Джонсон, Н. Л., С. Коц и Н. Балакришнан. Непрерывные одномерные распределения. Vol. 2, 2nd ed. New York, John Wiley & Sons, 1995.

[6] Shreve, S. E. Stochastic Calculus for Finance II: Continuous-Time Models. Нью-Йорк: Springer-Verlag, 2004.

Введенный в R2008a