interpolate

Брауновская интерполяция стохастических дифференциальных уравнений

Описание

пример

[XT,T] = interpolate(MDL,Times,Paths) выполняет интерполяцию Брауна в пользовательский массив временных рядов на основе кусочно-постоянного подхода к выборке Эйлера.

пример

[XT,T] = interpolate(___,Name,Value) добавляет необязательные аргументы пары "имя-значение".

Примеры

Стохастическая интерполяция без уточнения

Многие приложения требуют знания вектора состояния при промежуточных шагах расчета, которые первоначально недоступны. Одним из способов аппроксимации этих промежуточных состояний является выполнение детерминированной интерполяции. Однако детерминированные методы интерполяции не могут захватить правильное распределение вероятностей в эти промежуточные моменты времени. Брауновская (или стохастическая) интерполяция захватывает правильное распределение соединений путем дискретизации из условного Гауссова распределения. Этот метод дискретизации иногда упоминается как Брауновский мост.

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

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

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

Стохастический метод интерполяции доступен любой модели. Это лучше всего проиллюстрировать, однако, посредством процесса броуновского движения с постоянными параметрами. Рассмотрим коррелированное, двухмерное броуновское движение (BM) модель формы:

dX1t=0.3dt+0.2dW1t0.1dW2tdX2t=0.4dt+0.1dW1t0.2dW2tE[dW1tdW2t]=ρdt=0.5dt

  1. Создайте bm объект для представления двухмерной модели:

    mu    = [0.3; 0.4];
    sigma = [0.2 -0.1; 0.1 -0.2];
    rho   = [1 0.5; 0.5 1];
    obj   = bm(mu,sigma,'Correlation',rho);
  2. Принимая, что дрейф (Mu) и диффузия (Sigma) параметры в годовом исчислении, моделируют одно испытание ежедневных наблюдений Монте-Карло в течение одного календарного года (250 торговых дней):

    rng default                 % make output reproducible
    dt    = 1/250;  % 1 trading day = 1/250 years
    [X,T] = simulate(obj,250,'DeltaTime',dt);
  3. Полезно детально изучить небольшой интервал.

    1. Интерполяция в моделируемые временные ряды с помощью брауновского моста:

      t = ((T(1) + dt/2):(dt/2):(T(end) - dt/2));
      x = interpolate(obj,t,X,'Times',T);
    2. Постройте график как моделируемого, так и интерполированного значений:

      plot(T,X(:,1),'.-r',T,X(:,2),'.-b')
      grid on;
      hold on;
      plot(t,x(:,1),'or',t,x(:,2),'ob')
      hold off;
      xlabel('Time (Years)')
      ylabel('State')
      title('Bi-Variate Brownian Motion: \rho = 0.5')
      axis([0.4999 0.6001 0.25 0.4])

      Figure contains an axes. The axes with title Bi-Variate Brownian Motion: \rho = 0.5 contains 4 objects of type line.

      На этом графике:

      • Твердые красные и синие точки указывают на моделируемые состояния двухмерной модели.

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

      • Открытые круги указывают интерполированные состояния.

      • Открытые круги, сопоставленные со всеми другими интерполированными состояниями, окружают твердые точки, сопоставленные с соответствующим моделируемым состоянием. Однако интерполированные состояния в середине каждого временного шага обычно отклоняются от прямой линии, соединяющей каждую твердую точку.

Симуляция условных Гауссовых распределений

Можно получить дополнительное представление о поведении стохастической интерполяции, рассматривая брауновский мост как симуляцию Монте-Карло условного Гауссова распределения.

В этом примере рассматривается поведение брауновского моста с одним временным шагом.

  1. Разделите один временной шаг длины dt в 10 подынтервалы:

    mu    = [0.3; 0.4];
    sigma = [0.2 -0.1; 0.1 -0.2];
    rho   = [1 0.5; 0.5 1];
    obj   = bm(mu,sigma,'Correlation',rho);
    
    rng default; % make output reproducible
    dt    = 1/250;  % 1 trading day = 1/250 years
    [X,T] = simulate(obj,250,'DeltaTime',dt);
    
    n        = 125;    % index of simulated state near middle
    times    = (T(n):(dt/10):T(n + 1));
    nTrials  = 25000;  % # of Trials at each time
  2. В каждом подынтервале берите 25000 независимых рисунков из Гауссова распределения, обусловленного моделируемыми состояниями налево и справа:

    average  = zeros(length(times),1);
    variance = zeros(length(times),1);
    for i = 1:length(times)
        t = times(i);
        x = interpolate(obj,t(ones(nTrials,1)),...
            X,'Times',T);
        average(i)  = mean(x(:,1));
        variance(i) = var(x(:,1));
    end
  3. Постройте график выборки и отклонения каждой переменной состояния:

    Примечание

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

    subplot(2,1,1);
    hold on;
    grid on;
    plot([T(n) T(n + 1)],[X(n,1) X(n + 1,1)],'.-b')
    plot(times, average, 'or')
    hold off;
    title('Brownian Bridge without Refinement: Sample Mean') 
    ylabel('Mean')
    limits = axis;
    axis([T(n) T(n + 1) limits(3:4)]);
    
    subplot(2,1,2)
    hold on;
    grid on;
    plot(T(n),0,'.-b',T(n + 1),0,'.-b')
    plot(times, variance, '.-r')
    hold('off');
    title('Brownian Bridge without Refinement: Sample Variance')
    xlabel('Time (Years)')
    ylabel('Variance')
    limits = axis;
    axis([T(n) T(n + 1) limits(3:4)]);

    Figure contains 2 axes. Axes 1 with title Brownian Bridge without Refinement: Sample Mean contains 2 objects of type line. Axes 2 with title Brownian Bridge without Refinement: Sample Variance contains 3 objects of type line.

    Интерполяция Брауна в пределах выбранного интервала, dt, иллюстрирует следующее:

    • Условное среднее значение каждой переменной состояния лежит на прямолинейном сегменте между исходными моделируемыми состояниями в каждой конечной точке.

    • Условное отклонение каждой переменной состояния является квадратичной функцией. Эта функция достигает своего максимального середины между конечными точками интервала и равна нулю в каждой конечной точке.

    • Максимальное отклонение, хотя и зависит от фактической модели G(t,X) функции скорости диффузии, является отклонением суммы NBrowns коррелированные Гауссовы вариации, масштабируемые множителем dt/4.

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

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

свернуть все

Модель Стохастического дифференциального уравнения, заданная как sde, bm, gbm, cev, cir, hwv, heston, sdeddo, sdeld, или sdemrd объект.

Все MDL параметры приняты кусочно-постоянными, оцененными из самого последнего времени наблюдения в Times которое предшествует заданному времени интерполяции в T. Это согласуется с подходом Эйлера симуляции Монте-Карло.

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

Время интерполяции, заданное как NTimes вектор элемента. Длина этого вектора определяет количество строк в интерполированных выходных временных рядах XT.

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

Выборка путей коррелированных переменных состояния, заданная как NPeriods-by- NVars-by- NTrials массив временных рядов.

В данном испытании каждая строка этого массива является транспонированием вектора состояния Xt в момент t. Paths - начальный массив временных рядов, в который interpolate функция выполняет интерполяцию Брауна.

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

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

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

Пример: [XT,T] = interpolate(MDL,T,Paths,'Times',t)

Время наблюдения, сопоставленное с входным Paths временных рядов, заданная как разделенная разделенными запятой парами, состоящая из 'Times' и вектор-столбец.

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

Флаг, который указывает, interpolate ли использует требуемое время интерполяции (см. T) для уточнения интерполяции по мере поступления новой информации, заданной как разделенная разделенными запятой парами, состоящая из 'Refine' и логический со значением True или False.

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

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

Xt=P(t,Xt)

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

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

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

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

свернуть все

Интерполированные переменные состояния, возвращенные как NTimes-by- NVars-by- NTrials массив временных рядов.

В данном испытании каждая строка этого массива является транспонированием интерполированного вектора состояния, Xt в момент t. XT - интерполированные временные ряды, образованное путем интерполяции в вход Paths массив временных рядов.

Время интерполяции, сопоставленное с выходными временными рядами XT, возвращается как NTimes-by-1 вектора-столбца.

Если входной временной вектор интерполяции Times не содержит отсутствующих наблюдений (NaNs), выходные данные T - тот же временной вектор, что и Times, но с NaNs удалено. Это уменьшает длину T и количество строк XT.

Алгоритмы

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

Рассмотрим векторное SDE вида:

dXt=F(t,Xt)dt+G(t,Xt)dWt

где:

  • X является NVars -by- 1 вектор состояния.

  • F является NVars -by- 1 функция с векторным значением скорости дрейфа.

  • G является NVars -by NBrowns функцией с матричным значением скорости диффузии.

  • W является NBrowns -by- 1 Брауновский вектор движения.

Учитывая пользовательский массив временных рядов, сопоставленный с этим уравнением, эта функция выполняет брауновскую (стохастическую) интерполяцию путем дискретизации из условного Гауссова распределения. Этот метод дискретизации иногда называют броуновским мостом.

Примечание

В отличие от методов симуляции, interpolation функция не поддерживает заданные пользователем шумовые процессы.

  • The interpolate функция принимает, что все параметры модели являются кусочно-постоянными, и оценивает их из самого последнего времени наблюдения в Times которое предшествует заданному времени интерполяции в T. Это согласуется с подходом Эйлера симуляции Монте-Карло.

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

  • Пользовательские временные ряды Paths и соответствующие Times наблюдения необходимо полностью наблюдать (отсутствующие наблюдения, обозначаемые NaNс).

  • The interpolate функция принимает, что заданный пользователем массив временных рядов Paths связана с sde объект. Для примера, Times и Paths входная пара является результатом начальной симуляции с затравкой курса. Однако интерполяция игнорирует начальные условия sde объект (StartTime и StartState), разрешающий использование заданного пользователем Times и Paths введите последовательность, чтобы иметь приоритет.

Ссылки

[1] Ait-Sahalia, Y. «Проверка моделей спотового процента в непрерывном времени». Обзор финансовых исследований, весна 1996 года, том 9, № 2, стр. 385-426.

[2] Ait-Sahalia, Y. «Переходные плотности для процентной ставки и других нелинейных диффузий». Финансовый журнал, том 54, № 4, август 1999 года.

[3] Glasserman, P. Monte Carlo Methods in Financial Engineering. Нью-Йорк, Springer-Verlag, 2004.

[4] Hull, J. C. Options, Futures, and Other Derivatives, 5 ed. Englewood Cliffs, NJ: Prentice Hall, 2002.

[5] Джонсон, Н. Л., С. Коц и Н. Балакришнан. Непрерывные одномерные распределения. Vol. 2, 2nd ed. New York, John Wiley & Sons, 1995.

[6] Shreve, S. E. Stochastic Calculus for Finance II: Continuous-Time Models. Нью-Йорк: Springer-Verlag, 2004.

Введенный в R2008a