simByQuadExp

Симулируйте пути выборки Бейтса, Хестона и CIR с помощью квадратично-экспоненциальной схемы дискретизации

Описание

пример

[Paths,Times,Z] = simByQuadExp(MDL,NPeriods) моделирует NTrials выборочные пути модели Хестона, управляемые двумя броуновскими источниками риска движения или CIR-модель, управляемая одним брауновским источником риска движения. Обе модели Хестона и Бейтса аппроксимируют стохастические процессы в непрерывном времени квадратично-экспоненциальной схемой дискретизации. The simByQuadExp симуляция происходит непосредственно из стохастического дифференциального уравнения движения; процесс в дискретном времени приближается к истинному процессу в непрерывном времени только в пределе как DeltaTimes приближается к нулю.

пример

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

пример

[Paths,Times,Z,N] = simByQuadExp(MDL,NPeriods) моделирует NTrials выборочные пути модели Бейтса, управляемые двумя броуновскими источниками риска движения, аппроксимирующими стохастические процессы в непрерывном времени квадратично-экспоненциальной схемой дискретизации. The simByQuadExp симуляция происходит непосредственно из стохастического дифференциального уравнения движения; процесс в дискретном времени приближается к истинному процессу в непрерывном времени только в пределе как DeltaTimes приближается к нулю.

пример

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

Примеры

свернуть все

Создайте bates объект.

AssetPrice = 80;
            Return = 0.03;
            JumpMean = 0.02;
            JumpVol = 0.08;
            JumpFreq = 0.1;
            
            V0 = 0.04;
            Level = 0.05;
            Speed = 1.0;
            Volatility = 0.2;
            Rho = -0.7;
            StartState = [AssetPrice;V0]; 
            Correlation = [1 Rho;Rho 1];

batesObj = bates(Return, Speed, Level, Volatility,...
                JumpFreq, JumpMean, JumpVol,'startstate',StartState,...
                'correlation',Correlation)
batesObj = 
   Class BATES: Bates Bivariate Stochastic Volatility
   --------------------------------------------------
     Dimensions: State = 2, Brownian = 2
   --------------------------------------------------
      StartTime: 0
     StartState: 2x1 double array 
    Correlation: 2x2 double array 
          Drift: drift rate function F(t,X(t)) 
      Diffusion: diffusion rate function G(t,X(t)) 
     Simulation: simulation method/function simByEuler
         Return: 0.03
          Speed: 1
          Level: 0.05
     Volatility: 0.2
       JumpFreq: 0.1
       JumpMean: 0.02
        JumpVol: 0.08

Использование simByQuadExp для симуляции NTrials выборочные пути непосредственно от стохастического дифференциального уравнения движения; процесс в дискретном времени приближается к истинному процессу в непрерывном времени только в пределе как DeltaTimes приближается к нулю.

NPeriods = 2;
[Paths,Times,Z,N] = simByQuadExp(batesObj,NPeriods)
Paths = 3×2

   80.0000    0.0400
   64.3377    0.1063
   31.5703    0.1009

Times = 3×1

     0
     1
     2

Z = 2×2

    0.5377    1.8339
   -2.2588    0.8622

N = 2×1

     0
     0

Область выхода Paths возвращается как (NPeriods + 1) -by- NVars-by- NTrials трехмерный массив timeseries.

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

свернуть все

Модель Стохастического дифференциального уравнения, заданная как bates, heston, или cir объект. Можно создать эти объекты с помощью bates, heston, или cir.

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

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

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

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

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

Пример: [Paths,Times,Z,N] = simByQuadExp(bates_obj,NPeriods,'DeltaTime',dt)

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

Зависимый процесс случайного подсчета для генерации количества переходов, заданный как разделенная разделенными запятой парами, состоящая из 'N' и функцию или (NPeriodsNSteps) -by- NJumps-by- NTrials трехмерный массив зависимых случайных вариаций. Если вы задаете функцию, N необходимо вернуть NJumps-by- 1 Вектор-столбец, и вы должны вызвать его с двумя входами: реальное скалярное время наблюдения t за которым следует NVars-by- 1 вектор состояния Xt.

Примечание

The N аргумент пары "имя-значение" поддерживается только при использовании bates объект для MDL входной параметр.

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

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

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

Если StorePaths является false (логический 0), simByQuadExp возвращает Paths как пустая матрица.

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

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

Xt=P(t,Xt)

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

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

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

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

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

свернуть все

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

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

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

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

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

Подробнее о

свернуть все

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

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

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

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

Алгоритмы

свернуть все

Хестон

В модели стохастической волатильности Хестона процесс значения активов и процесс волатильности определяются как

dS(t)=γ(t)S(t)dt+V(t)S(t)dWS(t)dV(t)=κ(θV(t))dt+σV(t)dWV(t)

Здесь:

  • γ - непрерывная безрисковая ставка.

  • θ - долгосрочный уровень отклонений.

  • κ - средняя скорость реверсии для отклонения.

  • σ - волатильность волатильности.

CIR

Можно симулировать любой векторный процесс CIR вида

dXt=S(t)[L(t)Xt]dt+D(t,Xt12)V(t)dWt

Здесь:

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

  • S является NVars-by- NVars матрица средних скоростей реверсии (скорость средней реверсии).

  • L является NVars-by- 1 вектор средних уровней реверсии (долгосрочное среднее или уровень).

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

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

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

Убавляет

Модели Бейтса являются двухмерными композитными моделями. Каждая модель Бейтса состоит из двух связанных одномерных моделей.

  • Геометрическое броуновское движение (gbm) модель с стохастической функцией волатильности и переходами, которые выражаются следующим образом.

    dX1t=B(t)X1tdt+X2tX1tdW1t+Y(t)X1tdNt

    Эта модель обычно соответствует ценовому процессу, волатильность (темп отклонения) которого определяется второй одномерной моделью.

  • А Кокс-Ингерсолл-Росс (cir) квадратная корневая диффузионная модель, которая выражена следующим образом.

    dX2t=S(t)[L(t)X2t]dt+V(t)X2tdW2t

    Эта модель описывает эволюцию скорости отклонения связанного процесса цены Бейтса.

Ссылки

[1] Андерсен, Лейф. Простая и эффективная симуляция модели стохастической волатильности Хестона. Журнал вычислительных финансов 11, № 3 (март 2008 года): 1-42.

[2] Броди, М. и О. Кайя. Точная симуляция опционных греков под стохастическими волатильными и скачкообразными диффузионными моделями. В трудах 2004 зимней симуляционной конференции, 2004., 2: 535-43. Вашингтон, округ Колумбия: IEEE, 2004.

[3] Броди, Марк и Озгюр Кайя. Точная симуляция стохастической летучести и других процессов диффузии аффинного перехода. Операционные исследования 54, № 2 (апрель 2006 года): 217-31.

Введенный в R2020a