O pacote quantmod é um pacote projetado para ajudar na análise quantitativa, desenvolvimento de testes e implantação de modelos de negócios com base estatística.
Após instalar o pacote, podemos fazer o download dos dados dos ativos PETR4.SA e PETR3.SA por meio do seguinte código:
#Habilita o pacote quantmod library(quantmod) #Cria um novo ambiente para armazenar os dados stockData <- new.env() #Especifica as datas de interesse startDate = as.Date("2010-01-01") endDate = as.Date("2011-12-31")
#Obtêm os dados do ativo PETR4 e PETR3 ativos<-c("PETR4.SA","PETR3.SA") getSymbols(ativos, src="yahoo",from=startDate,to=endDate)No comando acima, os dados dos ativos PETR4.SA e PETR3.SA são obtidos para as datas 01/01/2010 até 31/12/2011. A fonte desses dados é o Yahoo Finance. É possível, utilizar outras fontes como o Google Finance nesse caso basta trocar a opção src="yahoo" pela opção src="google".
#Usa o comando head para mostrar as seis primeiras observações head(PETR4.SA) #Plota a série temporal dos preços de fechamento plot.xts(PETR4.SA$PETR4.SA.Close,major.format="%b/%d/%Y", +main="PETR4.SA.",ylab="Close price.",xlab="Time")O comando acima produz o seguinte gráfico: Usualmente, trabalha-se com a série diferenciada, ou seja, utiliza-se o log-retorno na forma: $\begin{array}{ll} r_{t}=&log\left(\frac{P_{t}}{P_{t-1}}\right)\end{array}$ onde $P_{t}$ é o preço do ativo no tempo $t$ e $log(.)$ é o logarítimo natural. O comado em R é escrito da seguinte forma:
#Calcula o log-retorno. diffPETR4.SA<-diff(log(PETR4.SA)) #Plota a série temporal dos preços de fechamento plot.xts(diffPETR4.SA$PETR4.SA.Close,major.format="%b/%d/%Y", +main="PETR4.SA.",ylab="Log-return Close price.",xlab="Time")Resultando no seguinte gráfico: Pode-se trabalhar inclusive com um subconjunto de dados para uma determinada janela:
#Examinando apenas um mês de dados. petrSubset<- window(diffPETR4.SA, +start = as.Date("2011-05-01"), end = as.Date("2011-05-31")) #Imprime os dados petrSubset
olá, vc sabe dizer se a versão 3.3.2 do R suporta a Quantmod library? não estou conseguindo. muito obrigado
ResponderExcluir