exponenta event banner

simBySolution

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

Описание

пример

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

пример

[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.

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

Дискретно-временная аппроксимация улучшается DeltaTime приближается к нулю. Функция Эйлера часто является наименее точным и наиболее общим доступным методом. Все модели, поставляемые в simulation suite, имеют 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около-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.

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

Xt = P (t, Xt)

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

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

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

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

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

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

свернуть все

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

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

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

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

Подробнее

свернуть все

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

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

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

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

Алгоритмы

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

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

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

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

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

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

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