Методы моделирования позволяют непосредственно задавать шумовой процесс как вызываемую функцию времени и состояния:
Xt)
Стратифицированная выборка - это метод уменьшения дисперсии, который ограничивает долю путей выборки конкретными подмножествами (или слоями) пространства выборки.
В этом примере задается функция шума для стратификации значения терминала одномерного ряда цен акций. Начиная с известных начальных условий, функция сначала стратифицирует конечное значение стандартного броуновского движения, а затем отсчитывает процесс от начала до конца, рисуя условные гауссовы выборки с помощью броуновского моста.
Процесс стратификации предполагает, что каждый путь связан с одним стратифицированным значением терминала, так что количество путей равно количеству слоев. Этот метод называется пропорциональной выборкой. Этот пример аналогичен, но более сложен, чем тот, который обсуждался при моделировании процентных ставок. Поскольку стратифицированная выборка требует знания будущего, она также требует более сложной синхронизации времени; в частности, функция в этом примере требует знания всей последовательности времен выборки. Дополнительные сведения см. в примере Example_StratifiedRNG.m.
Функция реализует пропорциональную выборку, разбивая единичный интервал на ячейки равной вероятности, сначала рисуя случайное число, равномерно распределенное в каждом ячейке. Обратная кумулятивная функция распределения стандартного N (0,1) гауссова распределения затем преобразует эти стратифицированные однородные вытягивания. Наконец, полученные стратифицированные гауссовы розыгрыши масштабируются квадратным корнем времени окончания для стратификации конечного значения броуновского движения .
Функция шума возвращает не фактические броуновские пути, а гауссовы рисуют Z (t, Xt), которые управляют им.
Этот пример сначала стратифицирует конечное значение одномерного броуновского движения с нулевым дрейфом и единичной дисперсией (bm) модель:
dWt
Предположим, что 10 путей процесса моделируются ежедневно в течение трехмесячного периода. Также предположим, что каждый календарный месяц и год состоят из 21 и 252 торговых дней соответственно:
rng(10203,'twister') dt = 1 / 252; % 1 day = 1/252 years nPeriods = 63; % 3 months = 63 trading days T = nPeriods * dt; % 3 months = 0.25 years nPaths = 10; % # of simulated paths obj = bm(0, 1, 'StartState', 0); sampleTimes = cumsum([obj.StartTime; ... dt(ones(nPeriods,1))]); z = Example_StratifiedRNG(nPaths, sampleTimes);
Моделирование стандартных броуновских путей путем явной передачи функции стратифицированной выборки методу моделирования:
X = obj.simulate(nPeriods, 'DeltaTime', dt, ... 'nTrials', nPaths, 'Z', z);
Для удобства переупорядочивание выходных путей выборки путем переупорядочивания трехмерных выходных данных в двумерный эквивалентный массив:
X = squeeze(X);
Проверьте расслоение:
Воссоздать равномерные розыгрыши с пропорциональной выборкой:
rng(10203,'twister')
U = ((1:nPaths)' - 1 + rand(nPaths,1))/nPaths;Преобразуйте их, чтобы получить конечные значения стандартного броуновского движения:
WT = norminv(U) * sqrt(T); % Stratified Brownian motion.Постройте график значений клемм и путей вывода на том же рисунке:
plot(sampleTimes, X), hold('on') xlabel('Time (Years)'), ylabel('Brownian State') title('Terminal Stratification: Standard Brownian Motion') plot(T, WT, '. black', T, WT, 'o black') hold('off')

Последнее значение каждого пути образца (последняя строка выходного массива X) совпадает с соответствующим элементом стратифицированного терминального значения броуновского движения. Это происходит потому, что моделируемая модель и функция генерации шума представляют одно и то же стандартное броуновское движение.
Однако можно использовать ту же функцию стратифицированной выборки для стратификации конечной цены геометрических моделей броуновского движения с постоянным параметром. Фактически, можно использовать функцию стратифицированной выборки для стратификации терминального значения любой модели с постоянным параметром, управляемой движением Броуна, если терминальное значение модели является монотонным преобразованием терминального значения броуновского движения.
Чтобы проиллюстрировать это, загрузите набор данных и смоделируйте нейтральные для риска пути выборки индекса FTSE 100 с использованием геометрического броуновского движения (GBM) модель с постоянными параметрами:
startXtdWt
где средняя доходность по Euribor представляет собой безрисковую норму прибыли.
Предположим, что соответствующая информация, полученная из ежедневных данных, рассчитывается в годовом исчислении и каждый календарный год включает 252 торговых дня:
load Data_GlobalIdx2
returns = tick2ret(Dataset.FTSE);
sigma = std(returns) * sqrt(252);
rate = Dataset.EB3M;
rate = mean(360 * log(1 + rate));Создать GBM модель с использованием gbm, предполагая, что FTSE 100 начинается со 100:
obj = gbm(rate, sigma, 'StartState', 100);Определите время выборки и смоделируйте пути цены.
В следующем, NSteps определяет количество промежуточных временных шагов в пределах каждого временного приращения DeltaTime. Каждое приращение DeltaTime разделен на NSteps субинтервалы длины DeltaTime/NSteps каждый, уточнение моделирования путем оценки моделируемого вектора состояния в NSteps-1 промежуточная точка. Это уточнение повышает точность, позволяя моделированию более точно приближаться к лежащему в основе непрерывному временному процессу без хранения промежуточной информации:
nSteps = 1; sampleTimes = cumsum([obj.StartTime ; ... dt(ones(nPeriods * nSteps,1))/nSteps]); z = Example_StratifiedRNG(nPaths, sampleTimes); rng(10203,'twister') [Y, Times] = obj.simBySolution(nPeriods, 'nTrials', nPaths,... 'DeltaTime', dt, 'nSteps', nSteps, 'Z', z); Y = squeeze(Y); % Reorder to a 2-D array plot(Times, Y) xlabel('Time (Years)'), ylabel('Index Level') title('FTSE 100 Terminal Stratification:Geometric Brownian Motion')

Хотя терминальное значение броуновского движения, показанное на последнем графике, нормально распределено, а терминальная цена на предыдущем графике логнормально распределена, соответствующие пути каждого графа схожи.
Совет
Другой пример методов снижения отклонений см. в разделе Моделирование процентных ставок.
bates | bm | cev | cir | diffusion | drift | gbm | heston | hwv | interpolate | merton | sde | sdeddo | sdeld | sdemrd | simByEuler | simByQuadExp | simBySolution | simBySolution | simulate | ts2func