Método Monte Carlo com o Python

Métodos de Monte Carlo são algoritmos computacionais que se baseiam em amostras aleatórias de uma distribuição para obter resultados numéricos . No post de hoje vamos criar essa distribuição com base em dois parâmetros: média e desvio padrão dos retornos, de forma a obter o preço esperado de um ativo usando o Python.

# Importa as bibliotecas
import pandas as pd
import math
import numpy as np
import pandas_datareader.data as pdr
from matplotlib import pyplot as plt
!pip install yfinance --upgrade --no-cache-dir
import yfinance as yf
yf.pdr_override()

# Ativos
symbols = ['ITUB4.SA']
# Importa os preços
preco = pdr.get_data_yahoo(symbols)['Adj Close']
# Obtém o número de observações do tempo
tempo = (preco.index[-1] - preco.index[0]).days
# Média dos retornos
media_retorno = preco.pct_change().mean()
# Desvio padrão dos retornos
desvio_retorno = preco.pct_change().std()
# A partir dos inputs, iremos gerar os valores aleatórios da simulação
print ("Retorno esperado : ", str(round(media_retorno, 4)))
print ("Desvio padrão : ", str(round(desvio_retorno, 4)))



# Gera valores aleatório para 1 ano em dias úteis (252 dias) assumindo distribuição normal
retorno_diario_sim = np.random.normal(media_retorno, desvio_retorno, 252) + 1
# A partir do valores aleatórios futuros dos retornos, aplicamos no último valor do preço da ação
price_series = [preco[-1]]
for j in retorno_diario_sim:
    price_series.append(price_series[-1] * j)




plt.plot(price_series)



plt.figure(figsize = (15, 7))
# Cria várias simulações
numero_processos = 3000
precos_fechamento = []
for i in range(numero_processos):
    retorno_diario = np.random.normal(media_retorno, desvio_retorno, 252) + 1
    serie_precos = [preco[-1]]
    for j in retorno_diario:
        serie_precos.append(serie_precos[-1] * j)

    # anexa o último valor do preço
    precos_fechamento.append(serie_precos[-1])
    # plota
    plt.plot(serie_precos)
plt.show()
plt.figure(figsize = (15, 7))
# plota histograma
plt.hist(precos_fechamento,bins=40)



# Analisa o resultado médio de todos os preços simulados
media_final = round(np.mean(precos_fechamento),2)
print("Preço Esperado: ", str(media_final))

______________________________________

Quer saber mais?

Veja nosso curso de Python para Investimentos.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como coletar dados do Eurostat usando a API com o Python?

Neste artigo mostramos como pesquisar e como coletar os dados do portal Eurostat através do sistema de API usando a linguagem Python. Este processo permite automatizar rotinas de extração de dados, eliminando trabalho manual e repetitivo de atualização de bases de dados econômicos.

Estimando a volatilidade da taxa de câmbio

O que é Volatilidade? Como podemos calcular essa métrica? Este artigo apresenta uma breve introdução à volatilidade, descreve como podemos calcular a volatilidade utilizando Modelos de Volatilidade Condicional e demonstra a aplicação prática dessa abordagem para estimar a volatilidade da taxa de câmbio BRL/USD por meio da linguagem de programação Python.

Como analisar o Núcleo de Inflação no Brasil usando Python?

O Python se destaca como uma ferramenta robusta para análise de dados, permitindo a aplicação de uma ampla gama de técnicas em dados econômico-financeiros. Neste exercício, destacamos como a linguagem oferece uma facilidade muito grande na coleta de dados dos núcleos do IPCA diretamente do site do Banco Central, na manipulação eficiente desses dados e na construção de gráficos que facilitam a compreensão dos indicadores.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.