simulate

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

Описание

пример

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

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

пример

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

Примеры

свернуть все

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

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

Симулируйте 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

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

свернуть все

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

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

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

3D массив временных рядов зависимых случайных варьируемых величин раньше генерировал вектор Броуновского движения (винеровские процессы), который управлял симулированными результатами, найденными в 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] Островок-Sahalia, Y. “Тестируя Модели Непрерывного времени Точечной Процентной ставки”. Анализ Финансовых Исследований, Spring 1996, Издания 9, № 2, стр 385–426.

[2] Островок-Sahalia, Y. “Плотность перехода для процентной ставки и другой нелинейной диффузии”. Журнал финансов, издания 54, № 4, август 1999.

[3] Глассермен, P. Методы Монте-Карло в финансовой разработке. Нью-Йорк, Springer-Verlag, 2004.

[4] Оболочка, J. C. Опции, фьючерсы и Другие Производные, 5-й редактор Englewood Cliffs, NJ: Prentice Hall, 2002.

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

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

Введенный в R2008a