exponenta event banner

simByQuadExp

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

Описание

пример

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

пример

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

пример

[Paths,Times,Z,N] = simByQuadExp(MDL,NPeriods) моделирует NTrials пути выборки модели Бейтса, управляемые двумя броуновскими источниками движения риска, аппроксимирующими стохастические процессы непрерывного времени по схеме квадратично-экспоненциальной дискретизации. 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около-NVarsоколо-NTrials трехмерный массив временных рядов.

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

свернуть все

Модель стохастического дифференциального уравнения, заданная как 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около-1 вектор столбца.

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

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

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

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)около-NBrownsоколо-NTrials трехмерный массив зависимых случайных вариаций.

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

Xt = P (t, Xt)

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

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

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

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

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

свернуть все

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

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

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

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

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

Подробнее

свернуть все

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

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

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

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

Алгоритмы

свернуть все

Хестон

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

dS (t) = γ (t) S (t) dt + V (t) S (t) dWS (t) dV (t) =

Здесь:

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

  • λ - долгосрочный уровень дисперсии.

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

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

CIR

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

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

Здесь:

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

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

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

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

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

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

Убавляет

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

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

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

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

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

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

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

Ссылки

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

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

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

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