ОПБШ. Симуляция траекторий |
Автор: q-trader |
25.05.2015 09:00 |
Симуляция ценовой динамики - важная часть тестирования инвестиционной стратегии. Рассмотрим, как она осуществляется в модели обобщенного процесса Блэка-Шоулза. Казалось бы, генерация траекторий случайного процесса - довольно очевидное дело: был бы датчик случайных чисел да уравнение динамики; стоит сделать ∆t достаточно малым, и все должно получиться... Однако для достижения приемлемой точности частота дискретизации должна быть очень высокой, что требует задействования значительных вычислительных мощностей. К счастью, интегральная репрезентация ОПБШ известна в аналитическом виде, поэтому возможна точная симуляция при помощи дискретной модели: lnPt = lnP + μt + (lnPt - ∆t - lnP - μ(t - ∆t))exp(-γ∆t) + N(½σ2(1 - exp(-2γ∆t))/γ). Данное уравнение позволяет корректно симулировать процесс при любом шаге времени ∆t, к примеру, даже на годовых интервалах. Прежде чем перейти непосредственно к алгоритму симуляции следует пояснить одну "головоломку". Если обратиться интегральной форме: lnPT = lnP +μT + (lnP0 - lnP)exp(-γT) + N(½σ2(1 - exp(-2γT))/γ), можно заметить, что дисперсия процесса ½σ2(1 - exp(-2γT))/γ растет со временем. Казалось бы, из этого следует, что и при генерации ее следует увеличивать соответственно индексу t. Однако это не так. Дело в том, что стохастический процесс можно рассматривать в двух аспектах: как отдельный путь или как отдельное сечение. Путь является частной реализацией случайной траектории с заданным начальным значением цены P0 = p, которую можно изучать, например, через ее распределение во времени, тогда как сечение процесса представляет собой распределение множества путей в пространстве цен в определенный момент времени T = t. Дисперсия сечений процесса действительно растет со временем, поскольку отдельные траектории имеют стремление к расползанию, как и предписывает интегральная форма. Однако дисперсия, используемая для порождения пути процесса - величина постоянная. На каждом шаге симуляция стартует из текущей точки пространства цен, а не из распределения, поэтому следует использовать источник шума с постоянной дисперсией. Сгенерированное таким образом множество траекторий, как раз и будет демонстрировать необходимое расползание на уровне временных сечений процесса. Дискретную версию ОПБШ можно представить в виде следующего алгоритма: function P = SimulateGBSP(p0, p, m, g, s, T, dt, M) N = T/dt; X = zeros(N, M); X(1, :) = log(p0); x = log(p); a = (m - s^2/2)*dt; b = exp(-g*dt); if g == 0 e = s*dt^0.5; else e = s*((1 - exp(-2*g*dt))/2/g)^0.5; end for n = 1 : N - 1 X(n + 1, :) = x + a*n + b*(X(n, :) - x - a*(n - 1)) + e*randn(1, M); end P = exp(X); Данный код для системы Matlab при необходимости несложно перевести на другие языки. Я применил здесь некоторое форматирование для улучшения читаемости. При копировании через буфер обмена оно очищается, не создавая никаких проблем при практическом использовании кода. Соответствия между обозначениями такие: p0 = P0, p = P, m = μ, g = γ, s = σ, dt = ∆t. Параметр M контролирует количество генерируемых траекторий. Как можно заметить, выражение стоящее в теле цикла довольно сильно отличается от исходного. Связано это с тем, что для нужд симуляции удобно перейти в базис с ∆t = 1, т.е., например, из годового в дневной. В частности, происходит переход от символьного времени c начальным моментом t = 0 к индексному времени с n = 1, и далее параметры m, g, s переводятся в новый базис под именами a, b и e соответственно. Также в функции содержится переключатель для g = 0, т.е. отсутствия реверсии, так как в этом случае дисперсия считается по другой формуле: σ2∆t. На представленном выше графике отображены 10 случайных реализаций путей обобщенного процесса Блэка-Шоулза с коэффициентом реверсии γ = 2. Можно отметить вышеупомянутое свойство "расползаемости": траектории стартуют из одной точки P0 = 200 и далее постепенно расходятся. Кроме того, в начальный момент времени актив перекуплен, поскольку P0 > P. Так как ОПБШ обладает свойством возврата к основной тенденции при γ > 0, ситуация постепенно "исправляется", что выражается в падении траекторий процесса в первый год симуляции на промежутке 0-1. После устранения перекупленности процесс начинает расти согласно основной тенденции (μ - ½σ2)T. Интересно сравнить этот достаточно типичный вариант реверсивной динамики с обычным процессом Блэка-Шоулза, который является частным случаем обобщенной модели при γ = 0. Прежде всего в глаза бросается, насколько быстрее разбегаются пути процесса. Так же следует отметить, что, поскольку γ = 0, говорить о перекупленности актива бессмысленно, поэтому никакой начальной коррекции цен и не наблюдается. Таким образом, можно констатировать, что обобщенный процесс Блэка-Шолуза довольно просто симулируется, что позволяет использовать данную модель при статистических испытаниях методом Монте-Карло. |
Комментарии
q-trader
Руслан
EVVA
Харита
q-trader