simByQuadExp

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

Описание

пример

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

пример

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

пример

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

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

свернуть все

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

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

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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 ложь).

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

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

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

Примечание

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

Типы данных: логический

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

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

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

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

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

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

Примечание

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

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

Отметьте, который указывает как выходной массив Paths хранится и возвратился в виде разделенной запятой пары, состоящей из 'StorePaths' и скалярный числовой или логический 1 TRUE) или 0 ложь).

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

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

Типы данных: логический

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

Xt=P(t,Xt)

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

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

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

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

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

свернуть все

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

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

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

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

Зависимые случайные варьируемые величины для убавляют модель для генерации вектора процесса подсчета скачка, возвращенного как (NPeriods ⨉ NSteps)- NJumps- NTrials 3D массив 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- 1 вектор состояния переменных процесса.

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

  • L является NVars- 1 вектор из уровней возвращения к среднему уровню (отдаленное среднее значение или уровень).

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

  • V является NVars- NBrowns мгновенная матрица уровня энергозависимости.

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

Убавляет

Убавляет модели, двумерные составные модели. Каждая модель Bates состоит из двух двойных одномерных моделей.

  • Геометрическое броуновское движение (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] Broadie, M. и О. Кая. “Точная симуляция греков опции в соответствии со стохастическими моделями диффузии энергозависимости и скачка”. В продолжениях 2 004 зимних конференций по симуляции, 2004., 2:535–43. Вашингтон, округ Колумбия: IEEE, 2004.

[3] Broadie, Марк и Езгюр Кая. “Точная Симуляция Стохастической Энергозависимости и Другие Аффинные Диффузионные процессы Скачка”. Исследование операций 54, № 2 (апрель 2006): 217–31.

Введенный в R2020a