simBySolution

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

  • A 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 Composite, чтобы качественно проверить логнормальный символ данных.

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

Figure contains an axes. The axes 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. Axes 1 with title 1st Path of Multi-Dim Market Model:Euler Approximation contains 6 objects of type line. Axes 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. The axes with title Euler Approx Minus Exact Solution:Canada(TSX Composite) contains an object of type line.

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

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

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

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

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

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

свернуть все

Геометрическая модель Броуновского движения (GBM), заданная как gbm объект, который создается с использованием gbm.

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

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

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

Аргументы в виде пар имя-значение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

Примечание

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

  • Реальное скалярное t времени наблюдения.

  • Система координат NVARS-by- 1 вектор состояния Xt.

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

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

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

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

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

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

Xt=P(t,Xt)

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

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

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

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

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

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

свернуть все

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

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

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

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

Подробнее о

свернуть все

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

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

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

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

Алгоритмы

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

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

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

где:

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

  • μ является NVARS-by- NVARS обобщенная ожидаемая мгновенная скорость возврата матрицы.

  • V является NVARS-by- NBROWNS мгновенная матрица скорости волатильности.

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

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

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

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

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

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

Ссылки

[1] Аит-Сахалия, Яцин. «Проверка моделей спотового процента в непрерывном времени». Обзор финансовых исследований 9, № 2 (апрель 1996 года): 385-426.

[2] Аит-Сахалия, Яцин. «Плотности переходов для процентной ставки и других нелинейных диффузий». Журнал финансов 54, № 4 (август 1999): 1361-95.

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

[4] Hull, John C. Опции, фьючерсы и другие производные. 7-е изд, Prentice Hall, 2009.

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

[6] Shreve, Steven E. Stochastic Calculus for Finance. Нью-Йорк: Springer-Verlag, 2004.

Введенный в R2008a