Stock Embedding Acquired from News Articles and Price History, and an Application to Portfolio Optimization
这篇文章是ACL2020发表文章,他的研究方向是挖掘金融新闻,预测股价,并首次提出组合优化。本文主要就是简略讲一下我自己理解后的流程和计算。原文有些计算方法是分在两三个部分写的,我按照计算流程给它们整合了一下,并且我只挑了我觉得比较重点的部分写。所以看这篇文章可能需要先看看原文哦。
模型部分
模型主要分为两个部分,分别是文本特征蒸馏和价格运动分类。
Text feature distiller
这部分运用了key-value记忆网络,nK_i和nV_i分别表示文章的word Level 和 context level。
nK_i的计算:
其中,
γ_k = TF*IDF
TF=单词k在A文章中出现的次数/A文章中所有出现单词的次数和
IDF=log(第t天所有文章在corpus的总数/(所有corpus里含有单词k的文章+1))
nV_i:a BERT encoder.
因此,可以计算出一个score_(i,j)=nK_i*s_j,
其中,s_j是stock embedding。
接下来就可以计算attention score,α:
最后可以得到text feature distiller的输出market vector,mj _t(股票j,第t天):
Price movement classifier
m作为价格分类模型的输入,通过下面的流程图最后得到y,再做cross-entropy得到损失函数更新参数。其中 v_(τ-t)是hyper parameter(人工给定的参数)。
注:这里使用的新闻数据是(t-4,t)共5天的新闻。
与其他方法对比
本文与之前的一些新闻驱动的股票预测方法不同的地方在于,price movement classifier里是共享参数的(shared classifier),如β等。如Listening to chaotic whispers:A deep learning framework for news-oriented stock trend prediction里就是对某一天某一篇的新闻来做预测,参数都是重新更新的。
组合优化
组合优化部分,我认为是和前面分开来考虑的,他主要是对解决股票之间相关性的算法做了一些改变。投资组合中,两只股票相关性越高则风险越高,本文将传统的协方差模式更改为cosine,并且输入变为s_i和s_j来判断两只股票的相关性。cos(s_i,s_j)用于判断两只股票对同样的新闻是否有相似的反应。
Weighted BERT
在实验部分,我觉得比较难理解的就是weighted BERT方法了,所以这里单独说一下。
看下列计算流程图,通过对加权,把cos(s_i,s_j)变为cos(s*_i,s*_j)。
写的有点凌乱,因为时间有限,先写个初稿放着吧~