exponenta event banner

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

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

Все методы моделирования требуют указания временной сетки путем указания количества периодов (NPeriods). Можно также дополнительно указать скаляр или вектор строго положительных временных приращений (DeltaTime) и промежуточные временные этапы (NSteps). Эти параметры вместе с начальным временем выборки, связанным с объектом (StartTime), однозначно определить последовательность времен, в которые дискретизируется вектор состояния. Таким образом, методы моделирования позволяют пересекать временную сетку от начала до конца (то есть слева направо).

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

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

  1. Загрузите данные. Загрузите набор исторических данных из трехмесячных ставок Euribor, наблюдаемых ежедневно и соответствующих торговых дат, охватывающих временной интервал с 7 февраля 2001 года по 24 апреля 2006 года:

    load Data_GlobalIdx2
    plot(dates, 100 * Dataset.EB3M)
    datetick('x'), xlabel('Date'), ylabel('Daily Yield (%)')
    title('3-Month Euribor as a Daily Effective Yield')

    Figure contains an axes. The axes with title 3-Month Euribor as a Daily Effective Yield contains an object of type line.

  2. Подгонка модели к данным. Теперь подходят простой одномерный Vasicek модель для ежедневных эквивалентных выходов трехмесячных данных Euribor:

    dXt = S (L Xt) dt +

    Учитывая начальные условия, распределение короткой скорости в некоторое время T в будущем является гауссовым со средним:

    E (XT) = X0e ST + L (1 − e − ST)

    и расхождение:

    Var (XT) = start2 (1 e − ST )/ 2S

    Чтобы откалибровать эту простую короткоскоростную модель, перепишите ее в более привычном формате регрессии:

    yt = α + βxt + αt

    где:

    yt = dXt, α = SLdt, β = − Sdt

    выполнить обычную линейную регрессию, где волатильность модели пропорциональна стандартной ошибке остатков:

    λ = Var (αt )/dt

    yields     = Dataset.EB3M;
    regressors = [ones(length(yields) - 1, 1) yields(1:end-1)];
    [coefficients, intervals, residuals] = ...
       regress(diff(yields), regressors);
    dt    = 1;  % time increment = 1 day
    speed = -coefficients(2)/dt;
    level = -coefficients(1)/coefficients(2);
    sigma =  std(residuals)/sqrt(dt);
  3. Создайте объект и задайте его начальное значение StartState. Создание hwv объект с StartState установить на самый последний наблюдаемый короткий коэффициент:

    obj = hwv(speed, level, sigma, 'StartState', yields(end))
    obj = 
       Class HWV: Hull-White/Vasicek
       ----------------------------------------
         Dimensions: State = 1, Brownian = 1
       ----------------------------------------
          StartTime: 0
         StartState: 7.70408e-05
        Correlation: 1
              Drift: drift rate function F(t,X(t)) 
          Diffusion: diffusion rate function G(t,X(t)) 
         Simulation: simulation method/function simByEuler
              Sigma: 4.77637e-07
              Level: 6.00424e-05
              Speed: 0.00228854
    
  4. Смоделировать подогнанную модель. Предположим, например, что вы имитируете подогнанную модель в течение 64 (26) торговых дней, используя усовершенствованный броуновский мост с алгоритмом мощности два вместо обычного подхода моделирования Монте-Карло. Кроме того, предположим, что начальное время и состояние совпадают с временем и состоянием последнего доступного наблюдения исторических данных и что терминальное состояние является ожидаемым значением Vasicek модели 64 дня в будущем. В этом случае можно оценить поведение различных путей, которые имеют одно и то же начальное и терминальное состояния, возможно, для поддержки ценовых вариантов процентных ставок, зависящих от пути, в течение трехмесячного интервала.

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

    T      = 64;
    times  = (1:T)';
    t      = NaN(length(times) + 1, 1);
    t(1)   = obj.StartTime;
    t(2)   = T;
    delta  = T;
    jMax   = 1;
    iCount = 3;
    
    for k = 1:log2(T)
        i = delta / 2;
        for j = 1:jMax
            t(iCount) = times(i);
            i         = i + delta;
            iCount    = iCount + 1;
        end
        jMax  = 2 * jMax;
        delta = delta / 2;
    end
  5. Постройте график времени интерполяции. Проверьте последовательность времени интерполяции, сформированную этим алгоритмом:

    stem(1:length(t), t, 'filled')
    xlabel('Index'), ylabel('Interpolation Time (Days)')
    title ('Sampling Scheme for the Power-of-Two Algorithm')

    Figure contains an axes. The axes with title Sampling Scheme for the Power-of-Two Algorithm contains an object of type stem.

    Первые несколько образцов широко разделены во времени и определяют структуру курса путей. Более поздние образцы находятся на близком расстоянии друг от друга и постепенно уточняют детальную структуру.

  6. Инициализируйте сетку временных рядов. После создания последовательности времени интерполяции инициализируйте сетку временных рядов курса для начала интерполяции. Процесс выборки начинается в последнее наблюдаемое время и состояние, взятое из исторической серии коротких скоростей, и заканчивается 64 дня в будущем при ожидаемом значении Vasicek модель, полученная из калиброванных параметров:

    average = obj.StartState * exp(-speed * T) + level * ...
    (1 - exp(-speed * T));
    X       = [obj.StartState ; average];
  7. Создайте пять путей образца. Создайте пять путей образца, установив значение Refine флаг ввода в TRUE для вставки каждого нового интерполированного состояния в сетку временных рядов по мере его появления. Интерполяция выполняется на пробной основе. Потому что входной временной ряд X имеет пять испытаний (где каждая страница трехмерного временного ряда представляет независимое испытание), интерполированный выходной ряд Y также имеет пять страниц:

    nTrials = 5;
    rng(63349,'twister')
    Y = obj.interpolate(t, X(:,:,ones(nTrials,1)), ...
    'Times',[obj.StartTime  T], 'Refine', true);
  8. Постройте график результирующих путей образца. Поскольку время интерполяции монотонно не увеличивается, сортируйте время и переупорядочивайте соответствующие короткие скорости:

    [t,i] = sort(t);
    Y     = squeeze(Y);
    Y     = Y(i,:);
    plot(t, 100 * Y), hold('on')
    plot(t([1 end]), 100 * Y([1 end],1),'. black','MarkerSize',20)
    xlabel('Interpolation Time (Days into the Future)')
    ylabel('Yield (%)'), hold('off')
    title ('Euribor Yields from Brownian Bridge Interpolation')

    Figure contains an axes. The axes with title Euribor Yields from Brownian Bridge Interpolation contains 6 objects of type line.

    Короткие скорости на этом графике представляют альтернативные пути выборки, которые имеют одинаковые начальное и конечное значения. Они иллюстрируют особый, хотя и упрощенный случай более широкого метода выборки, известного как стратифицированная выборка. Более сложный пример стратифицированной выборки см. в разделе Стратифицированная выборка.

    Хотя этот простой пример моделировал одномерный Vasicek модель процентной ставки, она применяется к проблемам любой размерности.

Совет

Методы Brownian-bridge также применяют более общие методы уменьшения дисперсии. Дополнительные сведения см. в разделе Стратифицированная выборка.

Обеспечение положительных процентных ставок

Все методы моделирования и интерполяции позволяют определить последовательность функций или фоновых процессов для оценки в конце каждого периода времени выборки. Этот период включает в себя любые промежуточные временные этапы, определенные опционально NSteps входные данные, как описано в разделе Оптимизация точности: о точности решения и ошибке. Эти функции задаются как вызываемые функции времени и состояния и должны возвращать обновленный вектор состояния Xt:

Xt = f (t, Xt)

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

Функции обработки не требуются для использования времени (t) или состояния (Xt). Они также не обязаны обновлять или изменять вектор входного состояния. Фактически, методы моделирования и интерполяции не имеют знаний о каких-либо деталях реализации, и в этом отношении они придерживаются только опубликованного интерфейса.

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

За исключением броуновского движения (BM) модели, отдельные компоненты моделируемого вектора состояния обычно представляют переменные, чьи реальные аналоги являются по своей сути положительными величинами, такими как цены активов или процентные ставки. Однако по умолчанию большинство методов моделирования и интерполяции, представленных здесь, моделируют переход между последовательными временами выборки в виде масштабированного (возможно многомерного) гауссова розыгрыша. Таким образом, при аппроксимации непрерывного временного процесса за дискретное время вектор состояния может не оставаться положительным. Единственным исключением является simBySolution для gbm объекты и simBySolution для hwv объекты, логарифмическое преобразование разделяемых геометрических броуновских моделей движения. Кроме того, по умолчанию ни один из методов моделирования и интерполяции не вносит корректив в вектор состояния. Поэтому вы несете ответственность за то, чтобы все компоненты вектора состояния оставались положительными.

К счастью, указание неотрицательных состояний обеспечивает простую корректировку обработки в конце периода. Хотя эта корректировка широко применима, она раскрывается при применении к одномерным cir модель диффузии квадратного корня:

dXt = 0,25 (0,1 Xt) dt + 0,2Xt12dWt = S (L Xt) dt + startXt12dWt

Возможно, первичная привлекательность одномерия cir модели, где:

2SL ≥σ2

это то, что короткий курс остается положительным. Однако позитивность коротких ставок сохраняется только для базовой модели непрерывного времени.

  1. Моделирование ежедневных коротких тарифов cir модель. Чтобы проиллюстрировать последнее утверждение, смоделируйте ежедневные короткие ставки cir модель, использование cir, более одного календарного года (приблизительно 250 торговых дней):

    rng(14151617,'twister')
    obj   = cir(0.25,@(t,X)0.1,0.2,'StartState',0.02);
    [X,T] = simByEuler(obj,250,'DeltaTime',1/250,'nTrials',5);
    sprintf('%0.4f\t%0.4f+i%0.4f\n',[T(195:205)';...
        real(X(195:205,1,4))'; imag(X(195:205,1,4))'])
    ans = 
        '0.7760	0.0003+i0.0000
         0.7800	0.0004+i0.0000
         0.7840	0.0002+i0.0000
         0.7880	-0.0000+i0.0000
         0.7920	0.0001+i0.0000
         0.7960	0.0002+i0.0000
         0.8000	0.0002+i0.0000
         0.8040	0.0008+i0.0001
         0.8080	0.0004+i0.0001
         0.8120	0.0008+i0.0001
         0.8160	0.0008+i0.0001
         '
    
    

    Процентные ставки могут стать отрицательными, если полученные пути моделируются в дискретное время. Более того, с cir модели включают термин диффузии квадратного корня, короткие скорости могут даже стать сложными.

  2. Повторите моделирование с помощью функции обработки. Повторите моделирование, на этот раз задав функцию обработки, которая принимает абсолютную величину короткой скорости в конце каждого периода. Можно получить доступ к функции обработки по времени и состоянию (t, Xt), но она использует только вектор состояния коротких скоростей Xt:

    rng(14151617,'twister')
    [Y,T] = simByEuler(obj,250,'DeltaTime',1/250,... 
        'nTrials',5,'Processes',@(t,X)abs(X));
  3. Сравните скорректированные и нескорректированные пути. Графически сравнить величину нескорректированного пути (с отрицательными и комплексными числами!) с соответствующим путем, поддерживаемым положительным, используя функцию обработки конца периода в течение интересующего промежутка времени:

    clf
    plot(T,100*abs(X(:,1,4)),'red',T,100*Y(:,1,4),'blue')
    axis([0.75 1 0 0.4])
    xlabel('Time (Years)'), ylabel('Short Rate (%)')
    title('Univariate CIR Short Rates')
    legend({'Negative/Complex Rates' 'Positive Rates'}, ... 
        'Location', 'Best')

    Figure contains an axes. The axes with title Univariate CIR Short Rates contains 2 objects of type line. These objects represent Negative/Complex Rates, Positive Rates.

Совет

Этот метод можно использовать для получения более точных решений SDE. Дополнительные сведения см. в разделе Соображения по производительности.

См. также

| | | | | | | | | | | | | | | | | | | |

Связанные примеры

Подробнее