Material para acompanhar esta aulaBaixe 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 PythonComece 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:Importação dos pacotes em pythonTempo como índiceRepare 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.Transformação para usar o tempo como índiceMatriz de correlaçãoAntes 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:Cálculo das correlaçõesA matriz deve ficar assim ao final:Matriz de correlação entre as açõesAbaixo está o que foi printado pelo python com relação as correlações. Correlações mais positivas:Empresa 1Empresa 2CorrelaçãoBradescoTim0.957497TimBradesco0.957497Domino's pizzaDias0.948813DiasDomino's pizza0.948813MastercardDomino's pizza0.921368Domino's pizzaMastercard0.921368SantanderAmerican Express Company0.888684American Express CompanySantander0.888684TimSantander0.888301SantanderTim0.888301Correlações mais negativas:Empresa 1Empresa 2CorrelaçãoDiasSantander-0.642465SantanderDias-0.642465Ford motorsBraskem-0.668737BraskemFord motors-0.668737Ford motorsMastercard-0.708027MastercardFord motors-0.708027Domino's pizzaFord motors-0.826345Ford motorsDomino's pizza-0.826345Regressão linear SimplesVamos 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.Regressão linear no StatsmodelsA regressão linear traz diversos resultados, veja a tabela abaixo e tente interpretar cada parâmetro:OLS resultadosAbaixo está nossa previsão e os pontos observados da realidade:Previsão vs observadoNão é das melhores regressões né? Vamos olhar para os resíduos também.Os resíduos se mostram com uma tendência e não simétricosRegressão ARIMASe 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.Código python para ARIMAResultado da ARIMAPrevisto vs Observado com ARIMAPor mais que a previsão parece boa, não podemos nos esquecer de olhar para os resíduos:Resíduos da ARIMAConjunto treino vs conjunto testePor 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.Criando o conjunto teste e treino e fazendo nova regressãoResultados da ARIMA de treinoPrevisão final:Teste, Treino e valores observadosRegressão MultivariadaCaso 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.Código python para multivariadaResultado da Regressão MultivariadaPrevisto e observados pela Regressão MultivariadaExercíciosAgora faça você:1) Importe em pandas esse conjunto2) Faça a matriz de correlação3) 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 0
, Reações 1
Seja o primeiro a comentar