10.2. Simulações de processos de Wiener e browniano geométrico

Nas simulações numéricas de equações estocásticas, via método de Monte-Carlo (i.e. simulando vários caminhos amostrais), precisamos, em particular, simular processos de Wiener. O mesmo acontece em equações diferenciais aleatórias, quando os parâmetros são funções explícitas de um processo de Wiener.

A observação importante é que, a menos de erros de arredondamento para ponto flutuante e de erros na geração de números aleatórios (que na prática são pseudo aleatórios), um processo de Wiener {Wt}t0\{W_t\}_{t \geq 0} pode ser expresso de maneira exata, ao longo dos pontos de uma malha temporal.

O mesmo acontece ao utilizarmos um movimento browniano geométrico, uma ponte browniana ou qualquer outro processo para o qual conhecemos explicitamente a solução.

Simulando um processo de Wiener

Ao considerarmos uma malha 0=t0<t1<<tn=T,0 = t_0 < t_1 < \ldots < t_n = T, por exemplo, começamos com

W0n=0, W_0^n = 0,

que é exato, pois W0=0.W_0 = 0. No próximo ponto, temos

Wt1=Wt1W0N(0,t1)=t1N(0,1). W_{t_1} = W_{t_1} - W_0 \sim \mathcal{N}(0, t_1) = \sqrt{t_1} \mathcal{N}(0, 1).

Considerando uma variável aleatória normal padrão Zt1N(0,1),Z_{t_1} \sim \mathcal{N}(0, 1), podemos escrever

Wt1=Wt1+t1Z1. W_{t_1} = W_{t_1} + \sqrt{t_1} Z_1.

No ponto seguinte, temos, da mesma forma,

Wt2Wt1N(0,t2t1)=t2t1N(0,1). W_{t_2} - W_{t_1} \sim \mathcal{N}(0, t_2 - t_1) = \sqrt{t_2 - t_1}\mathcal{N}(0, 1).

Considerando uma variável aleatória normal padrão Zt2N(0,1)Z_{t_2} \sim \mathcal{N}(0, 1) independente de Z1,Z_1, podemos escrever

Wt2=Wt1+t2t1Zt2. W_{t_2} = W_{t_1} + \sqrt{t_2 - t_1}Z_{t_2}.

E assim sucessivamente. Consideramos variáveis aleatórias Ztj.Z_{t_j}. j=1,,n,j = 1, \ldots, n, com ZtjZ_{t_j} independente de Zt1,,Ztj1,Z_{t_1}, \ldots, Z_{t_{j-1}}, e obtemos

Wtj=Wtj1+tjtj1Ztj,j=1,,n. W_{t_j} = W_{t_{j-1}} + \sqrt{t_j - t_{j-1}}Z_{t_j}, \quad j = 1, \ldots, n.

Essa é uma representação exata. As variáveis aleatórias ZtjZ_{t_j} formam um processo discreto {Ztj}j=1n\{Z_{t_j}\}_{j = 1}^n que é uma cadeia de Markov, por conta da independência do passado distante. Na verdade, ela independente até do instante imediatamente anterior.

Assim, ao definirmos tomarmos amostras Ztj(ω)Z_{t_j}(\omega) dessas normais e definirmos a sequência

W0n(ω)=0,Wtjn(ω)=Wtj1n(ω)+tjtj1Ztj(ω),j=1,,n, W_0^n(\omega) = 0, \quad W_{t_j}^n(\omega) = W_{t_{j-1}}^n(\omega) + \sqrt{t_j - t_{j-1}}Z_{t_j}(\omega), \quad j = 1, \ldots, n,

estamos, efetivamente, calculando uma discretização exata de um caminho amostral de um processo de Wiener. Da mesma forma que os pontos {sin(jπ/n)}j=0,,n\{\sin(j\pi/n)\}_{j=0, \ldots, n} formam uma discretização exata da função sin(x),\sin(x), no intervalo [0,π].[0, \pi].

Os únicos erros possíveis são os erros de arredondamente em ponto flutuante, ao calcularmos Wtj1n(ω)+tjtj1ZtjW_{t_{j-1}}^n(\omega) + \sqrt{t_j - t_{j-1}}Z_{t_j} e os erros na geração da sequência de números aleatórios Ztj(ω),Z_{t_j}(\omega), visto que os números gerados são pseudo aleatórios e não são amostras de uma variável verdadeiramente normal.

De qualquer forma, ao analisarmos a convergência de métodos de aproximação de equações estocásticas e de equações aleatórias que envolvam um processo de Wiener, não precisamos considerar, em um primeiro momento, esses erros de arredontamento e de geração de números pseudo-aleatórios e podemos assumir que a sequência gerada {Wtjn(ω)}j=0n\{W_{t_j}^n(\omega)\}_{j = 0}^n é uma discretização exata do processo de Wiener usado na definição da equação em questão.

Mais ainda. Se tivermos uma sequência {Wtjn}j=0n\{W_{t_j}^n\}_{j = 0}^n e quisermos estender essa sequência a uma malha mais fina, podemos utilizar o procedimento feito na demonstração de existência de um processo de Wiener. Não precisamos refazer todo o processo. Basta introduzir novos pontos, de acordo com uma média ponderada entre as variáveis na malha mais grossa e acrescentar um múltiplo apropriado de uma normal padão associada ao ponto intermediário. As contas são facilitadas no caso de uma malha uniforme e de um refinamento dobrando o número de pontos, mas isso não é necessário. Qualquer refinamento pode ser considerado.

Simulando um movimento browniano geométrico

A solução {Xt}t0\{X_t\}_{t\geq 0} do movimento browniano geométrico, dado por

dXt=μXt dt+σXt dWt, \mathrm{d}X_t = \mu X_t \;\mathrm{d}t + \sigma X_t \;\mathrm{d}W_t,

com uma condição inicial Xtt=0=X0,X_t|_{t = 0} = X_0, é conhecida explicitamente, pela fórmula

Xt=X0e(μσ22)t+σWt. X_t = X_0 e^{\displaystyle \left(\mu - \frac{\sigma^2}{2}\right)t + \sigma W_t}.

Assim, uma vez de posse de uma amostra discreta exata {Wtjn}j=0n\{W_{t_j}^n\}_{j = 0}^n de um processo de Wiener em pontos de uma malha 0=t0<t1<<tn=T,0 = t_0 < t_1 < \ldots < t_n = T, podemos obter uma amostra discreta exata do movimento browniano através de

Xtjn=X0e(μσ22)tj+σWtj. X_{t_j}^n = X_0 e^{\displaystyle \left(\mu - \frac{\sigma^2}{2}\right)t_j + \sigma W_{t_j}}.

Mais precisamente, se {Wtj(ω)}j\{W_{t_j}(\omega)\}_j é uma amostra discreta de um determinado caminho amostral do processo de Wiener, então sorteando uma condição inicial X0(ω),X_0(\omega), obtemos uma amostra discreta de um caminho amostral do movimento browniano geométrico, através de

Xtjn(ω)=X0(ω)e(μσ22)tj+σWtj(ω). X_{t_j}^n(\omega) = X_0(\omega) e^{\displaystyle \left(\mu - \frac{\sigma^2}{2}\right)t_j + \sigma W_{t_j}(\omega)}.

Isso pode, também, ser feito recursivamente, na forma

Xtjn(ω)=Xtj1n(ω)e(μσ22)(tjtj1)+σΔWj(ω), X_{t_j}^n(\omega) = X_{t_{j-1}}^n(\omega) e^{\displaystyle \left(\mu - \frac{\sigma^2}{2}\right)(t_j-t_{j-1}) + \sigma \Delta W_j(\omega)},

onde

ΔWj=WtjWtj1. \Delta W_j = W_{t_j} - W_{t_{j-1}}.
Last modified: June 01, 2026. Built with Franklin.jl, using the Book Template.