Calcular Médias Móveis em Python (sem usar Pandas)

Como calcular Médias Móveis em Python

Neste tutorial vamos mostrar como criar um script que permite calcular Médias Móveis em Python, sem o emprego da biblioteca de manipulação e análise de dados Pandas (o que faremos em outro tutorial).

Após calcular as médias móveis para um conjunto de valores (fornecido em uma lista), vamos plotar um gráfico usando a biblioteca Matplotlib para visualização dos resultados obtidos.

As Médias Móveis

As médias móveis são uma ferramenta muito utilizadas por comerciantes, investidores e traders como ferramenta de auxílio na análise de tendências de preços e em análise técnica.

Mas o que é uma média móvel?

Uma média móvel é um indicador que mostra o valor médio do preço de um ativo em um período de tempo determinado (série de dados). Conforme o preço do ativo muda ao longo do tempo, seu preço médio aumenta ou diminui, compondo um movimento de valores médios.

Na prática, existem diversos tipos de médias móveis, sendo as cinco mais comuns as seguintes:

  • Média Móvel Simples (ou Aritmética)
  • Média Móvel Exponencial
  • Média Móvel Triangular
  • Média Móvel Variável
  • Média Móvel Ponderada

Neste tutorial vamos mostrar como criar um script em Python que receba uma série de dados como entrada, e calcule a média móvel simples desse conjunto de valores. As médias móveis simples atribuem peso igual aos valores (preços).

A média móvel mais comum (de longo prazo) leva em consideração um período de 200 dias de dados (39 semanas); para os propósitos deste artigo vamos trabalhar com um conjunto menor de dados, mas o algoritmos pode receber qualquer quantidade de dados como entrada, sem que haja necessidade de alterações no código.

Como calcular a média móvel simples

O cálculo da média móvel simples é exatamente o que se espera de m cálculo de médias: somamos os valores de cada dia, e dividimos o resultado da soma pelo número de dias (média aritmética). O valor é então plotado em um gráfico.

Na sequência, avançamos um dia e somamos o próximo intervalo de valores, calculando a média e plotando no gráfico, e assim sucessivamente, construindo o gráfico das médias móveis.

Por exemplo, para calcular as médias móveis usando intervalos de 50 dias, calculamos a média aritmética dos primeiros 50 dias, avançamos um dia, calculamos a média aritmética dos próximos 50 dias, e assim até atingirmos o intervalo mais recente possível.

Script para determinar médias móveis em Python

Vejamos um exemplo de script que permite calcular as médias móveis para um conjunto de valores fornecido. No caso, vamos passar valores usando uma lista comum em Python, mas os dados podem ser provenientes de qualquer outra fonte, como arquivos .csv, do Excel, de páginas Web, etc.

Vamos usar como intervalo para cálculo das médias o valor de 5 dias (médias de 5 valores), valor armazenado em uma variável que chamaremos de tam_grupo.

"""
Created on Thu Dec 3 12:05:44 2020
@author: Fábio dos Reis
"""
import matplotlib.pyplot as plt

valores = [21.95,21.84,21.9,21.98,21.65,22.11,22.50,22.75,23.21,23.1,23.20,22.78,22.30,23.17,23.24,23.26,23.23,23.13,23.27,23.38,23.42,23.68,23.20,22.84,23.01,23.00,23.11,23.24,23.46,23.27,23.02,22.82,23.31] # cotações diárias

tam_grupo = 5 # deslocamento (uma semana útil)
i = 0
medias_moveis=[]

# Calcular as médias móveis e armazená-las em uma lista:
while i < len(valores) - tam_grupo + 1:
    grupo = valores[i : i + tam_grupo]
    media_grupo = sum(grupo) / tam_grupo
    medias_moveis.append(media_grupo)
    i +=1

# Exibir a lista de médias móveis
for valor in medias_moveis:
    print(round(valor,2))

# Gerar lista com dias do mês
dia_mes = []
for dia in range(1,len(medias_moveis)+1):
    dia_mes.append(dia)

# Visualizar gráfico de médias móveis
plt.style.use('seaborn')
plt.xlabel('Dia')
plt.ylabel('Preço')
plt.title('Médias Móveis')
plt.axis(ymin=21,ymax=24,xmin=0,xmax=30)
plt.plot(dia_mes,medias_moveis,marker='o')
plt.show()

A figura a seguir mostra o gráfico plotado com as médias móveis calculadas a partir dos dados fornecidos na lista de valores:

Médias Móveis em Python

Gráfico de Médias Móveis em Python

Conclusão

Neste tutorial mostramos como criar um script simples em Python para o cálculo de médias móveis simples. Usamos técnicas de programação como listas, laços de repetição while e for, funções como round() e len(), além da biblioteca para plotagem de gráficos matplotlib / pyplot / seaborn.

Nos próximos tutoriais vamos mostrar como calcular ouros tipos de médias móveis em Python, como a média móvel exponencial e a média móvel ponderada, como adicionar uma linha de tendência ao gráfico de médias móveis, e também como determinar e plotar Bandas de Bollinger.

E também vamos mostrar como usar a biblioteca Pandas para realizar esses tipos de cálculos, de forma ainda mais simplificada.

Até!

 

Sobre Fábio dos Reis (1394 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*