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

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

Синтаксис

[Paths,Times,Z] = simulate(MDL)
[Paths,Times,Z] = simulate(___,Optional)

Описание

пример

[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, bm, gbm, cev, cir, hwv, heston, sdeddo, sdeld или объект sdemrd.

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

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

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

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

свернуть все

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

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

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

3D массив временных рядов зависимых случайных варьируемых величин раньше генерировал вектор Броуновского движения (винеровские процессы), который управлял моделируемыми результатами, найденными в 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] Островок-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