simByTransition

Моделируйте демонстрационные пути Кокса-Инджерсолла-Росса с плотностью перехода

Синтаксис

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

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

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

где

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

B(t,T)=2αbσ2журнал(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-by-NTRIALS three-dimensional массив временных рядов. В данном примере размером вывода является 6-by-1-by-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')

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

свернуть все

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Xt=P(t,Xt)

.

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

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

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

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

свернуть все

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

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

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

Больше о

свернуть все

Симуляция плотности перехода

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

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

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

r(t)=σ2(1eα(tu)4αxd2(4αeα(tu)σ2(1eα(tu))r(u)),t>uгдеd4bασ2

Алгоритмы

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

dXt=S(t)[L(t)Xt]dt+D(t,Xt12)V(t)dWt

где

  • Xt является NVARS-by-1 вектор состояния переменных процесса.

  • S является NVARS-by-NVARS матрица скоростей возвращения к среднему уровню (уровень возвращения к среднему уровню).

  • L является NVARS-by-1 вектор уровней возвращения к среднему уровню (отдаленное среднее значение или уровень).

  • D является NVARS-by-NVARS диагональная матрица, где каждый элемент по основной диагонали является квадратным корнем из соответствующего элемента вектора состояния.

  • V является NVARS-by-NBROWNS мгновенная матрица уровня энергозависимости.

  • dWt является NBROWNS-by-1 вектор Броуновского движения.

Ссылки

[1] Глассермен, P. Методы Монте-Карло в финансовой разработке. Нью-Йорк: Springer-Verlag, 2004.

Введенный в R2018b

Для просмотра документации необходимо авторизоваться на сайте