Uncategorized

Nomes bombásticos…

Sempre acho isso: nomes bombásticos para artigos só quando realmente você tem alguma coisa surpreendente. Eu também li o artigo e fiquei com a impressão de que os autores não fizeram a revisão da literatura completa.

Anúncios
Uncategorized

Momento R do Dia – A volta de Lady Gaga e a Wikipedia…agora exclusivamente em R!

A Econometria da Lady Gaga na Wikipedia é um arquivo em formato pdf gerado completamente no RStudio, por meio da linguagem R Markdown (*). Eu poderia ter salvado o arquivo em formato html, mas queria deixar o documento em um formato que muitos acham mais confortável.

Trata-se de uma nota de aula sobre séries de tempo que seria um complemento para uma aula teórica de Cointegração (pelo método simples, ou seja, de Engle-Granger) e com causalidade de Granger.

Por que eu fiz esta nota? Porque queria mostrar ao leitor que não é preciso usar nada além do próprio R para gerar relatórios de pesquisa, notas de aula, slides (sim, eu poderia ter gerado slides!) ou um documento de Word com toda a minha pesquisa. Em outras palavras, até um artigo poderia ser totalmente gerado dentro do R.

Digamos que você usou o Gretl ou o Stata para alguns itens. Não tem problema. Os resultados poderiam ser importados para dentro do R e utilizados no relatório. O mesmo vale para imagens ou vídeos.

Espero que curta o exercício. Ele é completamente auto-explicativo e facilmente reproduzível (bem, mais ou menos porque não delimitei a data final da amostra no meu comando e, na prática, o relatório pode ser replicado a cada dia com a amostra aumentando a cada dia adicional…) por qualquer um que saiba copiar e colar comandos do relatório (ou, para ser mais estudioso, copiar manualmente) na janela de comandos do R.

Não é um exercício completo como eu gostaria, mas é bastante ilustrativo. O leitor com um pouco mais de criatividade pode mudar o meu exemplo e fazer um breve artigo mais interessante. Aliás, acho que esta foi a idéia original do autor do pacote, eu diria, mais charmoso desta nota, o wikipediatrend.

Ah sim, antes que você pergunte, eu só escolhi a Lady Gaga porque ela é pop, vai chamar a atenção do leitor (suponho) e porque ela atuou em Machete Kills. (**)

(*) Minto apenas porque inseri números de páginas no arquivo posteriormente usando um editor de arquivos pdf. Fora isto, é tudo verdade!

(**) Caso você pesquise este blog, encontrará alguns Momentos R do Dia anteriores em que eu fazia este mesmo exercício.

Uncategorized

Ainda a Coca e a Pepsi (Momento R do Dia)

Ah sim, antes que eu me esqueça: lembra que fiz duas regressões ‘simétricas’ entre a COKE e a PEP num dos últimos posts (pesquise aí, cabra!)? Pois é. Você poderia reclamar deste procedimento. Ok, talvez o erro da regressão seja estacionário na primeira, mas não na segunda…o que fazer?

Ora, aplicar um teste de cointegração que seja robusto a quem você coloca do lado de lá (de cá) da equação de regressão. Desta vez não vou retomar o exemplo, mas apenas indicar ao leitor interessado a leitura breve, aqui.

Uncategorized

Momento R do Dia – Cointegração, Finanças e a Meia-Vida

Segundo Chan (2009) [o livro que citei há alguns posts], a meia-vida de uma série que reverte à média pode ser uma medida útil para sua estratégia no mercado financeiro. Isto porque, digamos, se duas séries cointegram, isto significa que desvios da média desaparecerão com o tempo.

Digamos que você tenha dois preços de ativos que cointegram (dados diários). Seu spread é o resíduo desta regressão. No caso de cointegração, há reversão à média, como já dito. Agora, digamos que eu calcule a meia-vida deste spread como igual a 5. Isto significa que você pode manter seu portfólio por cinco dias (este seria seu tempo ótimo – optimal holding period).

Eis um exemplo no qual a meia-vida é calculada automaticamente (apenas no pacote egcm). Fazemos, também, uso do pacote TTR que facilita a obtenção de dados do portal Yahoo Finance. Repare que peguei o preço de fechamento (não ajustado) e delimitei a data da amostra (você pode verificar que a cointegração não necessariamente se mantém para períodos mais longos de tempo).

Os dados são da Royal Dutch Shell, A e B.

library(TTR)
rdsa<-getYahooData("RDS-A",20090701, 20100101)$Close
rdsb<-getYahooData("RDS-B",20090701, 20100101)$Close

e<-egcm(rdsa,rdsb)
plot(e)
summary(e)

O resultado deste breve exercício nos dá uma meia-vida de 3.25 ou, aproximadamente três dias. As duas séries estão aí embaixo.

rdsab

Uncategorized

Momento R do Dia – Reproduzindo um exemplo de Lettau & Ludvigson (2004)

Untitled 171 Uma das grandes qualidades dos bons pesquisadores é quando eles disponibilizam os resultados dos artigos e as bases de dados para que qualquer um possa reproduzir seu trabalho. É o caso do prof. Lettau que tem um artigo importante em Macroeconomia e Finanças que foi atualizado em 2004 por conta de diversas mudanças nos dados utilizados na primeira versão do artigo (a primeira versão é de 2001).

Pois bem, o prof. Lettau criou uma página para disponibilizar o artigo e os dados. Ela está aqui. O artigo é este: Understanding Trend and Cycle in Asset Values: Reevaluating the Wealth Effect on Consumption. O começo do artigo é um exemplo de boa didática e retórica, o que me faz reproduzi-lo aqui, só para a degustação do leitor.

Both textbook economics and common sense teach us that the value of household wealth should be related to consumer spending. Early academic work by Franco Modigliani (1971) suggested that a dollar increase in wealth (holding Ž fixed labor income) leads to an increase in consumer spending of about Žfive cents. Since then, the so-called “wealth effect” on consumption has increasingly crept into both mainstream and policy discussions of the macroeconomy.

Today, it is commonly presumed that signiŽficant movements in wealth will be associated with movements in consumer spending, either contemporaneously or subsequently. Quantitative estimates of roughly the magnitude reported by Modigliani are routinely cited in leading macroeconomic textbooks, and are important features of many contemporary macroeconomic models, including those still widely studied by both academic economists and practitioners.

In this paper, we reevaluate the empirical foundation for such estimates of the consumption-wealth link. Contrary to conventional wisdom, we Žfind that a surprisingly small fraction of the variation in household net worth is related to variation in aggregate consumer spending.

Legal, não? Tema situado na literatura com a citação do resultado clássico e essencial de Modigliani e mais uma fisgada no leitor com um resultado contra-intuitivo. Quando eu crescer, quero começar a escrever meus artigos assim (mas tenho que encontrar resultados legais para tal…).

Pois é. Duas coisas legais. No apêndice online dos dados, Lettau disponibiliza o vetor de cointegração estimado:

 cay=cc-0.621y -0.269a (demeaned)

Isso nos permite reproduzir seus resultado para, por exemplo, checar a qualidade do algoritmo de um programa específico. São três variáveis aí: consumo (cc), renda (y) e ativos (a). “cay” é o nome do termo de correção de erros (o famoso mecanismo de correção de erros).

A estimação, seguindo a leitura do artigo, retorna o seguinte vetor:

cay_R = cc -0.624y -0.263a .

A precisão é razoável, não? Até a segunda casa decimal e com os sinais corretos.

Eis o script.

# reprodução dos resultados de Lettau & Ludvigson (2004)

lettau<-read.table("C:/Users/cdshi_000/Documents/Meus Documentos/Meus Documentos/cursos/Econometria II/lettau_data.csv", 
                   header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
head(lettau)
tail(lettau)

# http://faculty.haas.berkeley.edu/lettau/data/cay_pce_14Q3.txt
# Leia as observações sobre os dados

# transformando para séries de tempo.

lettau.ts<-ts(lettau, start=c(1951,4), freq=4)

head(lettau.ts)

# não precisamos da primeira coluna, nem da última

lettau.ts<-lettau.ts[,c(2,3,4)]

# conferindo...

head(lettau.ts)

# uma rápida olhadela nos dados...

plot(lettau.ts)

# para o exercício, vamos seguir a especificação do autor. Usamos o 
# pacote vars para tentar reproduzir seus resultados.

library(vars)

t<-ca.jo(lettau.ts, type=c("eigen"), K=2, ecdet=c("none"),spec=c("transitory"))

# feito o teste do maior autovalor, aproveito para reproduzir o VECM do autor
# com uma relação de cointegração. Ela é o "teste$beta" abaixo.

teste<-cajorls(t, r=1)
teste$beta

Legal, não?

Uncategorized

Momento R do Dia – Cointegração e Finanças: tão óbvio, né?

Como sabemos, nove entre dez alunos dizem que econometria não serve para nada. Também sabemos que são os mesmos nove alunos que não mexem uma palha para pesquisar antes de falar bobagens. No post anterior, falei do livro de Chan (2009).

Aliás, ele é citado em um exemplo mais simples sobre a importância da cointegração em finanças disponível nesta página. Trabalhei no código que o autor fez para adaptá-lo ao meu exemplo. Por que? Porque o autor não faz a regressão considerando os vetores como séries de tempo, o que impede o uso do teste de Engle-Granger sobre os resíduos. Assim, tive que alterar o seu código (e o leitor fica com o dever de casa de comparar ambos os códigos).

Mas eu falava de cointegração e finanças, certo? Bem, Chan (2009) cita a cointegração como um ponto importante na estratégia dos traders. Diz ele:

If a price series (of a stock, a pair of stocks, or, in general, a portfolio of stocks) is stationary, then a mean-reverting strategy is guaranteed to be profitable, as long as the stationarity persists into the future (which is by no means guaranteed). However, the converse is not true. You don’t necessarily need a stationary price series in order to have a successful mean-reverting strategy. Even a nonstationary price series can have many short-term reversal opportunities that one can exploit, as many traders have discovered. [Chan(2009), p.131]

Ah, então esta história de reversão à médiaestacionaridade, que a gente estuda tem algo a ver, né? Pois é. Chan tem um blog e nem preciso dizer que o livro dele está lá, anunciado. Mas então, veja você, uma estratégia de reversão à média é lucrativa caso a estacionaridade persista. Um par de preços?

Vejamos os dados de fechamento ajustados do Yahoo Finance para duas séries. Você poderia fazer o download das mesmas manualmente, caso saiba os códigos. Vamos usar a Toyota e a Honda no exemplo. Mas, ao invés de usar o pacote quantmod, como no post anterior, vou trazer os dados diretamente do site para o R. Note que, sim, sei os códigos. Para a Toyota é TW e para a Honda, HMC. Dê uma olhada no gráfico das séries (o azul é o TW).

honda_toyota

library(zoo)
library(tseries)

# Veja como eu fiz:
tw <-read.csv("http://ichart.finance.yahoo.com/table.csv?s=TW&ignore=.csv", stringsAsFactors=F)
hmc<-read.csv("http://ichart.finance.yahoo.com/table.csv?s=HMC&ignore=.csv", stringsAsFactors=F)

# veja a cara de um deles.

head(tw)

# agora, note que vou pegar a data e o preço ajustado (última coluna) da Toyota (tw) e da Honda (HMC)
tw <-zoo(tw[,7], as.Date(tw[,1]))
hmc <-zoo(hmc[,7], as.Date(hmc[,1]))

# vou fundir as duas.

jap.zoo <-merge(tw, hmc, all=FALSE)

# qual o período?

cat("Date range is", format(start(jap.zoo)), "to", format(end(jap.zoo)), "\n")

# verifique que o período é: 11 de outubro de 2000 a 01 de junho de 2015.

# Agora vou fazer manualmente a regressão, sem intercepto (por isso o "+ 0").
# Em seguida, pego o coeficiente (o único) e construo o spread.

library(dynlm)
j1 <-dynlm(tw~hmc+0, data=jap.zoo)
summary(j1)

sprd <- jap.zoo$tw - beta*jap.zoo$hmc  # serie menos a serie estimada

# outra forma de fazer isso é simplesmente dizer que:
# sprd <- j$residuals

Repare que o spread é construído como o resíduo da regressão que chamei de “j”. Podemos visualmente perceber que o spread não é estacionário (use o comando plot(sprd)). Um teste de raiz unitária sobre ele mostrará que ele não é estacionário.

Isto foi feito neste post, quando, em meio ao exercício, fiz o teste de raiz unitária de Engle-Granger sobre os resíduos (veja lá). Só para exemplificar, eis duas especificações da equação do teste, com 4 e 12 defasagens (o número de defasagens, aqui, arbitrariamente escolhido, por pura preguiça).

y1<-j1$residuals
summary(dynlm(d(y1)~L(y1,1)+L(d(y1),c(1,2,3,4))))
summary(dynlm(d(y1)~L(y1,1)+L(d(y1),c(1,2,3,4,5,6,7,8,9,10,11,12))))

O restante fica a seu cargo. Lembre-se que este teste tem tabela com valores próprios (o livro-texto de Gujarati & Porter, aquele que você provavelmente usa ou já viu na biblioteca, tem esta tabela).

Uncategorized

Vai de Coca ou de Pepsi – II

Lembra que eu citei o pacote egcm aqui, ano passado? Resolvi dar uma olhada nos dados novamente. Antes de mais nada, chamo a atenção para o fato de que não estou testando modelos de concorrência (para saber se existe um líder e um seguidor neste mercado ou não, como fazem estes autores). Apesar disto, podemos nos perguntar se ambas as variáveis seriam endógenas ou exógenas (além da questão de cointegração pois, afinal, se houver cointegração, podemos testar a exogeneidade fraca).

Apenas para que possamos nos divertir com os dados do Yahoo Finance, vamos usar o preço de fechamento da PEP e COKE. Os dados são diários, iniciando em 03/01/2007 e terminando em 29/05/2015. Podemos supor que a cointegração seja feita sob a hipótese implícita de exogeneidade da Pepsi ou da Coca.

Ah sim, antes de mais nada, este é um exercício simples, então, repare que COKE está na Nasdaq e PEP na NYSE. A Coca está também na NYSE, mas o símbolo, lá, é KO, e o comportamento da série é bem distinto das duas anteriores, por isso não vou usá-la no exemplo.

Apresento os resultados para ambos e o script está aí embaixo.

No gráfico a seguir, o preço de fechamento da Coca é regredido contra o da Pepsi.

cokepepsi

Aqui, o oposto.

pepsicoke

Agora, em nenhum dos dois casos encontramos cointegração. Vejam os resultados. Primeiro, para a Pepsi como exógena:

COKE.Close[i] = 1.0390 PEP.Close[i] – 0.3149 + R[i], R[i] = 0.9952 R[i-1] + eps[i], eps ~ N(0, 0.0183^2)
(0.0186)                          (0.0797)                    (0.0028)

R[2015-05-29] = 0.3004 (t = 2.144)

WARNING: PEP.Close and COKE.Close do not appear to be cointegrated.

Unit Root Tests of Residuals

Statistic p-value
Augmented Dickey Fuller (ADF) -3.332 0.09251
Phillips-Perron (PP) -20.354 0.11355
Pantula, Gonzales-Farias and Fuller (PGFF) 0.992 0.21422
Elliott, Rothenberg and Stock DF-GLS (ERSD) -1.600 0.27192
Johansen’s Trace Test (JOT) -10.991 0.54535
Schmidt and Phillips Rho (SPR) -23.683 0.05867

Variances
SD(diff(PEP.Close)) = 0.011523
SD(diff(COKE.Close)) = 0.019064
SD(diff(residuals)) = 0.018286
SD(residuals) = 0.140131
SD(innovations) = 0.018258

Half life = 143.412600
R[last] = 0.300437 (t=2.14)

Agora para a Coca como exógena.

PEP.Close[i] = 0.5729 COKE.Close[i] + 1.8999 + R[i], R[i] = 0.9954 R[i-1] + eps[i], eps ~ N(0, 0.0125^2)
(0.0103)                           (0.0426)                   (0.0026)

R[2015-05-29] = -0.0421 (t = -0.404)

WARNING: COKE.Close and PEP.Close do not appear to be cointegrated.

PEP.Close[i] = 0.5729 COKE.Close[i] + 1.8999 + R[i], R[i] = 0.9954 R[i-1] + eps[i], eps ~ N(0, 0.0125^2)
(0.0103) (0.0426) (0.0026)

R[2015-05-29] = -0.0421 (t = -0.404)

WARNING: COKE.Close and PEP.Close do not appear to be cointegrated.

Unit Root Tests of Residuals
Statistic p-value
Augmented Dickey Fuller (ADF) -2.923 0.21901
Phillips-Perron (PP) -16.402 0.22808
Pantula, Gonzales-Farias and Fuller (PGFF) 0.992 0.24437
Elliott, Rothenberg and Stock DF-GLS (ERSD) -1.353 0.37424
Johansen’s Trace Test (JOT) -10.991 0.54535
Schmidt and Phillips Rho (SPR) -18.284 0.13898

Variances
SD(diff(COKE.Close)) = 0.019064
SD(diff(PEP.Close)) = 0.011523
SD(diff(residuals)) = 0.012530
SD(residuals) = 0.104053
SD(innovations) = 0.012508

Half life = 148.750521
R[last] = -0.042066 (t=-0.40)

Pois é, gente. Nada de cointegração para a amostra, segundo este método (e nem pelo método de Johansen, não apresentado aqui).

Eis o script:

# Usando dados do YahooFinance e ilustrando a cointegração via Engle-Granger
# com o pacote egcm.
# Além disso, para os testes de raiz unitária, vou usar também o pacote forecast,
# embora o leitor possa checar que o egcm tem opções.

# Para buscar os dados online do YahooFinance, usamod o pacote quantmod.

library("forecast")
library("quantmod")

getQuote("COKE")
head(COKE)
tail(COKE)

getQuote("PEP")
head(PEP)

# Vamos dar uma olhada nos gráficos e em um teste de raiz unitária, o kpss.

plot(log(PEP$PEP.Close))
ndiffs(log(PEP$PEP.Close), test=c("kpss"))

plot(log(COKE$COKE.Close))
ndiffs(log(COKE$COKE.Close),test=c("kpss"))

# Ok, agora ao trabalho.

library("egcm")

# supondo que exista cointegração com Pepsi supostamente exógena.

soda<-egcm(PEP$PEP.Close, COKE$COKE.Close, log=TRUE)
print(soda)
plot(soda)
summary(soda)

# supondo que exista cointegração, com Coca supostamente exógena.

soda1<-egcm(COKE$COKE.Close,PEP$PEP.Close, log=TRUE)
print(soda1)
plot(soda1)
summary(soda1)

UPDATE: Por acaso tive contato com o livro de Chan [Chan, E. (2009) “Quantitative Trading”, John Wiley & Sons] e não é que o autor usa o mesmo exemplo? Só que ele usa o par (KO, PEP). Como falei lá no alto, eu dei uma olhada nestes dados e, sim, eles não cointegram…tal como no exemplo do livro.

Uncategorized

Momento R do Dia – Exercício do Enders, cap.6 (Cointegração)

Meu monitor, Victor, sempre me pede por exercícios para mostrar aos dois alunos que frequentam suas sessões (eventualmente, este número sobe para uns dez, mas só em época de prova).

Eis um Momento R do Dia para ele e todos os que, como ele, desejam usar o R para resolver seus problemas de aprendizado. Pegue-se o livro-texto de Walter Enders (a segunda edição), no capítulo 6, exercício 4.

Abriu o livro? Então, prepare-se pois, com este “script”, você terá o exercício mais completo que já vi para estudar um pouco de Cointegração. Claro, algumas coisas ficaram de fora, mas aí é pedir muito, né?

Pronto? Bom trabalho.

# Exemplo de Engle-Granger e Johansen (Enders, 2nd ed. p.374-5, ex.4)
# A base de dados deve ser importada de: 
# http://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=1660&itemId=0471230650&resourceId=1957&chapterId=6746
# planilha: int_rates.xls (transforme para csv)
# importe como achar melhor. Abaixo como eu fiz.

enders<-read.table("C:/Users/cdshi_000/Documents/Meus Documentos/Meus Documentos/cursos/Econometria II/int_rates.csv", 
                   header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
head(enders)
tail(enders)

library(urca)
summary(ur.df(enders$tbill, type=c("drift"), lags=12, selectlags=("Fixed")))
summary(ur.df(enders$r3, type=c("drift"), lags=12, selectlags=("Fixed")))
summary(ur.df(enders$r10, type=c("drift"), lags=12, selectlags=("Fixed")))

# vamos passar para formato ts

enders<-ts(enders, start=c(1954,7), freq=12)
plot(enders)

# por conveniencia de sintaxe, dynlm

library(dynlm)

summary(dynlm(tbill~r3+r10, data=enders))

reg1<-dynlm(tbill~r3+r10, data=enders)

# Teste de Engle-Granger sobre resíduos (tabela em Gujarati)

res<-reg1$residuals
y<-res
plot(y)

summary(dynlm(d(y)~L(y,1)+L(d(y),1)+L(d(y),2)+L(d(y),3)+L(d(y),4)+L(d(y),5)+L(d(y),6)+
                L(d(y),7)+L(d(y),8)+L(d(y),9)))

# Item c do exercicio: a idéia é alterar a variável dependente da equação.
# O autor pretende discutir...(pense enquanto relembra quando leu o exercício completo
# antes de começá-lo).

reg2<-dynlm(r10~tbill+r3, data=enders)

# Teste de Engle-Granger sobre resíduos (tabela em Gujarati)

res<-reg2$residuals
y1<-res
plot(y1)

# com 4 
summary(dynlm(d(y1)~L(y1,1)+L(d(y1),1)+L(d(y1),2)+L(d(y1),3)+L(d(y1),4)))

# com 12
summary(dynlm(d(y1)~L(y1,1)+L(d(y1),1)+L(d(y1),2)+L(d(y1),3)+L(d(y1),4)+L(d(y1),5)+L(d(y1),6)+
                L(d(y1),7)+L(d(y1),8)+L(d(y1),9)+L(d(y1),10)+L(d(y1),11)+L(d(y1),12)))

# ou (mesma coisa):

summary(dynlm(d(y1)~L(y1,1)+L(d(y1),c(1,2,3,4,5,6,7,8,9,10,11,12))))

# novamente, tabela de Gujarati. O que aconteceu entre o item b e c? Como você tiraria
# conclusões? (a caminho do método de Johansen...)

# item d
# para este item, ele deseja uma estimação do VECM, ainda sob Engle-Granger. Ele usa 
# (por que?) os resíduos encontrados no item "b". Por que?
# Basta estimar normalmente:
# vou facilitar minha vida primeiro, convertendo os nomes das séries:

head(enders)
tbill<-enders[,c(3)]
r10<-enders[,c(5)]
r3<-enders[,c(6)]


vec1<-(dynlm(d(tbill)~L(y,1)+L(d(tbill),c(1,2,3,4,5,6,7,8,9,10,11,12))+
                L(d(r3),c(1,2,3,4,5,6,7,8,9,10,11,12))+
                L(d(r10),c(1,2,3,4,5,6,7,8,9,10,11,12))))
vec2<-(dynlm(d(r3)~L(y,1)+L(d(tbill),c(1,2,3,4,5,6,7,8,9,10,11,12))+
                L(d(r3),c(1,2,3,4,5,6,7,8,9,10,11,12))+
                L(d(r10),c(1,2,3,4,5,6,7,8,9,10,11,12))))
vec3<-(dynlm(d(r10)~L(y,1)+L(d(tbill),c(1,2,3,4,5,6,7,8,9,10,11,12))+
                L(d(r3),c(1,2,3,4,5,6,7,8,9,10,11,12))+
                L(d(r10),c(1,2,3,4,5,6,7,8,9,10,11,12))))

plot(vec1$residuals)
plot(vec2$residuals)
plot(vec3$residuals)

# O correto é fazer o teste de Engle-Granger nos resíduos, como no item b. 
# Contudo, para não perdermos muito tempo (você faz isso como dever de casa), 
# vejamos os resultados dos testes de Phillips-Perron, o ADF e o KPSS.

library(forecast)

ndiffs(vec1$residuals, test=c("pp"))
ndiffs(vec2$residuals, test=c("pp"))
ndiffs(vec3$residuals, test=c("pp"))

ndiffs(vec1$residuals, test=c("kpss"))
ndiffs(vec2$residuals, test=c("kpss"))
ndiffs(vec3$residuals, test=c("kpss"))

ndiffs(vec1$residuals, test=c("adf"))
ndiffs(vec2$residuals, test=c("adf"))
ndiffs(vec3$residuals, test=c("adf"))

# Apenas em um resultado (usando o KPSS), um dos resíduos parece ser não estacionário. 

# Agora, o item "e". 

library(vars)

# preciso da matriz dos dados, não no formato de série de tempo (é, está escrito isto lá
# na ajuda)
# Não é um problema. Eis uma forma fácil: leia de novo e mude o nome.

enders_matrix<-read.table("C:/Users/cdshi_000/Documents/Meus Documentos/Meus Documentos/cursos/Econometria II/int_rates.csv", 
                   header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)

head(enders_matrix)
# Agora, vamos tirar as duas primeiras colunas. Depois,a quarta.

enders_matrix<-enders_matrix[-c(1,2,4)]

# Confira

head(enders_matrix)

# No comando do R, vamos usar 13 lags ao invés de 12, como pede Enders no enunciado.
# O motivo para isto é simples: o R já sabe que, para estimar o VECM, ele terá que descontar
# uma defasagem (pense nisto um pouco). Repare que teremos exatamente os mesmos resultados.

enders_eigen <- ca.jo(enders_matrix, ecdet = "const", type="eigen", K=13, spec="transitory")
enders_trace <- ca.jo(enders_matrix, ecdet = "const", type="trace", K=13, spec="transitory")

summary(enders_eigen)
summary(enders_trace)

# Aceitando que há uma única relação de cointegração, vamos estimar o VECM sob esta restrição.
# repare que ele já estima com 12 defasagens, como falei anteriormente.

vecm<-cajorls(enders_trace, r=1)
vecm
summary(vecm$rlm)

# Repare que a relação de cointegração é exatamente a que ele pede para checar no item f.
# subitem i: tbill = -0.379 + 1.603R3 - 0.665R10. (veja os resultados acima).
# Veja que acertou todo o exercício conferindo os coeficientes de ajustamento 
# (subitem ii do item f).

# Pronto, você terminou o exercício.

# Caso queira fazer testes de diagnóstico, lembre-se de converter o vec para var primeiro.
# Caso queira ver as funções de resposta ao impulso e/ou a decomposição de variância,
# verifique os comandos adequados no pacote vars.
# dica: http://cran.r-project.org/web/packages/vars/vars.pdf


varzinho<-vec2var(enders_eigen, r=1)

arch.test(varzinho)
normality.test(varzinho)
serial.test(varzinho)

irf(varzinho, impulse = "tbill", response = c("tbill", "r3", "r10"), boot =
      FALSE)

# ou, visualizando...

irf_tbill<-irf(varzinho, impulse = "tbill", response = c("tbill", "r3", "r10"), boot =
      TRUE)

plot(irf_tbill)

# Obviamente, você pode mudar os impulsos e pedir as respostas conforme o que deseja analisar.

# Decompos. de Var.

fevd(varzinho, n.ahead=4)

Uncategorized

A taxa de câmbio mais sem sal do mundo – continuação

Pobre Lucas.

poorlucas

Resolvi checar a cointegração entre duas taxas de câmbio pensando no meu amigo de nome hipotético (“Lucas”) que deseja vender reais, comprar dólares, e depois trocar por dólares canadenses.

Claro que uma uma forma de ver isto é checar se existe uma relação de longo prazo entre as duas taxas de câmbio. Iria ser o começo de uma lucrativa relação (imaginei eu, ingênuo que sou…) entre o hipotético Lucas e o consultor malvado (eu).

Entretanto, as séries não cointegraram. Há esperança? ^_^

Bem, a esperança, como sabemos, morre, mas é a última (e também pode ser condicionada a uma outra variável…) e há muitos problemas a serem tratados aí, mas não deixa de ser engraçado o resultado. Toda vez que tento ajudar meu amigo hipotético, algo inesperado acontece.

Eis as malvadas e o leitor que já nos acompanha notou que usei um outro pacote para o R, o egcm. Já falei dele antes aqui (procure nos posts antigos).

cambiobloglucas1 cambiobloglucas2

Uncategorized

Aplicações de R e econometria que nos alegram: o dia em que o passeio aleatório foi à Nasdaq

Eis um, envolvendo o Nasdaq. O bacana deste post é que o autor motiva o uso da econometria com uma pergunta bem simples.

Analyzing the evolution of NASDAQ-100 stock prices can discover some interesting couples of companies which share a strong common trend despite of belonging to very different sectors.

Obviamente, a pergunta de se as séries seguem uma tendência comum é conhecida entre nós, economistas, em termos técnicos como: as séries cointegram? Há vários jeitos de se estudar a cointegração sendo que o mais simples é conhecido como o procedimento de dois passos de Engle e Granger.

O legal é o que o autor encontra pares que reputa como “estranhos”.

Claro que são estranhos, mas será que esta “estranha” manter-se-ia no caso de utilizarmos uma metodologia de investigação de cointegração que não fosse apenas bivariada? Como exemplo para sala de aula, este pequeno texto é ótimo (vale a pena explorar os comentários também). Fica a dica.

Uncategorized

Pesquisas interessantes

O último número da Revista de Economia e Administração (vol.10, n.1, em breve já disponível na página da revista) tem alguns artigos que me chamaram a atenção (sem falar no meu próprio, com Ari e Juliana). Vamos a eles:

1. “Sistema financeiro, segurança jurídica e crescimento econômico” – Este é um excelente exemplo de artigo que procura fazer com que o leitor entenda o que os autores fazem. A explicação dos procedimentos (que culminam em um VECM e nos testes de causalidade) está ótima. Não chequei se o teste de causalidade foi feito sobre o VECM ou não, mas é um belo artigo.

2. “Industrialização do Brasil na década de 1930: uma análise com teoria dos jogos” – O autor é da área de história econômica e, de certa forma, a parte da história ocupa 2/3 do artigo. Sempre é bom contextualizar, mas o bacana do artigo é a modelagem do autor. Mais uma vez, alguns aspectos das hipóteses que Furtado criou (e nunca testou) são refutados, neste caso, pelo modelo do autor.

3. “Persistência inflacionária: comparações entre três economias emergentes” – Vamos falar sério. A última coisa que me interessou no artigo foram as três economias emergentes. Ok, é o tema principal, mas os autores foram muito bem-sucedidos na parte mais difícil do artigo que foi a de explicar os modelos ARFIMA. Até eu que sou burrinho consegui pegar a idéia.

Assim, meus parabéns aos autores destes artigos. Há tempos eu não via artigos que eram realmente “bens públicos”. Aprendi algo novo com cada um deles. Seja na forma de explicar um tópico, seja no aprender um novo método, ou admirar um artigo bem escrito.

Uncategorized

Vem novo “apagão” por aí?

Veja o resumo desta dissertação:

“PROJEÇÕES PARA A DEMANDA POR ENERGIA ELÉTRICA NO BRASIL, 2006-2015”
SIDIMAR QUEZADA LEITE

RESUMO

Projetamos a demanda por energia elétrica para o Brasil para o período de 2006 a 2015. As projeções são geradas de duas formas. Primeiro, estima-se a demanda por energia elétrica com base num modelo de correção de erros. Utilizando este mesmo modelo foram calculadas as elasticidades renda e preço da demanda por energia elétrica. Segundo, estimamos a demanda por energia elétrica com base num modelo ARIMA. Nossas estimativas sugerem que a energia elétrica não será um gargalo para o crescimento da economia brasileira para este período da análise.

Comentários? Eu faço um único: qualquer aluno de Econometria II esperto dará uma boa olhada nesta dissertação porque o autor é bem didático em suas explicações. Ah sim, sobre o “apagão”, o problema é localizado…em 2009. Entretanto, com os possíveis impactos de uma crise mundial, talvez estejamos a salvo.

A prova do modelo do autor é: será que ele apostaria sua grana em sua previsão? Esta, para mim, é a melhor prova de que um modelo funciona. Mas deixe de lado este meu critério rigoroso e aprecie o trabalho. 

O bacana, acho, é o aspecto prático da dissertação: a pergunta é relevante para a economia brasileira e o autor fez sua contribuição. Se ele está correto, claro, várias implicações de política econômica surgem e podemos compará-las com o que tem sido feito. 

Eis aí a essência da prática econômica.