Python para mercados

Um primeiro exemplo: retornos e uma média móvel

4 min

Duas das transformações mais comuns de todo o trabalho quant são retornos e uma média móvel. Aqui está um exemplo compacto e correto sobre um DataFrame OHLCV limpo.

Calculando retornos

Um retorno simples (percentual) é o fechamento de hoje dividido pelo de ontem, menos um. Retornos logarítmicos costumam ser preferidos porque somam de forma limpa ao longo do tempo.

import numpy as np

df["ret"] = df["close"].pct_change()
df["log_ret"] = np.log(df["close"]).diff()

A primeira linha de cada um é NaN — não há fechamento anterior para comparar. Sempre descarte ou trate essa primeira linha antes de somar ou modelar.

Uma média móvel simples

Uma média móvel suaviza o preço para revelar a tendência. O método rolling torna isso trivial:

df["sma_20"] = df["close"].rolling(window=20).mean()
df["sma_50"] = df["close"].rolling(window=50).mean()

Os primeiros 19 valores de sma_20 são NaN porque a janela ainda não está cheia — isso é o comportamento correto, não um bug.

Por que isso importa para o resto da trilha

Essas duas linhas já contêm uma ideia de trading: quando sma_20 cruza acima de sma_50, o momentum está virando para cima. Vamos transformar exatamente isso em um backtest no próximo capítulo.

Um aviso embutido cedo

Note que rolling e pct_change só olham para trás. No momento em que um cálculo usa um valor futuro — mesmo por acidente — seu backtest vira ficção. Tornamos essa armadilha explícita a seguir.

Terminou de ler?
Aviso de risco

Este conteúdo tem finalidade exclusivamente educacional e informativa e não constitui recomendação de investimento, consultoria financeira, tributária ou jurídica. Operar e investir envolvem risco, incluindo a possível perda de capital. Qualquer desempenho exibido por ferramentas de terceiros é hipotético e não promessa de resultado futuro. Faça sua própria análise e considere orientação profissional antes de qualquer decisão.