exponenta event banner

simByEuler

Euler моделирование стохастических дифференциальных уравнений (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' и символьный вектор или строку с поддерживаемым значением.

Примечание

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

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

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

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

Положительные временные интервалы между наблюдениями, указанные как пара, разделенная запятыми, состоящая из 'DeltaTimes' и скаляр или NPeriodsоколо-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.

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

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

Примечание

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

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

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

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

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

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

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

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

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

Xt = P (t, Xt)

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

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

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

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

свернуть все

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

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

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

Зависимые случайные вариации, используемые для генерации броуновского вектора движения (процессы Винера), которые управляют моделированием, возвращаются в виде (NPeriods ⨉ NSteps)около-NBrownsоколо-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 для all-NaN состояние. Таким образом, чтобы сигнализировать о досрочном прекращении данного испытания, все элементы вектора состояния Xt должны быть NaN. Этот тест включает определяемый пользователем Processes Функция сигнализирует о досрочном прекращении испытания и предлагает значительные преимущества производительности в некоторых ситуациях (например, опционы ценового барьера).

Ссылки

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

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

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

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