simByEuler

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

Синтаксис

[Paths,Times,Z] = simByEuler(MDL,NPeriods)
[Paths,Times,Z] = simByEuler(___,Name,Value)

Описание

пример

[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')

Кокс-Инджерсолл-Росс (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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

Примечание

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

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

  • NVARS-by-1 вектор состояния Xt.

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

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

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

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

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

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

Xt=P(t,Xt)

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

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

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

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

свернуть все

Моделируемые пути коррелированых переменных состояния, возвращенных как (NPERIODS + 1)-by-NVARS-by-NTRIALS 3D массив временных рядов.

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

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

Зависимые случайные варьируемые величины раньше генерировали вектор Броуновского движения (винеровские процессы), которые управляют симуляцией, возвращенной как (NPERIODS ⨉ NSTEPS)-by-NBROWNS-by-NTRIALS 3D массив временных рядов.

Больше о

свернуть все

Прямо противоположная выборка

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

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

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

Алгоритмы

Эта функция моделирует любой 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. и Ф. Делбэен. “Сходимость дискретизированных, стохастических (процентная ставка) процессы со стохастическим сроком дрейфа”. Прикладные Стохастические Модели и Анализ данных., 1998, Издание 14, Номер 1, стр 77–84.

[2] Higham, D. и Кс. Мао. “Сходимость симуляций Монте-Карло, включающих возвращающийся среднее значение процесс квадратного корня”. Журнал Вычислительных Финансов., 2005, Издание 8, Номер 3, стр 35–61.

[3] Господь, R., Р. Коеккоек и Д. ван Дейк. “Сравнение смещенных схем симуляции стохастических моделей энергозависимости”. Количественные Финансы., 2010, Издание 10, Номер 2, стр 177–194.

Введенный в R2008a