前两篇的文章中我演示了如何进行预测,但是预测的准确率一直停留在50%上下,好一点的有60%,IR就不用说了,有多有少,可操作性比较差。今天从另一个角度解释一下为什么这么难预测。先从一个有趣的题目来入手:任意打开一张图表,将价格走势图删掉一部分,但是不要删成交量的走势图,问题是,你能够根据下面的量猜出股价的走势吗?如果可以,你能以多大的概率猜准。 带着这个问题,我们进行如下的实验。为了方便叙述,价格我们用P来表示,成交量我们用V来表示
1.首先下载我们的源程序,然后在LinearRegression.cpp中选择线性拟合而不是线性分类,代码注释打开
2.使用成交量均量ma(vol,n)作为训练输入的X,这里n取1-21,使用涨跌幅作为输出Y,再输出一个Y作为我们的统计方便,这里直接给出数据生成公式
v1000:vol/1000;
vma1:ma(v1000,1);
vma2:ma(v1000,2);
vma3:ma(v1000,3);
vma4:ma(v1000,4);
vma5:ma(v1000,5);
vma6:ma(v1000,6);
vma7:ma(v1000,7);
vma8:ma(v1000,8);
vma9:ma(v1000,9);
vma10:ma(v1000,10);
vma11:ma(v1000,11);
vma12:ma(v1000,12);
vma13:ma(v1000,13);
vma14:ma(v1000,14);
vma15:ma(v1000,15);
vma16:ma(v1000,16);
vma17:ma(v1000,17);
vma18:ma(v1000,18);
vma19:ma(v1000,19);
vma20:ma(v1000,20);
vma21:ma(v1000,21);
RES:(c-ref(c,5))/ref(c,5);
ratesss:(c-ref(c,5))/ref(c,5);
3.编译并执行程序,我随便选择了一只取了数据,结果如下:
MODEL0: [20160707] [ OK ] BLF: 69.39 POINT= 0.14 IR0= 3.19
MODEL0: [20160708] [ OK ] BLF: 93.77 POINT= 0.15 IR0= 3.34
MODEL0: [20160711] [ OK ] BLF: 53.64 POINT= 0.10 IR0= 3.44
MODEL0: [20160712] [ OK ] BLF: 31.71 POINT= 0.03 IR0= 3.47
MODEL0: [20160713] [ OK ] BLF: 7.47 POINT= 0.06 IR0= 3.53
MODEL0: [20160726] [ OK ] BLF: 28.46 POINT= 0.07 IR0= 3.60
MODEL0: [20160727] [ OK ] BLF: 46.92 POINT= 0.06 IR0= 3.66
MODEL0: [20160728] [ OK ] BLF: 34.22 POINT= 0.09 IR0= 3.75
MODEL0: [20160729] [ OK ] BLF: 75.80 POINT= 0.12 IR0= 3.87
MODEL0: [20160801] [ OK ] BLF: 31.85 POINT= 0.09 IR0= 3.96
MODEL0: [20160802] [ OK ] BLF: 9.16 POINT= 0.04 IR0= 4.00
MODEL0: [20160804] [ OK ] BLF: 4.44 POINT= 0.00 IR0= 4.00
MODEL0: IR0=3.998000 ACCURACY=0.692308 SUMIRP=9.839000
MODEL1: IR1=-4.109000 ACCURACY=0.628931 SUMIRN=-9.950000
SUMIR:-0.111000
可见V和P存在一定的相关性,并且是线性的,但是又不完全准确,再看一下训练的精度
calculate trained model:E0=0.3154 E1=0.2875
这里我只迭代了100次,读者可以迭代更多次观察收敛的精度,不过大概也就是这个精度了。
细心的读者可能已经察觉到了,我们的训练数据含有未来V的数据,这才是我接下来要讨论的重点:V是如何影响P的。
我们的模型假设是Y=WX+B,我们有n多个弱学习器,最后线性组合,那么可以得出最终的分类器的形势应该是Y=W'X+B'
接着我们对这个最终的分类器进行展开,根据MA(V,n)的计算方法,我们最终一定可以得到一个等式
K0*V0+K1*V1..............................+Kn*Vn + d=S, S是输出符号,d是拮据,这里提一下我们的编号,按照时序,发生的顺序,我们逆序编号
V21,v20................................v5,v4,v3,v2,v0
我们还可以精简上述等式,即K0V0+........K5V5 + M = S, 这里M根据每天不同是个常量,可见预测期的输出符号和成交量是线性关系,这也符合我们的假设。
对于模型的解释,我们的预测准确率大概在70%左右,高一点的可以达到80%,在线性模型下,这个准确率是很高的,那么我们的市场是不是线性的呢?
可见P涨V曾 P跌V缩发生的频率占据了70%左右的概率,那么就是说,上涨大概率上需要量的配合,无量的上涨是值得怀疑的。放量的下跌也是值得注意的。