SAUDAÇÕES!

Seja bem vindo à página do professor Pedro Albuquerque. Para saber mais sobre meu currículo, disciplinas ministradas e interesses de pesquisa, navegue no menu disponível no topo da página.
Mostrando postagens com marcador Análise quantitativa. Mostrar todas as postagens
Mostrando postagens com marcador Análise quantitativa. Mostrar todas as postagens

quinta-feira, 23 de agosto de 2012

Pacote quantmod - Análise quantitativa de séries financeiras.


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