这是一个动量效应的程序,运行后的结果与大多数已有的研究结果有很大的不同,然而又感觉自己的程序没错,想让大神看看问题出在哪了?
附上程序与 数据。数据是若干只股票的近三年的周收益率。
#这是我自己对动量效应的研究的构思
#第一步是读取数据,数据的排列方式是以日期(时间段)为行,股票类型为列,这样的排列刚好适用于动量效应的研
#究。首先是选定一个起始点,从这一个起始点开始计算之前一段时间K内的每只股票的累计收益率,然后选取最好的10%
#与最差的10%,而这种操作在这个程序上我是先用suma这个向量存储每一只股票在过去K段时间内的累计收益率,然后
#用y
#是最差的10%,高于90%的就是最好的10%。而用lo=suma<=y[1]来提取出股票,再用a
#表示最差10%股票持有J期后的收益率表现,而sum(a)即是这些股票的累积收益率之和。同样lg=suma>=y[2]
#即最好的10%的股票也是类似处理的。
data=read.csv("周收益率.csv")
col=ncol(data) #计算数据的列数
nr=nrow(data) #计算行数
#创建一个动量函数,通过输入不同的k,j来计算动量收益与显著性t值
mom
#用一个列表来装载各种数据
L
#新建几个向量,用来存储每个(k,j)组合每次计算的赢家收益率b_ret,与输家收益率a_ret,以及动量收益c_ret
a_ret
b_ret
c_ret
v=1
for(i in 1:(nr-k-j+1)){ #表示每个(k,j)组合要计算(nr-k-j+1)次动量收益
#(参考点要移动(nr-k-j+1)次)
suma
for(x in 1:col){
suma[x]
}
y
lo=suma<=y[1] #选取(锁定)下10%的股票
lg=suma>=y[2] #选取(锁定)上10%的股票
a
b
sum_a=sum(a)
sum_b=sum(b)
#等权重平均后的收益率
a_ret[v]
b_ret[v]
v=v+1
}
c_ret=b_ret-a_ret#所有参照点的动量收益向量
meas=mean(c_ret,na.rm=T) #动量效应收益
sds=sd(c_ret,na.rm=T)#样本方差
t
#存储各类值
L$t
L$m
L$sd
return(L)
}
若令 t
希望大神来解答困惑啊!!十万火急!