exponenta event banner

моделировать

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

Описание

пример

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

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

пример

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

Примеры

свернуть все

Рассмотрим европейский опцион на покупку одной базовой акции. Эволюция цены этой акции регулируется моделью геометрического броуновского движения (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)около-NVarsоколо-NTrials массив.

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

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

Массив трехмерных временных рядов зависимых случайных вариаций, используемых для генерации броуновского вектора движения (процессы Винера), который управлял моделируемыми результатами, найденными в Paths, возвращено как NTimesоколо-NBrownsоколо-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] Аит-Сахалия, Y. «Тестирование непрерывных временных моделей спотовой процентной ставки». Обзор финансовых исследований, весна 1996 года, том 9, № 2, стр. 385-426.

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

[3] Глассерман, P. Monte Carlo Methods in Financial Engineering. Нью-Йорк, Спрингер-Верлаг, 2004.

[4] Халл, Дж. К. Опционы, фьючерсы и другие деривативы, 5-е ред. Энглвуд Клиффс, Нью-Джерси: Прентис Холл, 2002.

[5] Джонсон, Н. Л., С. Коц и Н. Балакришнан. Непрерывные одномерные распределения. Том 2, 2-й ред. Нью-Йорк, John Wiley & Sons, 1995.

[6] Шрив, С. Э. Стохастическое исчисление для финансов II: модели непрерывного времени. Нью-Йорк: Спрингер-Верлаг, 2004.

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