Mercado de ações com Python

Qualquer um com interesse em Python e Inteligência Artificial (IA) adora saber como a tecnologia pode ser aplicada em diversas áreas. E um dos campos onde seu uso se destaca é certamente o mercado de ações. Entender e analisar dados financeiros são atividades essenciais para investidores, analistas e pesquisadores. Um aspecto crucial desse processo é visualizar os dados do mercado de ações de maneira significativa.
Neste post, exploraremos a interação entre finanças e visualização de dados usando Matplotlib e Seaborn para criar gráficos a partir de informações do mercado de ações. Essas bibliotecas são ferramentas essenciais para programadores Python que desejam se aprofundar em análises financeiras com facilidade.
O que é visualização de dados?
A visualização de dados refere-se à representação de dados em um formato visualmente atraente e facilmente compreensível, como tabelas ou gráficos. Ela ajuda a identificar padrões, anomalias e discrepâncias que podem estar ocultas em grandes conjuntos de dados. Especificamente para dados do mercado de ações, a visualização pode ajudar a identificar tendências, padrões e correlações que podem não ser imediatamente aparentes.
Matplotlib
Matplotlib é uma das bibliotecas de visualização de dados mais populares em Python devido à sua versatilidade e interface amigável. Ela pode ser usada para criar visualizações estáticas, animadas e interativas. Matplotlib possui um extenso conjunto de ferramentas e opções de personalização e é uma escolha ideal tanto para iniciantes quanto para usuários avançados. Além de permitir uma ampla gama de personalização, o Matplotlib pode ser usado para criar visualizações interativas com plugins como Plotly ou Bokeh. Outra grande vantagem do Matplotlib é a sua integração perfeita com outras bibliotecas Python como Numpy e SciPy.

Seaborn
O Seaborn é construído sobre o Matplotlib e oferece recursos adicionais. Esses recursos incluem mapas de calor, técnicas de clustering, entre outros, que podem fornecer mais informações sobre as tendências do mercado de ações.
O Seaborn possui uma interface de alto nível para criar gráficos estatísticos informativos e altamente atraentes. Muitas de suas ferramentas de visualização são projetadas especificamente para funcionar bem com dados financeiros. Portanto, ele é uma escolha muito apropriada para análise do mercado de ações. Seus são baseados em conceitos estatísticos como linhas de regressão, gráficos de dispersão e mapas de calor.

Visualizando dados do mercado de ações com Python
Para visualizar dados do mercado de ações com Python, precisaremos de uma fonte de dados. Usaremos a biblioteca yfinance para isso. Será preciso instalá-la se você ainda não a possui:
pip install yfinance
Também será preciso instalar o Matplotlib:
python -m pip install -U pip
python -m pip install -U matplotlib
Por fim, instale o Seaborn:
pip install seaborn
Existem várias formas de visualização de dados do mercado de ações que variam de acordo com nossos objetivos. Exploraremos as principais.
Preços diários das ações
O Matplotlib permite a criação de gráficos de linhas de alta qualidade que podem representar os preços das ações ao longo do tempo ou outras métricas financeiras relevantes, conforme necessário.
import matplotlib.pyplot as plt
import yfinance as yf
data_inicio = '2024-08-20'
data_fim = '2025-08-20'
# baixa os dados para Apple e Google
apple = 'AAPL'
google = 'GOOGL'
apple_dados = yf.Ticker(apple).history(interval='1d', start=data_inicio, end=data_fim)
google_dados = yf.Ticker(google).history(interval='1d', start=data_inicio, end=data_fim)
# Plota preços diários das ações
plt.figure(figsize=(10,6))
plt.plot(apple_dados['Close'], color='skyblue', linewidth=2, label='Apple')
plt.plot(google_dados['Close'], color='red', linewidth=2, label='Google')
plt.xlabel('Datas')
plt.ylabel('Preço (USD)')
plt.title('Preços diários das ações')
plt.legend()
plt.show()
O código mostrado acima gera o gráfico de linhas abaixo. Ele fornece uma representação visual de como os preços das ações da Apple e do Google flutuaram no ano passado. O código é bem direto: apenas baixamos os dados com yfinance com resolução de um dia e plotamos o gráfico de linhas mostrado os dados das duas empresas. Este tipo de visualização ajuda investidores a identificar padrões que podem afetar movimentos futuros de preços ou possíveis oportunidades de compra/venda.

volume de negociações
Uma variação do gráfico de linhas mostrado acima pode ser feita para mostrar o volume de negociações das ações das empresas selecionadas para o mesmo período. Veja o código abaixo para gerar os gráficos com os dados baixados no trecho anterior. Basta trocar as variáveis plotadas para exibir o volume de negociações das ações.
plt.figure(figsize=(10,6))
plt.plot(apple_dados.index, apple_dados['Volume'], color='blue', label='Apple')
plt.plot(google_dados.index, google_dados['Volume'], color='red', label='Google')
plt.title(f"Volume diário de negociação para Apple e Google (último 1 ano)")
plt.xlabel("Data")
plt.ylabel("Volume")
plt.grid(True)
plt.tight_layout()
plt.legend()
plt.show()
Abaixo mostramos a figura obtida com o código acima.

Histograma para visualizar as tendências de volume ao longo do tempo
Outra visualização importante também mostra os volumes diários de negociação de uma ação (por exemplo, Apple e Google). Mas, nesse exemplo, usamos o Matplotlib para plotar um histograma mostrando a distribuição de frequência do volume de negociação por um período (1 ano no nosso exemplo, com granularidade de 1d binada em intervalos de 30 dias). Novamente, continuamos usando os dados já baixados. O código abaixo mostra como plotar os gráficos usando os dados de volumes diários de negociação, mas organizados em um histograma com bins de 30 dias.
plt.figure(figsize=(8,10))
plt.subplot(2,1,1)
plt.hist(apple_dados['Volume'], bins=30, color='skyblue', edgecolor='black', label='Apple')
plt.title(f"Distribuição de frequência do volume diário de negociação para Apple (Último 1 ano)")
plt.xlabel("Volume diário de negociação")
plt.ylabel("Frequência (Número de dias)")
plt.grid(axis='y')
plt.tight_layout()
plt.subplot(2,1,2)
plt.hist(google_dados['Volume'], bins=30, color='red', edgecolor='black', label='Apple')
plt.title(f"Distribuição de frequência do volume diário de negociação para Google (Último 1 ano)")
plt.xlabel("Volume diário de negociação")
plt.ylabel("Frequência (Número de dias)")
plt.grid(axis='y')
plt.tight_layout()
plt.show()
As figuras resultantes são mostradas abaixo. Elas mostram quando diferentes faixas de volume ocorreram, tornando picos, clusters e outliers fáceis de detectar. Você pode ajustar o tamanho dos bins para mais ou menos agrupamentos conforme as suas necessidades.

mapa de calor para comparação visual
Para terminar, usaremos Seaborn para plotar um mapa de calor comparando ações de duas empresas. Neste exemplo, comparamos duas gigantes: Nvidia e Intel. Além do Seaborn, yfinance e Matplotlib, precisaremos do Pandas:
pip install pandas
No código abaixo, primeiro baixamos os dados de uma maneira similar à realizada anteriormente. Em seguida, usamos o Pandas para remover nan e calcular os retornos diários. O passo seguinte envolve calcular uma matriz de correlação e plotar os dados.
import yfinance as yf
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Baixa dados Nvidia e Intel
tickers = ['INTC', 'NVDA']
data_inicio = '2024-08-20'
data_fim = '2025-08-20'
dados = yf.download(
tickers=tickers,
start=data_inicio,
end=data_fim,
interval="1d",
auto_adjust=True,
progress=False
)
# Calcula os retornos diários
retorno = dados.pct_change().dropna()
# Calcula a matriz de correlação
corr_matrix = retorno.corr()
# Plota mapa de calor
plt.figure(figsize=(10, 6))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title("Mapa de calor de correlação: retornos diários da Nvidia vs. Intel")
plt.tight_layout()
plt.show()
O resultado obtido é mostrado abaixo.

O mapa de calor acima mostra uma comparação visual dos preços das ações da Nvidia e da Intel no ano passado, lado a lado, permitindo que você veja o quão próximos eles se movem em relação às tendências do mercado ou eventos econômicos que podem afetar seus respectivos desempenhos. Esse tipo de análise pode ajudar os investidores a tomar decisões sobre qual empresa pode oferecer melhor estabilidade de longo prazo para diversificar portfólios com base nos padrões históricos de desempenho.
Conclusão
Visualizar dados do mercado de ações com Python é uma habilidade essencial para quem quer entender os dados financeiros. Ao aproveitar as poderosas bibliotecas de Matplotlib e Seaborn, você pode criar facilmente visualizações informativas e envolventes que revelam insights sobre tendências e padrões do mercado.