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

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

Уравнение цены

Построение прогностической модели стоимости любого финансового актива основано на эмпирическом анализе окружающей нас реальности. Опытным путем установлено, что изменение стоимости финансового актива зависит от (i) времени tи (ii) стоимости актива в исходный момент времени x_0. Это позволяет понять, что цена актива является функцией двух переменных x(x_0, t) .

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

dx = rxdt   \qquad (1)

В данное уравнение добавляется безрисковая ставка r являющаяся скалирующим коэффициентом, который описывает динамику актива. Для решения уравнения (1)разделяем переменные: \frac{dx}{x} = rdt , интегрируем и в итоге получаем уравнение стоимости финансового актива.

x = x_0e^{rt} \qquad (2)

где, x_0 - стоимость финансового актива в момент времени t_0=0.

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

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

Броуновское движение

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

Если перенести броуновское движение на координатную плоскость и представить его в дискретном времени, то получим переменную Винера, описывающая одну конкретную реализацию случайного процесса W_t = \varepsilon_1 + \varepsilon_2 + \cdots+\varepsilon_n, где \varepsilon_jэто независимые случайные величины имеющие нормированное нормальное распределение \sim N(0,1).

На практике, каждая случайная величина\varepsilon_jявляется приращением цены в соответствующий момент времениt_j. Для того, чтобы задать некоторую амплитуду таких толчков и описать данной моделью поведение какого-то реального актива вводиться коэффициент \sigma, рассчитывающийся на основе статистических данных и являющийся волатильностью. В итоге дискретный процесс Винера трансформируется в формулу:W_t =\sigma( \varepsilon_1 + \varepsilon_2 + \cdots+ \varepsilon_n). В силу свойств случайных величин, распределенных нормально, сумма гауссовых чисел  \varepsilon_1 + \varepsilon_2 +\cdots+ \varepsilon_n, представляется как \varepsilon{\sqrt{n}}, где \varepsilon_j \sim N(0,1), а n - общее количество случайных движений цены.

В конечном итоге Винеровский процесс, может быть представлен в виде W_t = \sigma \varepsilon {\sqrt{n}}. Его особенность заключается в том, что малое изменение процесса по времени \Delta tприсутствует в переменной Винера, как \sqrt{\Delta t}. В геометрической интерпретации это означает, что огибающее семейство всех реализаций такого случайного процесса будут иметь параболический вид.

Добавив к Винеровскому процессу определенную динамику в виде r\Delta t, получим уравнение арифметического броуновское движения со сносом r.

x = x_0 + r\Delta t + \sigma \varepsilon \sqrt{\Delta t} \qquad (3)
Код python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

steps = 300
num_plots = 50
Range = []
Values = [0]


plt.style.use('ggplot')
plt.rcParams['lines.linewidth'] = 0.6

fig, ax = plt.subplots()
fig.set_figwidth(12)
fig.set_figheight(6)

colormap = plt.cm.gist_ncar
plt.gca().set_prop_cycle(plt.cycler('color', plt.cm.jet(np.linspace(0, 1, 1))))


Range = np.arange(steps) 

for i in range(0, num_plots):

    for i in range (1, steps):
        x = np.random.random()
        if x <= 0.5:
            x = -1
        else:
            x = 1
        y = Values[-1] + x

        Values.append(y)
    
    ax.plot(Range, Values)
    Values = [0]

Постановка задачи

Имея в распоряжении полученное соотношение (3) возникает ощущение, что никакой сложности в прогнозировании цен нет. Так и есть, однако, важно иметь в виду, что с точки зрения финансовой науки не совсем корректно анализировать приращение ценыdx, так как еще в 30 гг. ХХ века было установлено, что нормально распределены не сами цены, а их логарифмы. Следовательно объектом изучения должен быть не самx, а \ln x . Ниже рассмотрим логику перехода от dxк d(\ln x).

Для начала из разностной схемы уравнения цены (3), выразим приращение цены \Delta x, а затем запишем дифференциальное уравнение в непрерывном времени перейдя к дифференциалам.

x = x_0 + r\Delta t + \sigma \varepsilon \sqrt{\Delta t} \mapsto \Delta x = r\Delta t + \sigma \varepsilon \sqrt{\Delta t} \mapsto dx = rdt + \sigma \delta W

Заметим, что dx = rdt + \sigma \delta W представляет собой уравнение Ито, то есть такой процесс, где есть некий снос rdt и флуктуация  \sigma \delta W, в общем виде записываемый следующим образом:

dx = a(x,t)dt + b(x,t)\delta W \qquad (4)

где, a(x,t) - функция сноса, b(x,t)- функция волатильности.

Имея в виду необходимость проанализировать d(\ln x)необходимо перейти от уравнения dx = rdt + \sigma \delta W к уравнению dx = xrdt + x\sigma \delta W . Решается полученное уравнение довольно нетривиально так, как в правой части стохастического дифференциального уравнения стоят не константы, как в уравненииdx = rdt + \sigma \delta W, а функции xr и x\sigma .

Такого рода задачи финансовой математики помогает решать лемма Ито. Например, лемма Ито также используется для вывода уравнения Блэка-Шоулза-Мертона в частных производных.

Лемма Ито

Для того, чтобы решить СДУ dx = xrdt + x\sigma \delta W требуется взять некую функциюF(x(t)),t) , поведение, которой будет соответствовать общему процессу Ито, то есть зависеть от функций сноса A(x,t) и волатильности B(x,t), а также аргументом которой будет случайный процесс x(t). В результате получим связанные с друг другом дифференциальные стохастические уравнения.

dF(x(t),t) = A(x,t)dt+ B(x,t)\delta W \qquad (5)

где, дифференциал случайного процесса x выглядит, как dx = a(x,t)dt + b(x,t)\delta W*

Лемма Ито позволяет вычислить функции A(x,t)и B(x,t), если нам даны функции a(x,t)иb(x,t). Функцию F(x(t), t)предполагаем аналитической, в частности, разложимой в ряд Тейлора в окрестности точки (x_0,t_0).

F(x,t) = F(x_0, t_0)+ \frac{\partial F}{\partial x} \Delta x + \frac{1}{2} \frac{\partial ^2F}{\partial x^2}(\Delta x)^2  + \frac{\partial F}{\partial t} \Delta t + \cdots \qquad (6)

где, частные производные вычисляются в точке (x_0, t_0)и \Delta x = x - x_0,  \Delta t = t - t_0.

В виду соотношения * учитываем только бесконечно малые \Delta x, \Delta t, (\Delta x)^2; остальные имеют порядок малости выше\Delta t. В разложение(6)подставляются приращения случайного процесса \Delta xи(\Delta x)^2, аF(x_0, t_0) переносится в левую часть уравнения. Усредняя левую и правую часть (угловые скобки \left \langle \right \rangleобозначают мат. ожидание) получаем:

\left \langle \Delta F \right \rangle  = \frac{\partial F}{\partial  x} (a_0 \Delta t) + \frac{1}{2} \frac{\partial ^2F}{\partial x^2}(b_0^2\Delta t) + \frac{\partial F}{\partial t} \Delta  t + \cdots

В самом деле:

\langle \Delta x \rangle =a_0 \Delta t + b_0 \langle \varepsilon \rangle \sqrt{\Delta t} = a_0 \Delta t- в силу того, что \langle \varepsilon\rangle = 0  , второе слагаемое исчезает и остается только a_0\Delta t .

(\Delta x)^2 = a_0^2\Delta t^2 + 2a_0b_0 \varepsilon \Delta t \sqrt{ \Delta t} + b_0^2 \varepsilon^2 \Delta t \Rightarrow_1 a_0^2\Delta t^2 + b_0^2 \varepsilon^2 \Delta t \Rightarrow_2 a_0^2\Delta t^2 + b_0^2 \varepsilon^2 \Delta t \Rightarrow_3 \Rightarrow_3 b_0^2 \langle \varepsilon^2 \rangle  \Delta t = b_0 \Delta t На первом шаге пропадает удвоенное произведение по причине \langle  \varepsilon \rangle=0, на втором шаге понимаем, что слагаемое a_0^2\Delta t^2 деленное на \Delta tв пределе дает 0. Таким образом приращение функции a_0^2 \Delta t^2уходит и остается только b_0^2 \varepsilon^2 \Delta t. Так как \langle  \varepsilon^2 \rangle = 1на последнем шаге останется только b_0^2 \Delta t.


Имея математическое ожидание приращения функции F(x(t), t)можно выразить функцию сноса A(x,t)и функцию волатильности B(x,t) следующим образом: A(x,t) = \frac{\left \langle \Delta F  \right \rangle}{\Delta t}, а B(x,t) = \frac{\left \langle \Delta F^2  \right \rangle}{\Delta t}. Тогда,

A(x,t)= \frac {\frac{\partial F}{\partial x} (a_0 \Delta t) + \frac{1}{2} \frac{\partial ^2F}{\partial x^2}(b_0^2\Delta t) + \frac{\partial F}{\partial t} \Delta t} {\Delta t} =  \frac{\partial F}{\partial x}a_0 + \frac{b_0^2}{2} \frac{\partial ^2F}{\partial x^2} + \frac{\partial F}{\partial t}B^2(x,t)= \frac {(\frac{\partial F}{\partial x} (a_0 \Delta t) + \frac{1}{2} \frac{\partial ^2F}{\partial x^2}(b_0^2\Delta t) + \frac{\partial F}{\partial t} \Delta t)^2} {\Delta t} = b_0^2(\frac{\partial F}{\partial x}) \Rightarrow  B(x,t) = b_0(\frac{\partial F}{\partial x})

Получив функции сноса A(x,t)и функцию волатильности B(x,t), дифференциал функции F можно записать в виде дифференциального стохастического уравнения, заключением которого является лемма Ито:

dF  = \left(\frac{\partial F}{\partial t} + a(x,t)\frac{\partial F}{\partial x} + \frac{b^2(x,t)}{2} \frac{\partial ^2F}{\partial x^2}\right)dt + b(x,t)\frac{\partial F}{\partial x} \delta W \qquad (6)

Логарифмическое блуждание

Как отмечалось ранее, принципиальным для финансовой науки было получение уравнения, одновременно описывающего экспоненциальный рост цены и совмещающего в себе стохастическую составляющую. Поставленная задача решается применением леммы Ито. В формуле(6)функция a(x,t) заменяется на xr, а функция b(x,t)заменяется на \sigma x; вместо Fподставляется \ln x.

d(\ln x)  =\left( \frac{\partial(\ln x)}{\partial t} + rx\frac{\partial(\ln x)}{\partial x} + \frac{(\sigma x)^2}{2} \frac{\partial ^2(\ln x)}{\partial x^2} \right) dt + \sigma x\frac{\partial (\ln x)}{\partial x} \delta W

Вычислив производные и осуществив необходимые преобразования получим.

d(\ln x)  = \left(0 + rx \frac{1}{x} - \frac{(\sigma x)^2}{2} \frac{1}{x^2} \right)dt + \sigma x\frac{1}{x} \delta W \Rightarrow d(\ln x) = \left(r - \frac{\sigma^2}{2} \right)dt + \sigma \delta W

Так как при dtи \delta Wстоят константы, данное дифференциальное уравнение можно записать в конечных разностях, затем выразить функцию \ln x, после чего функцию цены актива x(t)получить прибегнув к потенцированию. В итоге приходим к принципиально важному уравнению, которое лежит в основе большинства моделей оценки справедливой стоимости финансовых инструментов.

x = x_0e^{(r-\frac{\sigma^2}{2})\Delta t+ \sigma \delta W} \qquad (7)

В отсутствии стохастической составляющей, т.е. при \sigma = 0уравнение (7)превращается в обычное уравнение размножения и гибели (2), а при r=0получим логарифмическое блуждание с нулевым сносом.

Код python
import math as m
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

import scipy.stats
from scipy.stats import binom
from scipy.stats import expon

r =0.25
sigma = 0.1
t = 1/360
x0 = 100
num_plots = 10
Days = 360*8

Values = []
DAYS = []

for i in range (0, Days):
    DAYS.append(i)

plt.style.use('ggplot')
plt.rcParams['lines.linewidth'] = 0.6

fig, ax = plt.subplots()
fig.set_figwidth(18)
fig.set_figheight(9)

colormap = plt.cm.gist_ncar

for i in range (0,num_plots):
    
    for i in range (0,Days):
        
        if i == 0:
            #Генерация случайного числа
            distribution = scipy.stats.norm(loc=0,scale=1)
            sample = distribution.rvs(size=1)
            
            P = x0*np.exp( ((r - (sigma**2/2))*t) + (sigma*sample*np.sqrt(t)))
            Values.append(P)
            
        else:
            #Генерация случайного числа
            distribution = scipy.stats.norm(loc=0,scale=1)
            sample = distribution.rvs(size=1)
            
            K = Values[-1]*np.exp( ((r - (sigma**2/2))*t) + (sigma*sample*np.sqrt(t)))
            Values.append(K)


    ax.plot(DAYS, Values)
    Values= []

Список использованных источников.

  1. Степанов С.С. "Стохастический мир", 2009 г. — 376 с.

  2. Жуленев С.В. "Финансовая математика. Введение в классическую теорию. Часть 2.", 2012 г. — 419 с.

  3. Ширяев А.Н. "Основы стохастической финансовой математики. Том 1. Факты. Модели", 1998 — 512 с.