No post de hoje vamos dar continuidade ao nosso aprendizado de indicadores. O OBV, ou On Balance Volume, é um indicador simples proveniente da análise técnica que tem como função relacionar o preço de um determinado ativo com o seu volume.
Esse indicador é bastante usado por traders que tem como objetivo seguir os passos dos grandes investidores. Se você está começando a entender e montar suas estratégias ou simplesmente quer aprender mais sobre esse indicador, você está no lugar certo!
Entendendo o indicador OBV
Você já deve ter ouvido expressões como: um ativo subiu sem volume ou caiu com volume. Como se aproveitar dessas situações para buscar divergências entre o volume e o preço de um ativo? É aí que entra o OBV.
O OBV pode ser entendido como um saldo do volume. Dessa forma, toda vez que um ativo se valoriza, adicionamos o volume negociado naquele período. Analogamente, se o ativo se desvalorizar, subtraímos o volume.
Em outras palavras, um aumento do OBV indica que há mais dinheiro no ativo, enquanto uma diminuição do OBV sugere que há menos dinheiro no ativo.
Onde Vi é o volume financeiro no ponto i, Pi é o preço de fechamento no mesmo ponto e Pi−1 é o preço de fechamento anterior.
É importante notar pela fórmula acima que o OBV é cumulativo. Ou seja, o valor numérico do indicador é fortemente dependente da escolha do ponto de partida da análise.
A seguir, vamos entender como podemos identificar divergências entre preço e OBV.
Mãos à obra: importando as bilibiotecas
O primeiro passo é sempre importar as bibliotecas de interesse. Caso ainda tenha dúvidas sobre essa etapa, informações mais detalhadas podem ser vistas no primeiro post dessa série.
# %%capture means we suppress the output
%%capture
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
!pip install yfinance
import yfinance as yf
Baixando dados para análise
O indicador OBV aplica-se em cima de um determinado ativo. Nesse exemplo, escolhemos a Petrobras para mostrarmos o conceito na prática. Contudo, você pode facilmente alterar o código e utilizar qualquer outro papel.
Como dito anteriormente, o OBV é dependente do intervalo de tempo de estudo. Nesse exemplo, vamos analisar o período entre o final de 2020 e o início de 2021.
stock['Variation'] = stock['Adj Close'].diff()
stock = stock[1:] # remove first row once it does not have a variation
stock.head()
Adj Close
Volume
Variation
Date
2020-12-15
27.850000
47208200
0.230000
2020-12-16
28.190001
59399200
0.340000
2020-12-17
28.240000
39297700
0.049999
2020-12-18
28.250000
27351400
0.010000
2020-12-21
27.020000
99988800
-1.230000
Estamos interessados apenas no sinal da variação:
Se o valor for positivo, iremos somar o volume desse dia ao OBV;
Se for negativo, iremos subtrair o volume desse dia do OBV.
Quando esse valor for 0, não precisamos fazer nada. Simples, não?
Para facilitar o uso do dataframe, vamos criar uma coluna OBV Change onde alocaremos +stock["Volume"] se Variation for > 0, -stock["Volume"] se < 0 e 0 se Variation for = 0.
Finalmente, só precisamos realizar uma soma acumulada dessa coluna para obtermos o OBV da Petrobras no período de tempo escolhido.
Com o valor do OBV calculado, podemos plotar um gráfico comparando o fechamento do ativo com o indicador. Além disso, traçaremos uma linha horizontal a partir do primeiro pregão de 2021 (04/01), onde observamos uma aceleração mais aguda dos preços.
# Plot the value alongside the stock price
fig, (ax1, ax2) = plt.subplots(
nrows=2,
sharex=True,
figsize=(12,8),
gridspec_kw={'height_ratios': [3, 1]})
# Get index of value where we are going to plot a horizontal line
index = stock.index.get_loc("2021-01-04")
# Plot price data
ax1.plot(stock.index, stock['Adj Close'], label='Fechamento PETR4')
ax1.legend()
ax1.axhline(y=stock["Adj Close"][index], color='red', linestyle='--')
# Plot OBV
ax2.plot(stock.index, stock['OBV'], label='OBV', color="#033660")
ax2.axhline(y=stock["OBV"][index], color='red', linestyle='--')
ax2.legend()
<matplotlib.legend.Legend at 0x7fbddad60410>
Analisando o resultado
Esse exemplo foi escolhido propositalmente para podermos entender melhor o funcionamento do indicador. Lembre-se que a idéia principal do OBV é buscar divergências entre ele e o preço do ativo. O valor do ativo no início de 2021 estava em torno de R$ 29 com um OBV abaixo de 4e8, ou quatrocentos milhões (o valor exato não é importante).
Nessa data, o ativo iniciou uma pernada de alta juntamente com um forte aumento do volume. Contudo, o papel começou a perder força por volta do dia 10/01 e rapidamente se desvalorizou até abaixo de R$ 29.
Um trader sem conhecimento do OBV, poderia ter ficado preocupado. Porém, como o OBV nos mostra nesse caso, embora o papel tenha recuado e voltado para o valor do final de 2020, o seu OBV está mais alto (acima de 4e8). Isso mostra que há mais dinheiro no papel do que antes, sugerindo que a movimentação é apenas um descanso para voltar a subir.
Para concluir, lembre-se: não existe fórmula mágica. Nunca se apegue a apenas uma estratégia. Quanto mais estratégias você aprender e testar, mais chances você terá de entender qual é a que pode funcionar melhor com o seu ativo de interesse.