用AlphaGo来做股票交易会怎样?机器学习预测股票靠谱么?

今天李世石已连续输掉了第二局,粗看下来,后面几盘似乎已没啥悬念了。无疑,这是一个伟大的时刻,也是个伟大的开始,超级智能机器在未来将会在人类生活中扮演更多更重要的角色。

资本市场,越来越多的量化策略与量化交易,越来越多的机器在介入,以前散户面对的是同样赤手空拳的空头,但现在我们面对的是高度智能的机器以及加杠杆的赌徒,以前跌一年,现在一周搞定,信息传播越来越快,人心预期转化也特别迅速,于我们,更需要理性,纪律与底线。

Alpha Go的优势:

  1. 无比强大的数据分析能力。对于公司的财务、行业的数据,未来的趋势,依据其建立的模型,肯定会有比人类更强大分析和推理能力。
  2. 无比强大的量化交易能力。现在很多交易模型,其实也是量化的,这个无需多说。
  3. 无比冷血的纪律。依据模型和计算,该卖就卖,该买就买,不会有任何情绪。估计能100%达到逆人性的要求。因为根本它就不是人。

对于Alpha Go的优势,完全对应的是人类的劣势,可以说不管是在分析、交易、纪律几个方面,人类都是完败的,而且没有任何赢的机会。

人类的优势:

  1. 创造力 机器对未来的分析是依靠数据,但人类的创造力是无穷尽的。正因为这个,是人类制造出了Alpha Go,而不是Alpha Go制造出了人类。比如次级债,比如借壳重组,这种游戏,这种为了追逐利润,人类在市场中伟大的发明创造,伟大的想象力,就是人类的优势。
  2. 对于人性的理解。 Alpha Go不是人,所以无法理解人性。财色君认为,投资中一切都是虚无的,唯有人性是永恒的。Alpha Go也许可以量化出走势,量化出未来,但却无法量化人性。

两者互不,我们才能在交易中不败。下面讲点技术性的,怎么用机器学习预测股票走势,这只是一个入门介绍。我们用的模型远比下面的复杂。

机器学习是什么?

简单说:机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。

用一张图说明它所包含的内容:

我们把目光集中到上图中的有监督学习,它是指数据中包括了我们想预测的属性,有监督学习有以下两类:

  1. 分类(Classification)——样本属于两个或多个类别,我们希望通过从已标记类别的数据学习,来预测未标记数据的分类。例如,识别手写数字就是一个分类问题,其目标是将每个输入向量对应到有穷的数字类别。从另一种角度来思考,分类是一种有监督学习的离散(相对于连续)形式,对于n个样本,一方有对应的有限个类别数量,另一方则试图标记样本并分配到正确的类别。
  2. 回归(Regression)——如果希望的输出是一个或多个连续的变量,那么这项任务被称作回归,比如用年龄和体重的函数来预测三文鱼的长度。

scikit-learn

scikit-learn是一个基于NumPy、SciPy、Matplotlib的机器学习包,主要涵盖了分类、回归和聚类等机器学习算法。例如knn、SVM、逻辑回归、朴素贝叶斯、随机森林、k-means等等,简言之:是一只强大的轮子。

有个很好耍的例子:安德森鸢尾花品种亚属预测。

我们有一百五十个鸢尾花的一些尺寸观测值:萼片长度、宽度,花瓣长度和宽度。还有它们的亚属:山鸢尾(Iris setosa)、变色鸢尾(Iris versicolor)和维吉尼亚鸢尾(Iris virginica)。我们使用这些数据,从中学习并预测一个新的数据。在scikit-learn中,通过创建一个估计器(estimator)从已经存在的数据学习,并且调用它的fit(X,Y)方法。

代码如下:

看不懂代码没关系,这里的输出结果:array([0])。

即学习结果认为,萼片长度、宽度,花瓣长度和宽度观测值分别为5.0, 3.6, 1.3, 0.25的安德森鸢尾花的亚属为山鸢尾(Iris setosa)。

我的目标是亲自实现验证体会机器学习做市场预测这一构建过程,顺带瞧瞧这玩意儿是不是文献或是研报中“传说”的那么神或是然无卵。

那么,机器学习在量化金融方面怎么用?比如说,预测股票这件事儿靠谱么?

首先,我们得熟悉我们的数据。获取过去十年CSI300指数原始数据(代码开发环境 Ipython Notebook):

df = rd.get_price('CSI300.INDX', '2005-01-01', '2015-07-25').reset_index()[['OpeningPx', 'ClosingPx']]

有了开收盘价格后,我们把原始数据这般那般后,有了下面三张图。

图一:过去近2500个交易日,当天是涨是跌天数的统计

图二:每日收益率随时间序列的变化

图三:涨跌天数的频率分布

有兴趣的盆友可以仔细看看图,里面有很有趣的东西。熟悉了数据之后就可以正式开工了,我主要从以下三点来做些尝试:

  1. 机器学习估计器的选择,即我们使用何种方法进行我们的预测。
  2. 训练集样本数量的选择,即我们每次预测结果之前使用多少条训练集合的样本。
  3. 涨跌时间窗口的选择,即我们每个样本中的特征个数,我们训练集每个单元包含连续多少个交易日的涨跌。

下面具体说:

1、根据手头数据的情况及scikit-learn: machine learning in Python中下图所示的引导:

我们选择比较RandomForestClassifier、LinearSVC、KNeighborsClassifier,结果如下:

可以看出,KNeighborsClassifier表现明显逊于RandomForestClassifier、LinearSVC,它的波动较大且胜率与另外两者比也不理想。这结果与JMLR的一篇神奇文章有点类似:《 Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?》,文章测试了179种分类模型在UCI所有的121个数据上的性能,发现Random Forests 和 SVM 性能最好。

2、训练集样本数制约了预测结果的准确性,理想情况下,我希望每次做预测的样本数越多越好,但你知道理想很骨感的,训练集样本数一方面受实际总数据量限制。

另外,计算资源与时间也是制约因素。我们最终要形成某种程度的妥协,即保证相当程度预测效果下选择最小的训练集样本数量。于是我们计算样本数从1~300范围内的胜率,结果如下:

可以看出,控制其它条件不变,随着样本数增多,胜率逐步提高结果更为稳定并且最后维持在0.52~0.53左右波动。为了节约计算资源及考虑到历史数据总量,我们可以选择100个作为训练样本数。

3、涨跌时间窗口选择。实际上反映了交易日历史的涨跌对下一个交易日的影响。

这个动量是否客观存在?我认为从交易心理上说还是有一定依据的,比如作为交易者如果过去一连10个交易日全部飘红,对于后一天的走势我更愿意谨慎看空。当然,这是个极端的臆想,归根结底的表现怎么样,还是要看数据给的答案:

这样的结果让人抓狂,有点看乱码的感觉。后来我改变了每次回测的起点之后发现,基本每次结果都差不多。一个共同点是:每次曲线的开端都会存在倒塌式下滑,而后稳定震荡于0.5扔硬币的概率左右。

也就是说,动量是存在的,只不过很小(结合前面两节的试验结果其期望处于0.53这个位置),且时间窗口很短,超出这个时间窗口,预测问题就转化为扔硬币问题。

上面只是对机器学习在金融市场的预测应用做的一个小试验,综合三张图的结果来看。其实概率还能勉强说比纯抛硬币好那么一丢丢(低于0.5的情况并不多见,调试程序的时候发现0.53是个神奇的数字),但这毕竟是快速自己实现的一个小Demo。可以想像,如果有更优秀的算法,更丰富的数据,更合理的特征选择,意想不到的结果也会是情理之中。

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2016-03-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Albert陈凯

机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1)

机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1) 注:机器学习资料篇目一共500条,篇目二开始更新...

3208
来自专栏IT派

一文厘清机器学习、深度学习、统计与概率论的区别

除了风格与Supervised/Unsupervised Learning截然不同的Reinforcement Learning以外,大家虽然知道机器学习已不再...

1000
来自专栏数据科学与人工智能

【陆勤推荐】想入门机器学习、数据挖掘,我该怎么做?

想入门机器学习、数据挖掘,我该怎么做?我自己是本科数学出身,本科毕业的时候,我并不知道什么是机器学习,也没有写过大型程序,更不要说去搞一个机器学习的算法和实践了...

1925
来自专栏新智元

【1996~2016】盘点 20 年 AAAI 人工智能最佳论文

【新智元导读】新智元汇集计算机科学领域1996年到2016年人工智能领域最佳论文,附上题目及摘要的中文翻译,并对这些作品进行系统考察,从中可以看出人工智能这门学...

3889
来自专栏QQ大数据团队的专栏

神盾推荐——MAB算法应用总结

2944
来自专栏AI科技评论

学界 | KDD 2018:滴滴提出WDR模型显著提升ETA预测精度

AI 科技评论按:国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共收录 293 篇,录取率不...

1062
来自专栏新智元

【干货】二值神经网络:让 AlphaGo 能在手腕运行

赢得围棋人机大战的AlphaGo为了运行神经网络,用了280块GPU,功率超过一百个李世石[1]。 这种使用浮点计算的神经网络要求的大存储空间和大计算量,严重阻...

36216
来自专栏小樱的经验随笔

【资料分享】500篇干货解读人工智能新时代

500篇干货解读人工智能新时代 本文主要目的是为了分享一些机器学习以及深度学习的资料供大家参考学习,整理了大约500份国内外优秀的材料文章,打破一些学习人工智能...

3184
来自专栏新智元

【AI玩跳一跳终极奥义】首个端到端神经网络,看AI在玩游戏时注意什么

作者:Flood Sung 编辑:费欣欣 【新智元导读】不用传统外挂,训练纯深度学习AI来玩跳一跳,结果会如何?本文作者使用模仿学习,训练了一个端到端的神经网络...

3797
来自专栏大数据挖掘DT机器学习

机器学习,数据挖掘在研究生阶段大概要学些什么?

作者:豆豆叶 中国科学技术大学数学系 机器学习,数据挖掘在研究生阶段大概要学些什么?能给一个梗概或者方向么? 这是一个很难回答的问题,每个人的基础不同起点也...

44010

扫码关注云+社区