Material para acompanhar esta aula
Baixe a planilha encontrada aqui no Google Planilhas. Usaremos esta planilha para a aula. Baixe ela para CSV, o método mais comum de guardar um banco de dados que pode ser lido por qualquer linguagem (Comma-Separated Values).
Crie um ambiente de desenvolvimento python3 ou utilize ambientes online já prontos como o jupyter lab online e importe o banco de dados.
Statsmodels em Python
Comece baixando os dados para CSV, renomeando-os para "dados-2.csv" para ficar mais fácil de mexer. Vamos usar os pacotes pandas, numpy, statsmodels e matplotlib no python. Abaixo pode ver como importar cada um:

Tempo como índice
Repare que estamos usando decimal="," e thousands="." justamente por nossos dados estarem em português. Agora vamos usar o tempo como índice da nossa tabela de dados. Abaixo está o código para deixar o tempo como índice e também criar uma coluna "Dias". A coluna "Dias" será usada na regressão linear, com ela vamos verificar quando cada ação está crescendo no tempo usando o coeficiente angular.
Ad

Matriz de correlação
Antes de começar as regressões, vamos para uma análise muito importante para quem investe: a matriz de correlação. Essa matriz mostra como cada ação é correlacionada. Caso você queira fazer uma carteira de investimentos no futuro, lembre-se de escolher ações correlacionadas negativamente entre elas, assim diminui o risco da carteira. Abaixo está o código para calcular a matriz de correlação:

A matriz deve ficar assim ao final:

Abaixo está o que foi printado pelo python com relação as correlações. Correlações mais positivas:
Empresa 1 | Empresa 2 | Correlação |
---|---|---|
Bradesco | Tim | 0.957497 |
Tim | Bradesco | 0.957497 |
Domino's pizza | Dias | 0.948813 |
Dias | Domino's pizza | 0.948813 |
Mastercard | Domino's pizza | 0.921368 |
Domino's pizza | Mastercard | 0.921368 |
Santander | American Express Company | 0.888684 |
American Express Company | Santander | 0.888684 |
Tim | Santander | 0.888301 |
Santander | Tim | 0.888301 |
Ad
Correlações mais negativas:
Empresa 1 | Empresa 2 | Correlação |
---|---|---|
Dias | Santander | -0.642465 |
Santander | Dias | -0.642465 |
Ford motors | Braskem | -0.668737 |
Braskem | Ford motors | -0.668737 |
Ford motors | Mastercard | -0.708027 |
Mastercard | Ford motors | -0.708027 |
Domino's pizza | Ford motors | -0.826345 |
Ford motors | Domino's pizza | -0.826345 |
Regressão linear Simples
Vamos agora de fato utilizar o Statsmodels. Abaixo está o código para fazer uma regressão linear simples entre Ouro e número de Dias.

A regressão linear traz diversos resultados, veja a tabela abaixo e tente interpretar cada parâmetro:

Abaixo está nossa previsão e os pontos observados da realidade:
Ad

Não é das melhores regressões né? Vamos olhar para os resíduos também.

Regressão ARIMA
Se nosso amigo Regressão Linear não consegue prever, podemos procurar outros modelos. Vamos então tentar fazer uma regressão ARIMA(1,1,1) entre o valor do Ouro e o Tempo.



Ad
Por mais que a previsão parece boa, não podemos nos esquecer de olhar para os resíduos:

Conjunto treino vs conjunto teste
Por mais que a ARIMA tenha tido um ótimo resultado, é bom verificarmos dividindo nossa amostra em dois conjuntos ao menos: conjunto treino e conjunto teste. Vamos dividir pela metade, treinar nosso modelo com o conjunto treino e verificar se no teste ele também possui bons resultados.


Previsão final:

Ad
Regressão Multivariada
Caso você não queira trabalhar com ARIMA, é possível fazer uma regressão Multivariada escolhendo ações correlacionadas com a sua para fazer previsões. No exemplo abaixo eu uso o preço da Chevron e o número de Dias para prever o preço da Vale do Rio Doce.



Exercícios
Agora faça você:
1) Importe em pandas esse conjunto
Ad
2) Faça a matriz de correlação
3) Escolha uma ação e faça uma regressão linear entre ela e os dias. Não pode ser ouro!
4) Escolha uma ação e faça um ARIMA entre ela e o tempo.
5) Escolha uma ação e treine um ARIMA com metade dos dados e depois teste com a outra metade.
6) Desafio: faça uma regressão multivariada que tenta explicar o valor de uma ação usando o tempo e o valor de outra ação como referência.
— Comentários
0Seja o primeiro a comentar