Análise Prática de Dados: Conjunto de Preços de Ações da Microsoft

Introdução

A Microsoft, que começou desenvolvendo um interpretador BASIC para o Altair 8800, rapidamente expandiu seu portfólio com o sistema operacional MS-DOS, fundamental para o sucesso do IBM PC. Esse marco foi seguido pelo lançamento do sistema operacional Windows, que se tornou uma plataforma dominante na computação pessoal e corporativa. Ao longo dos anos, a Microsoft diversificou sua atuação, incluindo produtos de software como o Microsoft Office, serviços de nuvem com o Azure, dispositivos como o Surface e o console Xbox, além de envestimentos significativos em inteligência artificial e outras tecnologias de ponta. Com sede em Redmond, Washington, a empresa continua sendo uma líder em inovação e soluções tecnológicas.

O conjunto de dados analisado oferece um registro abrangente das variações no preço das ações da Microsoft nos últimos 38 anos. Ele inclui colunas essenciais como: Data, Preço de Abertura, Máxima do Dia, Mínima do Dia, Preço de Fechamento, Preço de Fechamento Ajustado e Volume de Negociações.

Esses dados são valiosos para realizar análises históricas, prever o desempenho futuro das ações e copmreender as tendências de mercado de longo prazo relacionadas às ações da Microsoft.

Sumário das Visualizações

  • Visualização do Preço das Ações: Mostra a tendência histórica dos preços, permitindo analisar movimentos e padrões de valor.
  • Visualização do Volume: Representa o volume de negociações ao longo do tempo, fornecendo insights sobre atividade de mercado e liquidez.
  • Visualização do Valor de Mercado: Exibe a capitalização de mercado ao longo do tempo, indicando o valor total da empresa e sua evolução.
  • Visualização da Volatilidade: Ilustra o nível de flutuação dos preços, ajudando a avaliar a magnitude e a frequência das variações.
  • Visualização do Retorno Acumulado: Demonstra o ganho acumulado do investimento ao longo do tempo.
  • Visualização do Retorno Mensal: Exibe a média dos retornos mensais, permitindo observar tendências ou padrões sazonais.
  • Visualização do Retorno Anual: Mostra a média dos retornos anuais, facilitando a avaliação do desempenho e a identificação de tendências de longo prazo.
  • Visualização por Dia da Semana: Apresenta o retorno médio segregado por dia da semana, ajudando a analisar o desempenho em dias específicos.
  • Médias Móveis (10, 20, 50 e 100): Plota as médias móveis dos preços em diferentes períodos, suavizando os dados e identificando tendências e possíveis níveis de suporte/resistência.
  • Variação Diária do Preço: Mostra a mudança percentual diária do preço de fechamento.

Gráfico de Linhas do Preço de Fechamento

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(20, 8))
ax.plot(dados['Date'], dados['Close'], color='green')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Data', fontsize=14)
ax.set_ylabel('Preço em USD', fontsize=14)
plt.title('Preço das Ações da Microsoft', fontsize=18)
plt.grid(True)
plt.show()

# Gráfico de barras
fig2, ax = plt.subplots(figsize=(20, 8))
ax.bar(dados['Date'], dados['Close'], color='green')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Data', fontsize=14)
ax.set_ylabel('Preço em USD', fontsize=14)
plt.title('Preço das Ações da Microsoft', fontsize=18)
plt.grid(True)
plt.show()

Volume de Negociações

fig, ax = plt.subplots(figsize=(20, 8))
ax.plot(dados['Date'], dados['Volume'])
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Data', fontsize=14)
ax.set_ylabel('Volume', fontsize=14)
plt.title('Tendência do Volume da Microsoft', fontsize=18)
plt.grid(True)
plt.show()

# Gráfico de barras
fig2, ax = plt.subplots(figsize=(20, 8))
ax.bar(dados['Date'], dados['Volume'])
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Data', fontsize=16)
ax.set_ylabel('Volume', fontsize=16)
plt.title('Tendência do Volume da Microsoft', fontsize=18)
plt.grid(True)
plt.show()

Cálculo do Valor de Mercado

dados['Market Cap'] = dados['Open'] * dados['Volume']

fig, ax = plt.subplots(figsize=(20, 8))
ax.plot(dados['Date'], dados['Market Cap'], color='black')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Data', fontsize=14)
ax.set_ylabel('Valor de Mercado', fontsize=14)
plt.title('Valor de Mercado', fontsize=18)
plt.grid(True)
plt.show()

fig2, ax = plt.subplots(figsize=(20, 8))
ax.bar(dados['Date'], dados['Market Cap'], color='orange')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Data', fontsize=14)
ax.set_ylabel('Valor de Mercado', fontsize=14)
plt.title('Valor de Mercado', fontsize=18)
plt.grid(True)
plt.show()

Volatilidade Diária

dados['vol'] = (dados['Close'] / dados['Close'].shift(1)) - 1

fig, ax = plt.subplots(figsize=(20, 8))
ax.plot(dados['Date'], dados['vol'], color='purple')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
plt.title('Volatilidade', fontsize=14)
plt.grid(True)
plt.show()

fig1, ax = plt.subplots(figsize=(20, 8))
ax.bar(dados['Date'], dados['vol'], color='purple')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
plt.title('Volatilidade', fontsize=14)
plt.grid(True)
plt.show()

Histograma da Volatilidade

plt.figure(figsize=(10, 6))
dados['vol'].hist(bins=1000, color='blue')
plt.title('Distribuição da Volatilidade', fontsize=14)
plt.xlabel('Volatilidade')
plt.ylabel('Frequência')
plt.show()

Retorno Acumulado

dados['Cumulative Return'] = (1 + dados['vol']).cumprod()
fig, ax = plt.subplots(figsize=(20, 8))
ax.bar(dados['Date'], dados['Cumulative Return'], color='Brown')
ax.xaxis.set_major_locator(plt.MaxNLocator(15))
ax.set_xlabel('Data', fontsize=14)
ax.set_ylabel('Retorno Acumulado', fontsize=14)
plt.title('Retorno Acumulado', fontsize=14)
plt.grid(True)
plt.show()

Retorno Diário e Aálise Mensal

dados['Return'] = dados['Close'].pct_change()
dados['Month'] = dados['Date'].dt.month_name()
dados['Year'] = dados['Date'].dt.year
retornos_mensais = dados.groupby(['Month', 'Year'])['Return'].mean().reset_index()
ordem_meses = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
retornos_mensais['Month'] = pd.Categorical(retornos_mensais['Month'], categories=ordem_meses, ordered=True)
retornos_mensais = retornos_mensais.sort_values('Month')
plt.figure(figsize=(12, 6))
sns.barplot(data=retornos_mensais, x='Month', y='Return')
plt.title('Média dos Retornos Mensais')
plt.xlabel('Mês')
plt.ylabel('Retorno')
plt.show()

Análise Anual

dados['Year'] = dados['Date'].dt.year
retornos_anuais = dados.groupby(['Year'])['Return'].mean().reset_index()
retornos_anuais = retornos_anuais.sort_values('Year')
plt.figure(figsize=(12, 6))
sns.barplot(data=retornos_anuais, x='Year', y='Return')
plt.title('Média dos Retornos Anuais')
plt.xlabel('Ano')
plt.ylabel('Retorno')
plt.show()

Análise de Dados

Médias Móveis

dados['MA for 10 days'] = dados['Open'].rolling(10).mean()
dados['MA for 20 days'] = dados['Open'].rolling(20).mean()
dados['MA for 50 days'] = dados['Open'].rolling(50).mean()
dados['MA for 100 days'] = dados['Open'].rolling(100).mean()
dados_reduzidos = dados.truncate()
dados_reduzidos[['Adj Close', 'MA for 10 days', 'MA for 20 days', 'MA for 50 days', 'MA for 100 days']].plot(subplots=False, figsize=(12, 5))
plt.title('Ações Microsoft: Preço Ajustado e Médias Móveis')
plt.xlabel('Data')
plt.ylabel('Preço')
plt.show()

Bandas de Bollinger

media_moveis = dados['Close'].rolling(window=20).mean()
desvio_padrao = dados['Close'].rolling(window=20).std()
banda_superior = media_moveis + (desvio_padrao * 2)
banda_inferior = media_moveis - (desvio_padrao * 2)
fig, ax = plt.subplots(figsize=(10,6))
ax.plot(dados.index, dados['Close'], label='Fechamento')
ax.plot(media_moveis.index, media_moveis, label='Média Móvel')
ax.fill_between(media_moveis.index, banda_superior, banda_inferior, alpha=0.4, color='gray', label='Bandas de Bollinger')
ax.legend()
plt.show()

Variação Diária do Preço

plt.figure(figsize=(12, 6))
plt.plot(dados['Date'], dados['Return'], marker='h', color='g')
plt.title('Variação Diária do Preço da Microsoft')
plt.show()

Previsão de Preços

!pip install Prophet

dados_prophet = dados.reset_index()
dados_prophet = dados[['Date', 'Close']]
dados_prophet = dados_prophet.rename(columns={'Date': 'ds', 'Close': 'y'})
from prophet import Prophet
modelo = Prophet()
modelo.fit(dados_prophet)
futuro = modelo.make_future_dataframe(periods=365)
previsao = modelo.predict(futuro)

Visualização da Previsão

fig1 = modelo.plot(previsao)
plt.title('Previsão de Preço com Prophet')
plt.xlabel('Data')
plt.ylabel('Preço MSFT (USD)')
plt.show()

Tags: Microsoft Python Prophet Análise de Séries Temporais Visualização de Dados

Publicado em 7-8 01:36