интерполировать

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

Синтаксис

[XT,T] = interpolate(MDL,Times,Paths)
[XT,T] = interpolate(___,Name,Value)

Описание

пример

[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])

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

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

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

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

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

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

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

Этот пример исследует поведение Броуниэн-Бридж через один шаг времени.

  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)]);

    Броуновская интерполяция в выбранном интервале, 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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-by-NVARS-by-NTRIALS массив временных рядов.

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

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

Если входной временной вектор интерполяции, Times не содержит недостающих наблюдений (NaN s), вывод T, является тем же временным вектором как Times, но с NaN s удаленный. Это уменьшает длину 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 должны полностью наблюдаться (никакие недостающие наблюдения, обозначенные NaN s).

  • Функция 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