1 - Movimento Browniano Geométrico
Um processo estocástico \(S(t)\) é Movimento Browniano Geométrico - MBG quando \(log S(t)\) é um Movimento Browniano - MB com valor inicial \(logS(0)\).
O MBG é utilizado para modelar o preço de ações, visto que o retorno dos preços é um MB.
Destaca-se que enquanto o retorno das ações pode assumir valores negativos, o preço das ações deve ser sempre positivo, o que é característica do MBG, pois a função exponencial assume apenas valores positivos.
O MBG pode ser representado em forma de equação diferencial estocástica:
\[
\frac{dS(t)}{S(t)} = \mu dt + \sigma dW(t)
\]
com \(W\) representando o Movimento Browniano padrão.
A solução da equação diferencial acima é:
\[
S(t)=S(0)e^{(\mu-\frac{\sigma^2}{2})t+\sigma W(t)}
\]
Portanto, para simular o caminho dos preços, utilizaremos a seguinte equação recursiva:
\[
S(t_{i+1})=S(t_{i})exp[(\mu-\frac{1}{2}\sigma^2)(t_{i+1}-t_{i})+\sigma\sqrt{t_{i+1}-t_{i}}Z_{i+1}]
\\
i = 0,1,2,...,n-1 \\
\text{Sendo } Z_{1},Z_{2},...,Z_{n} \text{ variáveis aleatórias}\\ \text{independentes com distribuição normal padronizada.}
\]
Na implementação, utilizaremos a seguinte notação:
\((t_{i+1}-t_{i} )\rightarrow dt\)
\( n \rightarrow number\_steps \)
\( number\_steps * dt = time\_to\_expiration \)
2 - Precificação de Opções
Como o valor da opção é determinado na data (futura) de seu vencimento, para encontrar o preço na data atual devemos trazer para valor presente o valor esperado da opção. Seguiremos então os seguintes passos:
- Gerar vários caminhos do preço da ação, da data atual até a data de vencimento da opção;
- Calcular, para cada caminho, o valor da opção na data do vencimento, de acordo com o preço final da ação;
- Fazer a média entre todos os valores calculados;
- Trazer a valor presente a média (valor esperado) dos valores calculados;
- Este valor presente é o preço da opção na data atual.
3 - Taxa Livre de Risco
Assumimos que existe uma taxa de juros (com capitalização contínua), dada por \(r\), com a qual é possível tomar emprestado ou investir, sem risco.
Com investidores neutros ao risco, todos os ativos devem ter a mesma taxa média de retorno.
Portanto, com uma medida neutra ao risco, devemos ter \(\mu = r\) nas equações apresentadas e poderemos trazer o preço das opções a valor presente utilizando também a taxa livre de risco \(r\).
Na simulação, consideramos a taxa livre de risco como 14% ao ano, de acordo com a Taxa Selic em vigor.
4 - Implementação
A simulação foi implementada em Python 3.5.1 e disponibilizada em um arquivo do tipo Jupyter Notebook para melhor visualização.
Foram obtidos os preços de fechamento diário de quatro ativos negociados na Bovespa através do Google Finance.
A partir dos preços, calculou-se os retornos diários e a matriz de covariância destes retornos.
Foi necessário definir as características das opções, como o tipo (call ou put), os preços de exercício (strike) e o dia do vencimento, 19 de dezembro de 2016. A data inicial da simulação é o dia 4 de novembro de 2016.


5 - Simulação de Monte Carlo
Para simular o caminho de cada ação, foram gerados valores seguindo uma distribuição normal com média 0 e desvio padrão \(\sigma\) específico de cada ação.
Considerou-se, também, a correlação entre cada ação na geração dos valores. Assim, o caminho do preço das ações estará mais próximo do esperado pelo mercado.
É necessário definir duas variáveis para a simulação: O número de passos em cada simulação, e o número total de simulações:
- O número de passos definido será utilizado para calcular o tamanho do
passo \((t_{i+1}-t_{i} )\), chamado de \(dt\).
- O número total de simulações, ou o número total de caminhos para cada ativo, é decisivo para o cálculo da média dos preços finais. Caso o número seja pequeno, os preços calculados podem não corresponder ao esperado.

6 - Equação de Black-Scholes
Por fim, implementou-se a equação de Black-Scholes para conferir o resultado da simulação.
\[
\text{call: } C = S.N(d1) - Ke^{-rT}.N(d2)
\\
\text{put: } P = Ke^{-rT}.N(-d2) - S.N(-d1)
\\
d1 = \frac{ log(\frac{S}{K}) + (r + \frac{\sigma^2}{2})T}{\sigma\sqrt{T}}
\\
d2 = \frac{ log(\frac{S}{K}) + (r - \frac{\sigma^2}{2})T}{\sigma\sqrt{T}}
\]
Para uma simulação com 100 mil caminhos, os valores calculados foram idênticos. Com um número de caminhos igual a 100, houve preço com diferença de mais de 20%.

7 - Conclusões
Quando assumimos que o preço de um ativo segue um Movimento Browniano Geométrico, podemos utilizar a equação de Black-Scholes para precificar uma opção Européia desse ativo, pois a equação nos fornecerá um valor mais preciso em menos tempo.
A simulação, porém, é imprescindível para modelar diversas outras situações nas quais a equação de Black-Scholes não atende. Alguns exemplos:
- Quando o preço da opção depende da trajetória do preço do ativo, como as opções asiáticas;
- Quando o preço segue um caminho descontínuo, com saltos;
- Quando o desvio padrão do retorno não é constante (\(\sigma = \sigma(t)\)).
Arquivo com a Implementação: Link
Referência: Monte Carlo Methods in Financial Engineering, de Paul Glasserman.