exponenta event banner

simByEuler

Моделирование путей диффузионных образцов с переходом Мертона по аппроксимации Эйлера

Описание

пример

[Paths,Times,Z,N] = simByEuler(MDL,NPeriods) моделирует NTrials примеры путей NVars коррелированные переменные состояния, управляемые NBrowns Броуновские источники движения риска и NJumps сложные пуассоновские процессы, представляющие прибытие важных событий NPeriods последовательные периоды наблюдения. Моделирование аппроксимирует процесс диффузии мертоновского скачка с непрерывным временем с помощью подхода Эйлера.

пример

[Paths,Times,Z,N] = simByEuler(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение в дополнение к входным аргументам в предыдущем синтаксисе.

Примеры

свернуть все

Создать merton объект.

AssetPrice = 80;
            Return = 0.03;
            Sigma = 0.16;
            JumpMean = 0.02;
            JumpVol = 0.08;
            JumpFreq = 2;
            
            mertonObj = merton(Return,Sigma,JumpFreq,JumpMean,JumpVol,...
                'startstat',AssetPrice)
mertonObj = 
   Class MERTON: Merton Jump Diffusion
   ----------------------------------------
     Dimensions: State = 1, Brownian = 1
   ----------------------------------------
      StartTime: 0
     StartState: 80
    Correlation: 1
          Drift: drift rate function F(t,X(t)) 
      Diffusion: diffusion rate function G(t,X(t)) 
     Simulation: simulation method/function simByEuler
          Sigma: 0.16
         Return: 0.03
       JumpFreq: 2
       JumpMean: 0.02
        JumpVol: 0.08

Использовать simByEuler моделировать NTrials примеры путей NVars коррелированные переменные состояния, управляемые NBrowns Броуновские источники движения риска и NJumps сложные пуассоновские процессы, представляющие прибытие важных событий NPeriods последовательные периоды наблюдения. Функция simByEuler аппроксимирует процесс диффузии мертоновского скачка с непрерывным временем с помощью подхода Эйлера.

NPeriods = 2;
[Paths,Times,Z,N] = simByEuler(mertonObj,NPeriods)
Paths = 3×1

   80.0000
  266.5590
  306.2600

Times = 3×1

     0
     1
     2

Z = 2×1

    1.8339
   -2.2588

N = 2×1

     1
     2

Paths является 3около-1 матрица. Единственным столбцом является путь к моделируемому AssetPrice. Продукция Z - ряд матриц, используемых для генерации броуновского вектора движения. Продукция N представляет собой ряд матриц, используемых для генерации векторов перехода.

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

свернуть все

Модель стохастического дифференциального уравнения, заданная как merton объект. Можно создать merton объект с использованием merton.

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

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

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

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

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

Пример: [Paths,Times,Z,N] = simByEuler(merton,NPeriods,'DeltaTimes',dt)

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

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

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

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

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

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

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

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

Флаг для использования антитетической выборки для генерации гауссовых случайных вариаций, которые управляют броуновским вектором движения (процессы Винера), указанный как пара, разделенная запятыми, состоящая из 'Antithetic' и скалярный числовой или логический 1 (true) или 0 (false).

При указании true, simByEuler выполняет выборку таким образом, что все первичный и антитетический пути моделируются и сохраняются в последовательных парах согласования:

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

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

Примечание

При указании входного шумового процесса (см. Z), simByEuler игнорирует значение Antithetic.

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

Прямая спецификация зависимого процесса случайного шума для генерации броуновского вектора движения (процесс Винера), который управляет моделированием, заданная как разделенная запятыми пара, состоящая из 'Z' и функции или как (NPeriods ⨉ NSteps)около-NBrownsоколо-NTrials трехмерный массив зависимых случайных вариаций.

Примечание

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

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

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

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

Зависимый случайный процесс подсчета для генерации количества переходов, указанный как пара, разделенная запятыми, состоящая из 'N' и функция или (NPeriodsNStepsоколо-NJumpsоколо-NTrials трехмерный массив зависимых случайных вариаций.

Если указана функция, N должен возвращать NJumpsоколо-1 вектор столбца, и вы должны вызвать его с двумя входами: действительное скалярное время наблюдения t, за которым следует NVarsоколо-1 вектор состояния Xt.

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

Флаг, указывающий способ вывода массива Paths сохраняется и возвращается, указывается как пара, разделенная запятыми, состоящая из 'StorePaths' и скалярный числовой или логический 1 (true) или 0 (false).

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

Если StorePaths является false (логический 0), simByEuler прибыль Paths в виде пустой матрицы.

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

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

Xt = P (t, Xt)

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

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

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

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

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

свернуть все

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

Для данного испытания каждая строка Paths - транспонирование вектора состояния Xt в момент времени t. StorePaths имеет значение false, simByEuler прибыль Paths в виде пустой матрицы.

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

Зависимые случайные вариации, используемые для генерации броуновского вектора движения (процессы Винера), которые управляют моделированием, возвращаются в виде (NPeriods ⨉ NSteps)около-NBrownsоколо-NTrials трехмерный массив временных рядов.

Зависимые случайные вариации для генерации вектора процесса подсчета переходов, возвращаемого как (NPeriods ⨉ NSteps)около-NJumpsоколо-NTrials трехмерный массив временных рядов.

Подробнее

свернуть все

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

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

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

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

Алгоритмы

Эта функция моделирует любой SDE с векторными значениями следующего вида:

dXt = B (t, Xt) Xtdt + D (t, Xt) V (t, xt) dWt + Y (t, Xt, Nt) XtdNt

Здесь:

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

  • B (t, Xt) - это NVarsоколо-NVars матрица обобщенных ожидаемых мгновенных показателей доходности.

  • D(t,Xt) является NVarsоколо-NVars диагональная матрица, в которой каждый элемент вдоль главной диагонали является соответствующим элементом вектора состояния.

  • V(t,Xt) является NVarsоколо-NVars матрица мгновенных скоростей волатильности.

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

  • Y(t,Xt,Nt) является NVarsоколо-NJumps функция размера перехода со значением матрицы.

  • dNt является NJumpsоколо-1 подсчет вектора процесса.

simByEuler моделирует NTrials примеры путей NVars коррелированные переменные состояния, управляемые NBrowns Броуновские источники движения риска NPeriods последовательные периоды наблюдения, используя подход Эйлера для аппроксимации стохастических процессов непрерывного времени.

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

Ссылки

[1] Дильстра, Гризельда и Фредди Дельбаен. «Конвергенция дискретизированных стохастических (процентных) процессов со стохастическим дрейфовым термином». Прикладные стохастические модели и анализ данных. 14, № 1, 1998, стр. 77-84.

[2] Хайам, Десмонд и Сюэрон Мао. «Конвергенция моделирования Монте-Карло с использованием процесса среднеквадратичного корня». Журнал вычислительных финансов 8, № 3, (2005): 35-61.

[3] Лорд, Роджер, Реммерт Коеккоек и Дик Ван Диек. «Сравнение смещенных схем моделирования для стохастических моделей волатильности». Количественное финансирование 10, № 2 (февраль 2010 года): 177-94.

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