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 object. The axes object with title B i - V a r i a t e blank B r o w n i a n blank M o t i o n : blank rho blank = blank 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. В каждом подынтервале возьмите 25 000 независимых ничьих из Распределения Гаусса, обусловленного на симулированных состояниях налево и праве:

    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 objects. Axes object 1 with title Brownian Bridge without Refinement: Sample Mean contains 2 objects of type line. Axes object 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- NVars- NTrials массив временных рядов.

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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.

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

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

Xt=P(t,Xt)

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

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

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

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

свернуть все

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

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

Времена интерполяции сопоставили с выходными временными рядами XT, возвращенный как NTimes- 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 функция не поддерживает заданные пользователями шумовые процессы.

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

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

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

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

Ссылки

[1] Островок-Sahalia, Y. “Тестируя Модели Непрерывного времени Точечной Процентной ставки”. Анализ Финансовых Исследований, Spring 1996, Издания 9, № 2, стр 385–426.

[2] Островок-Sahalia, Y. “Плотность перехода для процентной ставки и другой нелинейной диффузии”. Журнал финансов, издания 54, № 4, август 1999.

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

[4] Оболочка, J. C. Опции, фьючерсы и Другие Производные, 5-й редактор Englewood Cliffs, NJ: Prentice Hall, 2002.

[5] Джонсон, N. L. С. Коц и Н. Бэлэкришнэн. Непрерывные Одномерные распределения. Издание 2, 2-й редактор Нью-Йорк, John Wiley & Sons, 1995.

[6] Shreve, S. E. Стохастическое исчисление для финансов II: модели непрерывного времени. Нью-Йорк: Springer-Verlag, 2004.

Введенный в R2008a