simBySolution

Симулируйте приближенное решение диагонального дрейфа процессы GBM

Описание

пример

[Paths,Times,Z] = simBySolution(MDL,NPeriods) симулирует приближенное решение диагонального дрейфа для процессов геометрического броуновского движения (GBM).

пример

[Paths,Times,Z] = simBySolution(___,Name,Value) добавляют дополнительные аргументы пары "имя-значение".

Примеры

свернуть все

Используйте функции симуляции GBM. Отделимые модели GBM имеют две определенных функции симуляции:

  • Перегруженная Эйлерова функция симуляции (simulate), спроектированный для оптимальной эффективности.

  • simBySolution функция, которая предоставляет приближенное решение базового стохастического дифференциального уравнения, спроектированного для точности.

Загрузите Data_GlobalIdx2 набор данных и задает модель SDE как в Представлении Моделей Рынка Используя Объекты SDE и модели GBM как в Представлении Моделей Рынка Используя SDELD, CEV и Объекты GBM.

load Data_GlobalIdx2
prices  = [Dataset.TSX Dataset.CAC Dataset.DAX ...
    Dataset.NIK Dataset.FTSE Dataset.SP];

returns =  tick2ret(prices);

nVariables  = size(returns,2);
expReturn   = mean(returns);
sigma       = std(returns);
correlation = corrcoef(returns);
t           = 0;
X           = 100;
X           = X(ones(nVariables,1));

F = @(t,X) diag(expReturn)* X;
G = @(t,X) diag(X) * diag(sigma);

SDE = sde(F, G, 'Correlation', ...
    correlation, 'StartState', X);

GBM = gbm(diag(expReturn),diag(sigma), 'Correlation', ...
    correlation, 'StartState', X);

Проиллюстрировать выигрыш в производительности перегруженной Эйлеровой функции приближения (simulate), увеличьте число испытаний к 10000.

nPeriods = 249;      % # of simulated observations
dt       =   1;      % time increment = 1 day
rng(142857,'twister')
[X,T] = simulate(GBM, nPeriods, 'DeltaTime', dt, ...
    'nTrials', 10000);

whos X
  Name        Size                     Bytes  Class     Attributes

  X         250x6x10000            120000000  double              

Используя этот объем выборки, исследуйте терминальное распределение Составного объекта TSX Канады, чтобы проверить качественно логарифмически нормальный символ данных.

histogram(squeeze(X(end,1,:)), 30), xlabel('Price'), ylabel('Frequency')
title('Histogram of Prices after One Year: Canada (TSX Composite)')

Figure contains an axes object. The axes object with title Histogram of Prices after One Year: Canada (TSX Composite) contains an object of type histogram.

Симулируйте 10 испытаний решения и постройте первое испытание:

rng('default')
[S,T] = simulate(SDE, nPeriods, 'DeltaTime', dt, 'nTrials', 10);
rng('default')
[X,T] = simBySolution(GBM, nPeriods,...
    'DeltaTime', dt, 'nTrials', 10);
subplot(2,1,1)
plot(T, S(:,:,1)), xlabel('Trading Day'),ylabel('Price')
title('1st Path of Multi-Dim Market Model:Euler Approximation')
subplot(2,1,2)
plot(T, X(:,:,1)), xlabel('Trading Day'),ylabel('Price')
title('1st Path of Multi-Dim Market Model:Analytic Solution')

Figure contains 2 axes objects. Axes object 1 with title 1st Path of Multi-Dim Market Model:Euler Approximation contains 6 objects of type line. Axes object 2 with title 1st Path of Multi-Dim Market Model:Analytic Solution contains 6 objects of type line.

В этом примере все параметры являются константами и simBySolution действительно производит точное решение. Детали одного индекса для любого данного испытательного показа, что ценовые пути Эйлерового приближения и точного решения близки, но не идентичны.

Следующий график иллюстрирует различие между двумя функциями:

subplot(1,1,1)
plot(T, S(:,1,1) - X(:,1,1), 'blue'), grid('on')
xlabel('Trading Day'), ylabel('Price Difference')
title('Euler Approx Minus Exact Solution:Canada(TSX Composite)')

Figure contains an axes object. The axes object with title Euler Approx Minus Exact Solution:Canada(TSX Composite) contains an object of type line.

simByEuler Эйлерово приближение буквально оценивает стохастическое дифференциальное уравнение непосредственно от уравнения движения для некоторого подходящего значения dt шаг времени. Это простое приближение страдает от ошибки дискретизации. Эта ошибка может быть приписана несоответствию между выбором dt шага времени и что в теории является параметром непрерывного времени.

Приближение дискретного времени улучшается как DeltaTime нуль подходов. Эйлерова функция часто является наименее точным и доступным наиболее общим методом. Все модели, поставленные в наборе симуляции, имеют simByEuler функция.

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

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

Для примера того, как использовать simBySolution чтобы оптимизировать точность решений, смотрите Точность Оптимизации: О Точности Решения и Ошибке.

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

свернуть все

Модель Geometric Brownian motion (GBM) в виде gbm объект, который создается с помощью gbm.

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

Количество периодов симуляции в виде положительного скалярного целого числа. Значение NPeriods определяет количество строк симулированного выходного ряда.

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [Paths,Times,Z] = simBySolution(GBM,NPeriods,'DeltaTime',dt,'NTrials',10)

Симулированные испытания (демонстрационные пути) NPERIODS наблюдения каждый в виде разделенной запятой пары, состоящей из 'NTrials' и положительное скалярное целое число.

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

Положительное время постепенно увеличивается между наблюдениями в виде разделенной запятой пары, состоящей из 'DeltaTimes' и скаляр или NPERIODS- 1 вектор-столбец.

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

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

Количество промежуточных временных шагов в течение каждого раза постепенно увеличивает dt (заданный как DeltaTime) в виде разделенной запятой пары, состоящей из 'NSteps' и положительное скалярное целое число.

simBySolution функциональные разделы каждый раз постепенно увеличивают dt в NSteps подынтервалы длины dt/NSteps, и совершенствовал симуляцию путем оценки симулированного вектора состояния в NSteps − 1 промежуточные точки. Несмотря на то, что simBySolution не сообщает вектор состояния вывода в этих промежуточных точках, улучшение улучшает точность, позволяя симуляции более тесно аппроксимировать базовый процесс непрерывного времени.

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

Отметьте, чтобы указать ли simBySolution использует прямо противоположную выборку, чтобы сгенерировать Гауссовы случайные варьируемые величины, которые управляют вектором Броуновского движения (винеровские процессы) в виде разделенной запятой пары, состоящей из 'Antithetic' и скалярный логический флаг со значением True или False.

Когда вы задаете True, simBySolution выполняет выборку таким образом, что все первичные и прямо противоположные пути симулированы и сохранены в последовательных парах соответствия:

  • Нечетные испытания (1,3,5,...) соответствуйте первичным Гауссовым путям.

  • Даже испытания (2,4,6,...) соответствующие прямо противоположные пути каждой пары, выведенной путем отрицания Гауссовых ничьих соответствующего первичного (нечетного) испытания.

Примечание

Если вы задаете входной процесс шума (см. Z), simBySolution игнорирует значение Antithetic.

Типы данных: логический

Прямая спецификация зависимого случайного шумового процесса раньше генерировала вектор Броуновского движения (винеровский процесс), который управляет симуляцией в виде разделенной запятой пары, состоящей из 'Z' и функция или как (NPERIODS * NSTEPS)- NBROWNS- NTRIALS 3D массив зависимых случайных варьируемых величин.

Входной параметр Z позволяет вам непосредственно задавать шумовой процесс генерации. Этот процесс более приоритетен по сравнению с Correlation параметр входа gbm возразите и значение Antithetic введите флаг.

Примечание

Если вы задаете Z как функция, это должно возвратить NBROWNS- 1 вектор-столбец, и необходимо вызвать его с двумя входными параметрами:

  • Скалярное время наблюдения с действительным знаком t.

  • NVARS- 1 вектор состояния Xt.

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

Отметьте, который указывает как выходной массив Paths хранится и возвратился в виде разделенной запятой пары, состоящей из 'StorePaths' и скалярный логический флаг со значением True или False.

Если StorePaths True (значение по умолчанию), или не задано, simBySolution возвращает Paths как 3D массив временных рядов.

Если StorePaths False (логический 0), simBySolution возвращает Paths выходной массив как пустая матрица.

Типы данных: логический

Последовательность процессов конца периода или корректировок вектора состояния формы в виде разделенной запятой пары, состоящей из 'Processes' и функциональный или массив ячеек функций формы

Xt=P(t,Xt)

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

simBySolution применяет функции обработки в конце каждого периода наблюдения. Эти функции должны принять текущее время наблюдения t и вектор текущего состояния X t, и возвратить вектор состояния, который может быть корректировкой состояния ввода.

Конец периода Processes аргумент позволяет вам отключать данное испытание рано. В конце каждого временного шага, simBySolution тестирует вектор состояния Xt на все-NaN условие. Таким образом, чтобы сигнализировать о раннем завершении данного испытания, всех элементах вектора состояния Xt должен быть NaN. Этот тест включает пользовательский Processes функционируйте, чтобы сигнализировать о раннем завершении испытания и предложениях значительные выигрыши в производительности в некоторых ситуациях (например, оценивая разоренные барьерные опционы).

Если вы задаете больше чем одну функцию обработки, simBySolution вызывает функции в порядке, в котором они появляются в массиве ячеек. Можно использовать этот аргумент, чтобы задать граничные условия, предотвратить отрицательные цены, накопить статистику, графики графика и т.д.

Типы данных: cell | function

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

свернуть все

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

Для данного испытания, каждой строки Paths транспонирование вектора состояния X t во время t. Когда входной флаг StorePaths = False, simBySolution возвращает Paths как пустая матрица.

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

Зависимые случайные варьируемые величины раньше генерировали вектор Броуновского движения (винеровские процессы), которые управляют симуляцией, возвращенной как (NPERIODS * NSTEPS)- NBROWNS- NTRIALS 3D массив временных рядов.

Больше о

свернуть все

Прямо противоположная выборка

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

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

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

Алгоритмы

simBySolution функция симулирует NTRIALS демонстрационные пути NVARS коррелированые переменные состояния, управляемые NBROWNS Источники броуновского движения риска по NPERIODS последовательные периоды наблюдения, аппроксимируя непрерывное время модели короткого уровня GBM приближением решения закрытой формы.

Рассмотрите отделимую, модель GBM с векторным знаком формы:

dXt=μ(t)Xtdt+D(t,Xt)V(t)dWt

где:

  • Xt является NVARS- 1 вектор состояния переменных процесса.

  • μ является NVARS- NVARS обобщенный ожидал мгновенную матрицу нормы прибыли.

  • V является NVARS- NBROWNS мгновенная матрица уровня энергозависимости.

  • dWt является NBROWNS- 1 Вектор броуновского движения.

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

При выполнении выражений, simBySolution принимает, что все параметры модели являются кусочно-постоянными за каждый период симуляции.

В общем случае это не точное решение моделей, потому что вероятностные распределения симулированных и истинных векторов состояния идентичны только для кусочно-постоянных параметров.

Когда параметры являются кусочно-постоянными за каждый период наблюдения, симулированный процесс точен в течение времен наблюдения, в которые производится Xt.

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

Ссылки

[1] Aït-Sahalia, Yacine. “Тестируя Модели Непрерывного времени Точечной Процентной ставки”. Анализ Финансовых Исследований 9, № 2 (апрель 1996): 385–426.

[2] Aït-Sahalia, Yacine. “Плотность перехода для Процентной ставки и Другой Нелинейной Диффузии”. Журнал Финансов 54, № 4 (август 1999): 1361–95.

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

[4] Оболочка, Джон К. Опции, фьючерсы и Другие Производные. 7-й редактор, Prentice Hall, 2009.

[5] Джонсон, Норман Ллойд, Сэмюэль Коц и Нэраянэсвами Бэлэкришнэн. Непрерывные Одномерные распределения. 2-й редактор Вайли Серис в Вероятности и Математической Статистике. Нью-Йорк: Вайли, 1995.

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

Введенный в R2008a
Для просмотра документации необходимо авторизоваться на сайте