simByEuler

Симуляция Эйлера стохастических дифференциальных уравнений (SDE)

Описание

пример

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

пример

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

Примеры

свернуть все

Загрузите данные и задайте модель SDE

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);

Симулируйте один путь за год

nPeriods = 249;      % # of simulated observations
dt       =   1;      % time increment = 1 day
rng(142857,'twister')
[S,T] = simByEuler(SDE, nPeriods, 'DeltaTime', dt);

Симулируйте 10 испытаний и исследуйте модель SDE

rng(142857,'twister')
[S,T] = simulate(SDE, nPeriods, 'DeltaTime', dt, 'nTrials', 10);

whos S
  Name        Size               Bytes  Class     Attributes

  S         250x6x10            120000  double              

Постройте график путей

plot(T, S(:,:,1)), xlabel('Trading Day'), ylabel('Price')
title('First Path of Multi-Dimensional Market Model')
legend({'Canada' 'France' 'Germany' 'Japan' 'UK' 'US'},...
    'Location', 'Best')

Figure contains an axes. The axes with title First Path of Multi-Dimensional Market Model contains 6 objects of type line. These objects represent Canada, France, Germany, Japan, UK, US.

Класс короткой скорости Кокса-Ингерсолла-Росса (CIR) получают непосредственно из SDE со средним обратным дрейфом (SDEMRD): dXt=S(t)[L(t)-Xt]dt+D(t,Xt12)V(t)dW

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

Создайте cir объект для представления модели: dXt=0.2(0.1-Xt)dt+0.05Xt12dW.

CIR = cir(0.2, 0.1, 0.05)  % (Speed, Level, Sigma)
CIR = 
   Class CIR: Cox-Ingersoll-Ross
   ----------------------------------------
     Dimensions: State = 1, Brownian = 1
   ----------------------------------------
      StartTime: 0
     StartState: 1
    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.05
          Level: 0.1
          Speed: 0.2

Симулируйте один путь в течение года с помощью simByEuler.

nPeriods = 249;      % # of simulated observations
dt       =   1;      % time increment = 1 day
rng(142857,'twister')
[Paths,Times] = simByEuler(CIR,nPeriods,'Method','higham-mao','DeltaTime', dt)
Paths = 250×1

    1.0000
    0.8613
    0.7245
    0.6349
    0.4741
    0.3853
    0.3374
    0.2549
    0.1859
    0.1814
      ⋮

Times = 250×1

     0
     1
     2
     3
     4
     5
     6
     7
     8
     9
      ⋮

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

свернуть все

Модель Стохастического дифференциального уравнения, заданная как sde, bm, gbm, cev, cir, hwv, heston, sdeddo, sdeld, или sdemrd объект.

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

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

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

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

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

Пример: [Paths,Times,Z] = simByEuler(SDE,NPeriods,'DeltaTime',dt)

Метод обработки отрицательных значений, заданный как разделенная разделенными запятой парами, состоящая из 'Method' и вектор символов или строка с поддерживаемым значением.

Примечание

The Method аргумент поддерживается только при использовании CIR объект. Для получения дополнительной информации о создании CIR объект, см. cir.

Типы данных: char | string

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

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

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

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

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

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

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

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

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

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

  • Нечетные испытания (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

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

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

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

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

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

Xt=P(t,Xt)

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

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

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

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

свернуть все

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

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

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

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

Подробнее о

свернуть все

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

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

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

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

Алгоритмы

Эта функция моделирует любой векторный SDE вида

dXt=F(t,Xt)dt+G(t,Xt)dWt

где:

  • X является NVars -by- 1 вектор состояния переменных процесса (для примера, коротких ставок или цен на акции) для моделирования.

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

  • F является NVars -by- 1 векторная функция скорости дрейфа.

  • G является NVars -by NBrowns матричной функцией скорости диффузии.

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

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

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

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

Ссылки

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

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

[3] Лорд, Роджер и др. Сравнение смещенных схем симуляции для стохастических моделей волатильности. Количественные финансы, том 10, № 2, февраль 2010, стр. 177-94

Введенный в R2008a