写在前面

下面这篇文章的内容主要是来自发表于KDD2019的一篇文章《Investment Behaviors Can Tell What Inside: Exploring Stock Intrinsic Properties for Stock Trend Prediction》。这篇文章发现,职业基金经理们对于股票的共同投资行为可以反应股票的内在属性,从而基于此来提取股票属性的潜在特征,并进一步利用股票潜在特征对动态市场状态和趋势进行建模,从而生成股票与市场的动态相关性,然后将这种相关性与动态股票指标进行聚合,从而实现更准确的股票预测。原论文在文末进行获取。

1

摘要

股票趋势预测是预测股票未来价格走势的一种方法,在寻求股票投资利润最大化的过程中起着关键作用。近年来,越来越多的人在应用机器学习技术,特别是深度学习,来追求更有前途的股票预测。虽然深度学习已经有了很大的进步,但由于人类投资者对股票内在属性的理解仍然保持着领先地位。这篇论文提出通过提取和挖掘股票的内在属性以提高股票的趋势预测能力。具体来说,作者发现共同基金投资组合数据中的投资行为反映了专业基金经理对股票内在属性的共同信念,可用来提取股票属性的潜在表现以用于进一步的预测。因此,在提取股票属性的基础上,作者进一步提出利用股票表征对动态市场状态和趋势进行建模,从而生成股票与市场的动态相关性,然后将这种相关性与动态股票指标进行聚合,从而实现更准确的股票预测。最后,作者在真实股市数据上的大量实验证明了所提取的股票属性的有效性。

总而言之,这篇论文的主要贡献在于:

  • 基于同一基金经理持有的股票可能具有共同属性的原则,从共同基金组合数据中挖掘股票内在属性的表征。

  • 开发了一种新的深度学习框架,通过建模动态市场状态/趋势,将静态股票内在属性集成到动态股票预测任务中。

  • 通过实证证明了提取股票内在属性和相应的动态市场状态对真实数据的股票趋势预测的有效性。

2

模型介绍

提出的模型的整体框架如下图所示:

从投资行为中发掘股票内在特征

受观察到基金经理对不同股票内在属性的不同偏好的启发,作者提出通过挖掘基金经理集体在共同基金组合数据中的投资行为,学习股票内在特性的潜在表示。特别是,根据上述观察,同一基金管理公司的投资组合中所包含的股票更有可能具有共同的内在属性。据此,我们可以将共同基金投资组合数据转化为基金经理和股票的矩阵,并利用矩阵分解(Matrix Factorization)的方法提取每只股票的潜在向量,将其视为股票内在属性的表示。具体方式如下图所示,其中第 




 个基金经理的整体偏好特征向量为 









 ,第 




 个股票的内在特征向量为 









 ,第 




 基金经理对第 




 个股票的投资行为体现在 











 ,表示对该股票的投资份额。

矩阵分解被广泛应用于推荐系统、文本挖掘、计算机视觉等多种场景。因为它可以用来学习两种实体之间相互作用的潜在表示向量。在我们的任务中,给定一组已知的投资行为 




 ,通过求解下面的优化问题拟合训练数据,可以估计出参数 









 和 









 ,即股票和基金经理的潜在表示。

另外,在现实当中,也会有一些基金经理对某些股票的偏向作为先验知识,所以一些偏执项也被引入,因此,基金经理 




 对股票 




 的投资行为可以估计为:

这样,最后的优化目标定义为:

其中下面的正则项被引入来防止模型过拟合。

值得一提的是,基金经理的投资行为不仅取决于股票的固有属性,还取决于对股票动态走势的关注。换句话说,没有一个基金经理愿意投资一个下跌趋势明显的股票,即使它具有某些吸引他的属性。此外,在实际投资中,基金经理可能会投资其他多样化的股票,以减少有限股票的风险。因此,除了基金经理的固有偏好外,半年基金经理的投资组合还受到股票动态趋势和风险厌恶多样性的影响。对此,只要我们观察半年一次的共同基金组合数据,在足够宽广的时间段内,积累的投资行为可以放大基金经理的长期偏好,缓解短期趋势动态或多元化投资的影响,降低风险。这样,通过挖掘足够长时间范围内的共同基金投资组合数据,我们就可以安心地发掘股票的内在属性。

根据股票内在特征进行预测

在提取了股票的内在特征之后,接下来将进行通过股票内在特征来进行股票的预测。预测股票的未来价格趋势可以作为一个典型的机器学习问题,要么是一个价格趋势的分类任务,要么是一个价格收益率的回归任务。它们都是每只股票映射到某个特征空间,然后通过预测函数将其转换为其标签。这样子做每只股票都是一个独立的个体,因此,这篇文章的预测标签不是上涨或者下跌,而是将收益率作为目标分数,用于评判一只股票的收益能力。其目标函数是:

另外,考虑到股票市场具有强烈的时间动态特性,所以将股票的历史状态因素作为预测其未来趋势的因素是直观的。因此,大多数传统方法将动态输入,如每日价格和各种指标,输入到时间序列分析模型,如自回归模型,卡尔曼滤波器,技术分析等。近年来,随着深度学习技术的快速发展,深度神经网络,特别是循环神经网络已经在股票预测任务中得到了应用并产生了最先进的性能。因此,我们可以抽象出DNN方法在不失一般性的情况下,本质上是先将t时刻每个股票的动态输入,投影到一个动态的股票表示法 









 中,然后根据这个更高层次的表示法进行预测。虽然深度学习已经有了很大的进步,但人类投资者由于对股票内在属性的理解,仍然保持着领先地位。因此,将股票属性纳入当前的股票预测框架,以追求更准确的股票预测是十分有价值的。一种简单的方法是将股票属性的表示与动态表示结合在一起,形式上可以表示为下面的公式,其中 












 表示股票j的动态输入特征, 









 表示股票j的内在特征。

直觉认为市场代表应该反映市场对各种股票属性的当前偏好,我们提出了基于一组在某一天收益率最高的股票的日市场代表模型,考虑到收益率最高的股票可以反映最新的市场偏好。特别地,考虑到收益率最高的股票能够反映最新的市场偏好,市场代表性是通过对排名靠前的股票的代表性进行平均计算的。更正式地说,我们可以根据t时刻收益率在top-K内的股票表示来计算t时刻的市场状态 









这个过程如下图所示:

在有了这个市场表示之后,我们可以计算每个股票的股票属性和当前市场状态之间的相关性为:

以这样的方式实施预测会假设市场状态在连续两天保持一致,所以考虑到这一假设的局限性,根据历史市场状态建立未来市场趋势模型是非常重要的,而不是仅仅使用前一天的市场状态进行股票预测。为此,作者用到了LSTM对市场状态进行动态建模,即:

这样,将股票状态与市场的动态表示进行结合之后,就可以实现从t到t+1的预测了,整体的模型框架可以参考本章开头的模型整体框架进行梳理。

3

实验验证

在股票预测模型中,作者收集了2012 - 2016年中国股票每日价格和成交量的时间序列数据,总共有2000多只股票,覆盖了绝大多数中国股票。为了进一步生成动态指标,作者按照前面的研究计算了总共101个交易指标。为了有效提取股票内在属性,作者还收集了2012 - 2016年中国共同基金投资组合半年报告。下表是经过半年共同基金组合报告过滤后的基金和股票数量统计。在预测股票走势时,我们会过滤掉在收盘期内超过2%的交易日中处于暂停交易状态的股票。对于那些从未被任何基金投资的股票,用零向量进行表示。

用到的评估指标如下:

为了检验从共同基金组合中学习到的股票表示的效果,作者采用一些定性分析来评估学习到的股票表示是否能够捕获内在属性。具体地,基于它们各自的学习表示对所有股票进行聚类。下表显示了获得的2015年下半年股票集群的三个例子。从这个表中我们可以发现,第一个集群中所有的股票都属于基础产业,而第二个集群中所有的股票都与轻工业相关。此外,畜牧业和农业工业的大部分存货都聚集在第三个集群中。这样的聚类结果可以清楚地表明,从共同基金组合中提取的股票表示具有一定的内在属性。

下图是分别是提出的模型通过筛选Top50、Top100以及Top200后的每半年一次计算的MAP结果。

为了探究模型的盈利能力,文章选取了预测收益率最高的前50只股票组成投资组合,与对比方法得到的累计收益率图像如下图所示。从中可以看出,相比于其他的LSTM等对比方法,提出的方法具有明显更强的收益能力。

4

总结

这篇文章提出在股票预测任务中需要考虑股票的内在特性,以改进现有的基于动态输入的股票预测模型。本文有三个贡献:一是首次利用股票内在属性帮助投资者进行股票选择;其次,我们提出从共同基金组合中提取股票的内在属性;第三,我们建立了一个新的模型,以动态的方式使用静态的股票属性,通过衡量市场和股票之间的相关性来进行预测。未来,我们计划从其他有价值的数据中寻找股票的内在属性,并对市场状态模型进行专门的扩展。此外,我们将探讨更多有用的基金经理投资行为,以改进股票预测模型。另外,感兴趣的读者也可以参考该课题组之前发过的一篇paper,与该研究主题类似,那篇paper也有在本公众号进行过推送,解读:通过Stock Embedding的个股技术指标优化。

参考文献:

[1] Chen, C. ,  Zhao, L. ,  J  Bian,  Xing, C. , &  Liu, T. Y. . (2019). Investment Behaviors Can Tell What Inside: Exploring Stock Intrinsic Properties for Stock Trend Prediction. the 25th ACM SIGKDD International Conference. ACM.

关注《人工智能量化实验室》公众号,后台发送082可获取原论文。

了解更多人工智能与
量化金融知识

<-请扫码关注

让我知道你在看

解读:通过挖掘股票内在特征预测股票趋势相关推荐

  1. 解读:基于图卷积特征的卷积神经网络的股票趋势预测(文末赠书)

    写在前面 下面这篇文章的内容主要是来自2020年发表于Information Science 的一篇文章<A novel graph convolutional feature based co ...

  2. python支持向量机 股票_小蛇学python(4)利用SVM预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  3. python应用(3)svm模型预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  4. svm预测股价 python_小蛇学python(4)利用SVM预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  5. 基于Python实现LSTM对股票走势的预测【100010285】

    摘要 为对股票价格的涨跌幅度进行预测,本文使用了基于长短期记忆网络(LSTM)的方法.根据股票涨跌幅问题, 通过对股票信息作多值量化分类,将股票预测转化成一个多维函数拟合问题.将股票的历史基本交易信息 ...

  6. python 预测算法_通过机器学习的线性回归算法预测股票走势(用Python实现)

    本文转自博客园,作者为hsm_computer 原文链接:https://www.cnblogs.com/JavaArchitect/p/11717998.html在笔者的新书里,将通过股票案例讲述P ...

  7. python计算股票趋势_通过机器学习的线性回归算法预测股票走势(用Python实现)...

    1 波士顿房价数据分析 安装好Python的Sklearn库后,在安装包下的路径中就能看到描述波士顿房价的csv文件,具体路径是"python安装路径\Lib\site-packages\s ...

  8. matlab 股票 小波,小波分析 + 支持向量机(SVM)预测股票涨跌幅的实现

    刚刚开始进入量化投资领域,最近在做金融数据方面的预测,用到了数据挖掘的知识,花了大概半个月的时间搞懂研报的思想,学习研报中提到的数据处理和机器学习算法,并实现了这个量化投资的核心模型部分,虽然结果显示 ...

  9. python预测股票 keras_使用LSTM模型预测股价基于Keras

    本期作者:Derrick Mwiti 本期翻译:HUDPinkPig 未经授权,严禁转载 编者按:本文介绍了如何使用LSTM模型进行时间序列预测.股票市场的数据由于格式规整和非常容易获得,是作为研究的 ...

最新文章

  1. python中的点表示什么_Python里面这些点,新手看完之后完全不知道这些点
  2. Linux下找不到动态链接库
  3. 双端队列【deque】的常见用法
  4. easyui树拖拽排序java_项目中集成Easyui-Tree,可拖拽更新节点
  5. 刚刚,改造了下BaseDao……
  6. gptuefi优势_UEFI+GPT的区别,有啥不同?写的很详细易懂
  7. MySQL5.7 group by新特性,报错1055
  8. 收集一些.NET开发资源站点和部分优秀.NET开源项目 (转)
  9. 静态成员变量.xml
  10. 红蓝眼睛(答案在文章中找)
  11. 【pwnable.kr】 mistake
  12. 算数-02-史丰收算法
  13. matlab怎么求解多元非线性方程组,用matlab求解多元非线性方程组(多个方程组)问题...
  14. php后台视频教程,php实战开发电商后台视频教程 共6章
  15. 微信小程序中简单使用echarts图表
  16. echarts 5.x 版本词云无法正常显示问题
  17. MySQL的多表查询
  18. 如何判断并获取wordpress自定义用户角色名?
  19. Elasticsearch7学习笔记(中)
  20. vertical-align的用法

热门文章

  1. matplotlib 怎么画核密度
  2. 通灵学院|游戏设计研习6:制作谜题的原则★(1800字)
  3. intent传递较大数据的解决和intent不能传递较大数据的原因
  4. 新型的火灾报警系统设有多个设备联动的模式,其能够服务于智能化以及化的火灾报警
  5. 关于docker容器启动后修改或添加端口
  6. 【PHP注入01】PHP语言常见可注入函数(eval、assert、preg_replace、call_user_func、$a($b)等)
  7. 如何把e01挂载到系统上?
  8. 一种简单的贝塞尔插值算法
  9. 如何启用计算机睡眠功能,如何让电脑休眠_如何开启电脑休眠模式-win7之家
  10. epoll检测对端关闭