exponenta event banner

simByTransition

Моделирование путей выборки Кокса-Ингерсолла-Росса с плотностью перехода

Описание

пример

[Paths,Times] = simByTransition(MDL,NPeriods) моделирует NTrials примеры путей NVars независимые переменные состояния, управляемые источниками риска процесса Кокса-Ингерсолла-Росса (CIR) NPeriods последовательные периоды наблюдения. simByTransition аппроксимирует непрерывную модель CIR, используя аппроксимацию функции плотности перехода.

пример

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

Примеры

свернуть все

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

dr (t) = α (b-r (t)) dt + startr (t) dW (t)

Экспоненциальная аффинная форма цены облигации

B (t, T) = e-A (t, T) r (t) + C (t, T)

где

A (t, T) = 2 ((T-t) -1) (γ + α) ((T-t) -1) + 2γ

B (t, T) = 2αbstart2log (2αe (α + γ) (T-t )/2 (γ + α) (eγ (T-t) -1) + 2γ)

и

γ=α2+2σ2

Определите параметры для cir объект.

alpha = .1;
b = .05;
sigma = .05;
r0 = .04;

Определите функцию для цен облигаций.

gamma = sqrt(alpha^2 + 2*sigma^2);
A_func = @(t, T) ...
    2*(exp(gamma*(T-t))-1)/((alpha+gamma)*(exp(gamma*(T-t))-1)+2*gamma);
C_func = @(t, T) ...
    (2*alpha*b/sigma^2)*log(2*gamma*exp((alpha+gamma)*(T-t)/2)/((alpha+gamma)*(exp(gamma*(T-t))-1)+2*gamma));
P_func = @(t,T,r_t) exp(-A_func(t,T)*r_t+C_func(t,T));

Создать cir объект.

obj = cir(alpha,b,sigma,'StartState',r0)
obj = 
   Class CIR: Cox-Ingersoll-Ross
   ----------------------------------------
     Dimensions: State = 1, Brownian = 1
   ----------------------------------------
      StartTime: 0
     StartState: 0.04
    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.05
          Speed: 0.1

Определите параметры моделирования.

nTrials = 100;
nPeriods = 5;   % Simulate future short over the next five years
nSteps = 12;    % Set intermediate steps to improve the accuracy

Смоделировать короткие ставки. Возвращаемый путь является (NPeriods + 1) -by-NVarsоколо-NTrials трехмерный массив временных рядов. В этом примере размер выходного сигнала равен 6около-1около-100.

rng('default');    % Reproduce the same result
rPaths = simByTransition(obj,nPeriods,'nTrials',nTrials,'nSteps',nSteps);
size(rPaths)
ans = 1×3

     6     1   100

rPathsExp = mean(rPaths,3);

Определите структуру терминов в течение следующих 30 лет.

maturity = 30;
T = 1:maturity;
futuresTimes = 1:nPeriods+1;

% Preallocate simTermStruc
simTermStructure = zeros(nPeriods+1,30);
for i = futuresTimes
    for t = T
        bondPrice = P_func(i,i+t,rPathsExp(i));
        simTermStructure(i,t) = -log(bondPrice)/t;
    end
end
plot(simTermStructure')
legend('Current','1-year','2-year','3-year','4-year','5-year')
title('Projected Term Structure for Next 5 Years')
ylabel('Long Rate Maturity R(t,T)')
xlabel('Time')

Figure contains an axes. The axes with title Projected Term Structure for Next 5 Years contains 6 objects of type line. These objects represent Current, 1-year, 2-year, 3-year, 4-year, 5-year.

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

свернуть все

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

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

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

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

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

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

Пример: [Paths,Times] = simByTransition(CIR,NPeriods,'DeltaTimes',dt)

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

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

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

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

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

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

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

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

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

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

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

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

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

Xt = P (t, Xt)

.

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

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

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

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

свернуть все

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

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

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

Подробнее

свернуть все

Моделирование плотности перехода

SDE не имеет такого решения, что r (t) = f (r (0), ⋯).

Другими словами, уравнение явно не разрешимо. Однако плотность перехода для процесса известна.

Точным моделированием для распределения r (t_1),⋯,r (t_n) является моделирование процесса в моменты времени t_1,⋯,t_n для одного и того же значения r (0). Плотность перехода для этого процесса известна и выражается как

r (t) = start2 (1 e α (t u) 4αxd2 (4αe α (t u) start2 (1 − e α (t − u)) r (u)), t>uwhered≡4bασ2

Алгоритмы

Используйте simByTransition функция для моделирования любого векторного 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 Броуновский вектор движения.

Ссылки

[1] Глассерман, P. Monte Carlo Methods in Financial Engineering. Нью-Йорк: Спрингер-Верлаг, 2004.

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