
Colaboradores do grupo, realizei um teste de financas em R, conhecido como TICKTEST, porém meu código ficou muito lento. Talvez alguém possa ajudar a torná-lo mais ágil. Grato, Luciano Resumidamente: 1 - Prentende-se classificar mudanças de preço em uma ação. 2 - O primeiro negócio do dia não é classificado. Os negócios subsequentes em que haja estabilidade no preço tb não são classificados. 3 - Classifica-se as restantes conforme o movimento do preço. Se sobe, UPTICK. Se desce, DOWNTICK. Se é estável e a última variação foi positiva, ZERO.UPTICK. Se é estável e a última variação foi positiva, ZERO.DOWNTICK. Um exemplo dos dados: Data Operação Preço Classificação 1/1/2011 10 $10.00 NC 1/1/2011 20 $9.90 DOWNTICK 1/1/2011 30 $9.90 ZERO.DOWNTICK 1/1/2011 40 $10.10 UPTICK 1/1/2011 50 $10.20 UPTICK 1/2/2011 10 $9.80 NC 1/2/2011 20 $9.80 NC 1/2/2011 30 $9.90 UPTICK 1/2/2011 30 $9.90 ZERO.UPTICK _*O CÓDIGO EM SI:*_ *#* Abre o arquivo de dados, cria um novo objeto "y" com uma coluna vazia. x <- read.table("dados.txt",sep=";",header=F,skip=1) y <- cbind(x,(rep(NA,nrow(x)))) *# 1º Loop:* Se a operação foi nº 10 não classifica, o resto classifica. z <- 1:nrow(x) for (t in z) { if (y[t,2]==10) y[t,4]<-"NC" else y[t,4] <-"C" } *# 2º Loop:* Se a operação anterior não foi classificada e o preço não mudou na atual, desclassifica esta também. w <- 1:(nrow(x)-1) for (i in w) { if (y[i,4]=="NC" & y[i,3]==y[i+1,3]) y[i+1,4]<-"NC" } *# 3º Loop:* divide as operações classificadas em quatro classes: for (i in w) { *#*Se o preço diminuiu, DOWNTICK; if (y[i+1,4]=="C" & y[i,3]>y[i+1,3]) y[i+1,4]<-"DOWNTICK" *#*Se o preço aumentou, UPTICK; if (y[i+1,4]=="C" & y[i,3]<y[i+1,3]) y[i+1,4]<-"UPTICK" *#* Se o preço permaneceu constante, mas a ultima variação foi positiva, ZERO.UPTICK; if (y[i+1,4]=="C" & y[i,3]==y[i+1,3] & (y[i,4]=="UPTICK" | y[i,4]=="ZERO.UPTICK")) y[i+1,4]<-"ZERO.UPTICK" *#*Se o preço permaneceu constante, mas a ultima variação foi negativa, ZERO.DOWNTICK; if (y[i+1,4]=="C" & y[i,3]==y[i+1,3] & (y[i,4]=="DOWNTICK" | y[i,4]=="ZERO.DOWNTICK")) y[i+1,4]<-"ZERO.DOWNTICK" }