Até meados da década de 1980, pesquisas econômicas financeiras eram essencialmente sobre como investigar a interação entre o comportamento racional dos maximizadores de utilidade.
Muito sobre essa abordagem de pesquisa e investigação foi produzido mas pouco sobre o comportamento individual dos participantes do mercado foi explicitado. Com as influências da psicologia clínica e economia experimental impactando a disciplina de finanças a partir de ângulos diferentes, a investigação sobre os aspectos comportamentais em finanças começaram a surgir.
Um dos primeiros artigos empíricos na área de finanças comportamentais foi o estudo seminal de DeBondt e Thaler (1985) sobre a reação exagerada do mercado de ações.
Os resultados DeBondt e Thaler (1985), mostraram que quando os ativos eram mantidos por longos períodos de tempo, as ações apresentavam um comportamento significante para a reversão dos preços desses mesmos ativos.
A explicação para a quantidade substancial de reversão no preço dos ativos é baseada no comportamento. Os investidores, em geral, tendem a "super-ponderar" desempenhos mais recentes do ativo em questão e "sub-ponderar" informações de mais longo prazo em suas decisões. Esse comportamento é consistente com a heurística da disponibilidade apresentada por Tversky e Kahneman (1973).
Por exemplo, se uma ação sofreu recentemente uma diminuição nos ganhos devido a alguma mudança não estrutural temporária nas oportunidades econômicas, a queda dos preços pode ser exagerada devido a atualidade da notícia.
Uma vez que o preço da ação foi pressionado, o seu aumento gradual até a sua recuperação completa pode ser lento. Isso até que os investidores percebam sua "reação exagerada" à notícia temporariamente ruim, criando assim uma pressão compradora para "inverter" a queda dos preços.
DeBondt e Thaler (1985) encontraram uma persistência significante para esse fenômeno de reversão e sugeriram que os mercados tendem a sofrer de reação exagerada dos investidores.
A beleza da abordagem de DeBondt e Thaler (1985) está em demonstrar como uma hipótese de reação exagerada pode ser testada empiricamente.
Especificamente, o que DeBondt e Thaler (1985) fazem é calcular o retorno das carteiras para alguns períodos, por exemplo, o desempenho da carteira pode ser calculada para os 36 meses anteriores e, posteriormente, avaliamos como o portfólio se comporta, especialmente para um determinado período de avaliação ou seja, o desempenho nos 36 meses subsequentes.
Para testar a hipótese de reação exagerada, DeBondt e Thaler (1985) formaram portfólios "perdedores" e "vencedores" compostos pelas 30 ações com o pior desempenho e 30 ações com o melhor desempenho, respectivamente, durante o período de formação.
Os autores, então, seguem estas carteiras para os 36 meses seguintes e avaliam e comparam seus desempenhos. Com o tempo, a carteira "perdedora", composta das ações com o pior desempenho no período de formação, consistentemente supera a carteira de "vencedora" durante o período de avaliação. Esses resultados, de acordo com DeBondt e Thaler (1985), sugerem uma forte evidência da presente reação exagerada do mercado de ações, consistente com a teoria da tomada de decisão irracional dos agentes.
O objetivo deste post é mostrar como você pode realizar um simples estudo sobre a reação exagerada do Mercado de ações usando o R para isso.
Teste de reação exagerada usando o R.
DeBondt e Thaler (1985) acumularam em seu trabalho os retornos ajustados do mercado ao longo de um período de formação de três anos para cada ação do New York Stock Exchange (NYSE) com início em dezembro de 1932 e continuando até dezembro de 1977. As carteiras "perdedoras" e "vencedora" foram as carteiras avaliadas ao longo dos 17 períodos disjuntos de três anos de avaliação.
No nosso exemplo, trabalharemos com os ativos disponíveis de 2000 a 2012 e assim como DeBondt e Thaler (1985) utilizaremos três anos para o período de formação e três anos para o período de avaliação.
Conrad e Kaul (1993) introduziram a ideia de que os retornos acumulados em horizontes longos podem enviesar os resultados sobre a super-reação dos agentes. Uma solução para isso é usar períodos de retenção (holding periods) ao investigar horizontes longos.
Tal como acontece com a maior parte da investigação em economia financeira, o primeiro passo para a análise de dados é lê-los a partir de um conjunto de observações de dados externos. Esta tarefa é realizada pela seguinte sintax:
1 2 3 4 5 6 7 8 | #Limpa o console rm (list= ls (all= TRUE )) #Lista de ativos Bovespa #Obtêm os dados da Bovespa lista<- as.character (ativos[, "Sigla" ]) |
1 2 3 4 5 | #Pega a data atual d <- Sys.time () current.year <- format (d, "%Y" ) current.month <- format (d, "%m" ) current.day <- format (d, "%d" ) |
1 2 3 4 5 6 7 8 9 10 11 12 | #Yahoo finance considera janeiro como 00 então: month <- as.numeric (current.month) - 1 month <- ifelse (month < 10, paste ( "0" ,month, sep= "" ), m) #Pega os prerídos diários para o ticket 1 tckr <- lista[1] fn <- sprintf ( "http://ichart.finance.yahoo.com/table.csv?s=%s&a=0&b=1&c=2000&d=%s&e=%s&f=%s&g=d&ignore=.csv" ,tckr, month, current.day, current.year) #Guarda os dados dados <- read.csv (fn, colClasses= c ( "Date" , rep ( "numeric" ,6))) dados<-dados[ c ( "Date" , "Close" )] colnames (dados)<- c ( "Date" ,lista[1]) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | for (i in 2: length (lista)) { tckr <- lista[i] fn <- sprintf ( "http://ichart.finance.yahoo.com/table.csv?s=%s&a=0&b=1&c=2000&d=%s&e=%s&f=%s&g=d&ignore=.csv" ,tckr, month, current.day, current.year) #Guarda os dados data<- data.frame () data <- try ( read.csv (fn, colClasses= c ( "Date" , rep ( "numeric" ,6)))) if ( ncol (data)>0) { data<-data[ c ( "Date" , "Close" )] colnames (data)<- c ( "Date" ,tckr) dados<- merge (dados, data, by.x = "Date" , by.y = "Date" , all = TRUE ) } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | shift<- function (x,shift_by){ stopifnot ( is.numeric (shift_by)) stopifnot ( is.numeric (x)) if ( length (shift_by)>1) return ( sapply (shift_by,shift, x=x)) out<- NULL abs_shift_by= abs (shift_by) if (shift_by > 0 ) out<- c ( tail (x,-abs_shift_by), rep ( NA ,abs_shift_by)) else if (shift_by < 0 ) out<- c ( rep ( NA ,abs_shift_by), head (x,-abs_shift_by)) else out<-x out } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #Para cada ativo calcular o retorno três anos antes e três anos depois resultado<- data.frame () for (i in 1: length (lista)) { precos<-dados[, c ( "Date" ,lista[i])] precos[, "pform" ]<- shift (precos[,lista[i]],-3*360) precos[, "paval" ]<- shift (precos[,lista[i]],+3*360) precos[, "pform" ]<-(precos[,lista[i]]-precos[, "pform" ])/precos[, "pform" ] precos[, "paval" ]<-(precos[, "paval" ]-precos[,lista[i]])/precos[,lista[i]] precos$Empr<-lista[i] precos<- na.omit (precos[, c ( "Date" , "Empr" , "pform" , "paval" )]) resultado<- rbind (resultado,precos) } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #Remove retornos exagerados resultado<-resultado[resultado[, "pform" ]>-1 & resultado[, "paval" ]>-1, ] #Ordena os resultados resultado <- resultado[ order (resultado[, "Date" ], resultado[, "Empr" ]), ] #Frequência dos ativos firmas <- as.data.frame ( table (resultado[, "Date" ])) names (firmas) <- c ( "Date" , "freq" ) firmas[, "Date" ]<- as.Date (firmas[, "Date" ]) #Une as frequências com a base resultado dat <- merge (resultado, firmas, by= "Date" ,all.x=T) |
1 2 3 | #Ranqueia as empresas firma <- unlist ( tapply ( rep (1, nrow (resultado)), resultado[, "Date" ], cumsum)) dat <- cbind (dat, firma) |
1 2 3 4 5 6 7 8 9 | #Carteira perdedora perdedor <- dat[dat[, "firma" ]<=5, ] summary (perdedor[, "paval" ]) t.test (perdedor[, "paval" ]) #Carteira vencedora vencedor <- dat[dat[, "firma" ] >= dat$freq-4, ] summary (vencedor[, "paval" ]) t.test (vencedor[, "paval" ]) |