Média móvel para dados do mercado financeiro
Quem não adora obter insights do mundo das finanças com Python? Neste post, exploraremos um tópico fascinante: calcular médias móveis para dados de ações usando a poderosa biblioteca yfinance com Python.
O que são médias móveis?
Uma média móvel é uma técnica estatística usada para suavizar as flutuações de preços de curto prazo nos mercados financeiros. Ele ajuda investidores e analistas a identificar tendências de longo prazo e tomar decisões informadas sobre a compra ou venda de ações. Existem vários tipos de médias móveis, mas vamos nos concentrar nas mais comuns: Média Móvel Simples (SMA) e Média Móvel Exponencial (EMA).
yfinance para buscar dados de ações
Para calcular as médias móveis, primeiro precisamos importar alguns pacotes. Além da biblioteca yfinance, usaremos Matplotlib para visualizações.
import yfinance as yf
import matplotlib.pyplot as plt
Em seguida, precisamos buscar dados de ações usando yfinance. Essa biblioteca nos permite recuperar facilmente dados históricos de mercado para ações listadas nas principais bolsas dos EUA. Usaremos o objeto Ticker de yfinance para buscar dados para uma ação específica. No código abaixo, buscaremos os dados da Microsoft:
data_inicio = "2010-03-10" # defini data para inicar busca
data_fim = "2025-03-10" # denifi data para terminar busca
ticker = yf.Ticker("MSFT") # define ticker da microsoft
# Busca dados
dados = ticker.history(interval='1d', start=data_inicio, end=data_fim) # busca realizada com intervalos de 1 dia
print(dados.head()) # imprime alguns dados
Alguns dos dados obtidos:
# Dados
Open High Low Close Volume Dividends Stock Splits
Date
2010-03-10 00:00:00-05:00 21.785148 21.973862 21.739856 21.868181 44891400 0.0 0.0
2010-03-11 00:00:00-05:00 21.807788 22.034246 21.777595 22.026697 35349700 0.0 0.0
2010-03-12 00:00:00-05:00 22.132383 22.177674 21.921024 22.094641 31700200 0.0 0.0
2010-03-15 00:00:00-04:00 22.026701 22.170124 21.898375 22.109735 37512000 0.0 0.0
2010-03-16 00:00:00-04:00 22.207862 22.260702 22.041795 22.170120 36723500 0.0 0.0
(trader_env) gabi@gabi-desktop:~/Desktop/simulanas_scripts/traderbot$
Calculando a Média Móvel Simples (SMA)
Agora que temos os dados das ações, vamos calcular a Média Móvel Simples. Usaremos um tamanho de janela de 50 dias para suavizar as flutuações de curto prazo.
# seleciona os dados de encerramento da bolsa para cada dia
preco_fechamento = dados['Close']
# Calcula a média móvel
mav_50 = preco_fechamento.rolling(window=50).mean()
Calculando a Média Móvel Exponencial (EMA)
Em seguida, calcularemos a média móvel exponencial. Esse método atribui mais peso às mudanças recentes de preços, tornando-o uma escolha popular entre os analistas técnicos. Também usaremos uma janela de 50 dias para esse cálculo.
janela = 50
alpha = 2 / (janela + 1)
ema_50 = preco_fechamento.ewm(alpha=alpha, adjust=False).mean()
Visualizando Médias Móveis
Para nos ajudar a entender a eficácia das médias móveis, vamos visualizar o preço das ações e as SMAs e EMAs obtidas.
plt.figure(figsize=(12, 6))
plt.plot(dados['Close'], color='red', linewidth=2, label='Dados de fechamento')
plt.plot(mav_50, color='springgreen', linewidth=2, label='SMA (50 dias)')
plt.plot(ema_50, color='lightskyblue', linewidth=2, label='EMA (50 dias)')
plt.xlabel('Datas')
plt.ylabel('Preços ($)')
plt.title('Preço das ações da MSFT com médias móveis')
plt.legend()
plt.show()
E aqui está a figura final.

Conclusão
Neste post, exploramos como calcular médias móveis para dados de ações usando yfinance com Python. Ao usar essas técnicas, investidores e analistas podem obter informações valiosas sobre as tendências do mercado de ações e tomar decisões mais informadas sobre a compra ou venda de títulos.