【Investment Behaviors Can Tell What Inside: Exploring Stock Intrinsic Properties for Stock Trend Prediction】
最近找到了其他的几篇写股票市场的论文,所以准备这几天把这些论文都写一写笔记。充分认识一下现在的对于资本市场的一些研究,今天这篇论文是讲资本市场上的一种Embedding的方式。
作者认为那些有经验的投资者会将股票分成不同的种类然后对于这些不同的种类进行分散资金。比如说有些股票属于周期性的股票而有些股票属于低风险的股票种类。其中都代表了不同的股票的内在的特征。而对于这些股票的特征的内在挖掘是至关重要的。那么如何挖掘呢?很简单的方法,利用深度学习里面的广泛运用的Embedding的方式就可以了。Embedding的方法除了我们广为接受的神经网络的方式,还有一种非常数学的表达的方式就是基于Spectral的Embedding,比如说LSI就是基于SVD的谱分解的方式。本文也是使用Matrix Factorization的方式获得了Embedding。
Approach
基于矩阵分解的方式自然是需要获得矩阵,那么这里的矩阵是哪些呢?作者获得了一个假设就是,在公募基金经理所操作的一系列的基金池之中的股票是具有相类似的性质的,这个假设是非常的有意思的哈。我简单的分析一下,公募基金之中主要可以分成两类的基金,一类基金是主动型的基金,会采用较强的策略去根据市场的情况进行一定的调整,还有一类基金叫做是被动型的激进,面对市场的调整的时候往往不那么会进行大的调整。对于被动型的基金来说,他们里面的股票往往都是符合某些性质的,比如说都是属于医药板块或者都是属于新能源板块的股票。甚至是有些基金是直接跟踪大盘的涨跌的情况而设置,这些被动型的基金之中肯定是有一些内在的逻辑存在的。而对于主动型的基金来说,那些在其中的股票也是满足一定的逻辑的,也就是在当前的不久的将来,会有很大的概率是上涨的,这个当然是根据基金经理的职业素养所判断的,但是基金经理的择股的标准肯定是比我们要厉害一些的。所以也可以认为在之中是存在着一定的内在的共性的。所以对于主动型和被动型的基金都可以认为其中会存在一些内在的逻辑,所以使用这个假设是一个蛮合理的选择。
根据每一个基金的持股的情况,我们可以得到一个向量,这个向量就是该基金在不同的股票上面的持仓情况。而如果对于每一个基金都进行这样的操作的话,就可以得到一个矩阵了。
这个矩阵就是最右边的那个矩阵,记作是$\Gamma$其中的entry表示的是该经理在这支股票上面的持仓的比例记作是$\gamma_{i,j}$,表示的是第$i$个基金在第$j$个股票上的持仓。
而通过矩阵分解的手段,可以获得两个矩阵,分别是基金的矩阵以及股票的矩阵。如果将经理$i$的Embedding记做是$p_{i}$,如果将股票$j$的隐向量记作是$q_{j}$那么目标函数的形式就可以写成是
$$\min_{p,q} \sum_{i,j}(\gamma_{i,j} – p_{i}^{T} q_{j} )^{2}$$
但是需要注意的是,在股市里面并非是没有Bias的,所谓的Bias可以看成是一些扰动项或者是无法归类到理性经济人假设之中的那些元素。由于市场并非是完全有效的一个机制,所以我们需要使用一些变量尽可能的多吸收这些Bias.所以作者引入了几个变量分别叫做是$\mu,\mu_{i}^{f},\mu_{j}^{s}$,其中的$\mu$表示的是无法归类的的那些扰动,而$\mu_{i}^{f}$可以看成是基金经理$i$的Bias,而$\mu_{j}^{S}$则是股票自身的Bias,通过这三个Bias就可以一定程度上的吸收市场之中的无法解释的现象,也就使得我们的Embedding可以更加的高质量。
$$\min_{\theta} \sum (\gamma_{i,j}- (\mu +\mu_{i}^{f}+\mu_{j}^{s}+p_{i}^{T}q_{j} ) )^{2} +\lambda ||\theta||$$
不过需要注意的是,在这里的获得的东西是一种类似时点数据的向量,而在市场上,特别是中国的股票市场上,除非是特别优质的公司,绝大多数公司的市场估值极大的受到了市场因素的扰动。如果是使用时点数字的话,很显然会落后于市场的表现。传统的做法是将在一个时间段的因子输入到RNN之中获得股票的一个动态的表示叫做$Z_{t}^{j}$然后将这个动态的表示和静态的时点数据一起作为输入丢进神经网络之中就OK了。
但是市场的动态程度往往并没有这么简单,上面仅仅是考虑了State但是市场是有另外的一个决定因素的,叫做Trend,而研究市场的趋势的学问也是非常的精深,叫做行为金融学,大家有兴趣的话可以去看看。
获得市场的动态的状态的方法非常的简单粗暴就是直接对于$t$时刻的收益率最高的$K_r$只股票的表示向量进行平均就可以得到在时刻$t$的市场的偏好程度$S_t$,然后使用市场偏好对于股票$j$的表示向量做内积就可以得到其市场状态。上面的这个操作也非常有趣啊,用深度学习里面的语言就是认为收益率最高的那些股票可以代表当前的市场的状态,而如何表示当前的状态呢?通过的是Average Pooling的方式得到当前市场的特征向量,然后每一个股票对于整个市场做Attention,得到当前股票的在市场上的受关注的程度。然后利用这个特征预测下下一时间段的特征。用LSTM表示就是
$$\hat{S}_{t} = LSTM(S_{<t})$$
然后使用$\hat{S}_{t}$与股票的表示$Q^{j}$做内积得到$\hat{D}_{t}^{j}$,然后与$Z_{t}^{j}$拼接输入神经网络即可,神经网络的输出是一个收益的排名的情况,记作$\hat{r}_{t}$。
然后与当前市场这个股票的真实的排名进行比较,得到下面的损失函数。
Experiment
作者的实验部分还是非常的漂亮的,最后的结果也是非常的漂亮。通过选择当前的市场的真实的Top 50的股票计算他们的累积的盈利的情况,以及选择我们的模型所预估的Top 50 收益的股票计算他们的累积的盈利的情况,画成曲线进行比较。stock_LSTM就是不存在利用各种基本面信息,仅仅是通过股票的历史的情况进行判断的情况,而通过测试可以发现,作者所提出的模型在最大回撤上是效果最好的。也就证明了这个模型的效果是最佳的。大家看到下图很有可能会迟疑,这里的LSTM的收益率是最高的,为什么在这里不是LSTM的收益率最好。需要注意的是,在这里的收益率只是模拟的收益率,你已经是全知全能的了,对于后面的股票的运作的情况在模型之中已经体现了,这里的LSTM的效果虽然好,不过可以其可以认为是一种所谓的过拟合的现象,而使用最大回测作为度量模型的标准的话,就可以知道模型在当前的市场上面的运行的稳健的程度。如果在瞬息万变的市场上无法稳健的运行,那么很少有人敢使用这样的模型吧。
Comments
看这篇论文感觉和自己的Idea又撞车了,可能是真的并没有很多的新东西和新技巧做吧。不过既然这篇文章也可以发KDD,岂不是说明我的那篇文章再改改也可以发KDD了?突然开心。不过这种对于股票市场进行预测的任务确实是一个非常的困难的任务,市场的变化是非常困难的,所以我选择的任务还算是一个简单的任务吧,也是蛮实用的任务嗷。
Reference
Comments
Leave a Comment