【论文研读】【金融】Predicting the direction of stock market prices using random forest

本文仅仅为个人快速阅读记录。推荐另一篇博客:《研究分享:用随机森林预测股价走势》

😄 😆 😊 😃 😏 😍 😘 😚 😳 😌 😆 😁 😉 😜 😝 😀 😗 😙 😛 😴 😟 😦 😧 😮 😬 😕 😯 😑 😒 😅 😓 😥 😩 😔 😞 😖 😨 😰 😣 😢 😭 😂 😲 😱

随机森林


Abstract

Key Words

随机森林分类器,股票价格预测,指数平滑,特征提取,OOB误差和收敛。

1. Introduction

2. Related Work

3. Methodology and Analysis

本文使用的学习算法是随机森林。对时间序列数据进行获取、平滑处理,提取技术指标。技术指标是预测未来股票价格行为的参数。然后使用这些技术指标来训练随机森林。

3.1 Data Preprocessing

首先对时间序列历史股票数据进行指数平滑。指数平滑法对最近的观测应用更多的权重,对过去的观测应用指数递减的权重。序列 Y Y Y的指数平滑统计量可以递归计算为:

S 0 = Y 0 (1) S_0 = Y_0 \tag1 S0=Y0(1)

f o r    i > 0 , S t = α ∗ Y t + ( 1 − α ) ∗ S t − 1 (2) for ~~ i>0,S_t = \alpha*Y_t+(1-\alpha)*S_{t-1} \tag2 for  i>0,St=αYt+(1α)St1(2)

其中, α \alpha α为平滑因子, 0 < α < 1 0 < \alpha < 1 0<α<1。较大的 α \alpha α值会降低平滑程度。当 α = 1 \alpha= 1 α=1时,平滑后的统计量与实际观测值相等。只要有两个观测值,就可以计算出平滑的统计量 S t S_t St。这种平滑消除了历史数据中的随机变化或噪声,使模型能够容易地识别股票价格行为中的长期价格趋势。然后从指数平滑的时间序列数据中计算技术指标,这些数据随后被组织成特征矩阵。 i t h i^{th} ith天预测目标计算如下:

t a r g e t i = S i g n ( c l o s e i + d − c l o s e i ) (3) target_i = Sign(close_{i+d}-close_i)\tag3 targeti=Sign(closei+dclosei)(3)

其中 d d d是预测将要进行的天数。 t a r g e t i target_i targeti值为 + 1 +1 +1时,表示 d d d天后价格有正的变动, − 1 -1 1表示 d d d天后价格有负的变动。 t a r g e t i target_i targeti值作为标签分配到特征矩阵的第 i t h i^{th} ith行。

3.2 Feature Extraction

采用的技术指标如下:

  • Relative Strength Index
  • Stochastic Oscillator
  • Williams %R
  • Moving Average Convergence Divergence
  • Price Rate of Change
  • On Balance Volume

介绍略。。。

3.3 Test for linear separability

在将训练数据输入随机森林分类器之前,通过寻找两类数据的凸壳来测试它们的线性可分性。线性可分性是一个属性的两组数据点两组是线性可分的,如果存在一个超平面,这样所有的点在一组位于超平面的一侧,另一组中的所有点躺在另一边的超平面。

在数学上,如果存在超平面的 n n n维法向量 W W W和标量 k k k,使得 n n n维欧氏空间中的两组点 X 0 X_0 X0 X 1 X_1 X1被称为是线性可分的,使得每个点 x ∈ X 0 x \in X_0 xX0给出 W T x > k W^Tx > k WTx>k,每个点 x ∈ X 1 x \in X_1 xX1给出 W T x < k W^Tx < k WTx<k。可以通过构造它们的凸包来检查两组点的线性可分性。

一组点 X X X的凸包是它的子集,它形成包含 X X X中所有点的最小凸多边形。如果连接多边形上任意两点的线也位于多边形上,则称多边形为凸多边形。为了检查线性可分性,构造了两类的凸包。如果凸包彼此相交,那么类被称为线性不可分的。进行主成分分析,将提取的特征降维为二维。这样做是为了凸包可以很容易地在2维可视化。凸包测试表明,由于凸包几乎重叠,类不是线性可分的。这一观察得出结论,线性判别分析不能应用于我们的数据分类,因此,为为什么使用随机森林分类器提供了更强的理由。另一个重要的原因是,由于森林中的每个决策树都在特征空间的随机子空间上操作,这导致自动选择最相关的特征子集。在讨论射频算法之前,我们将在下一节中查看一些关键定义。

3.4 Key Definitions

假设有 n n n个数据点 D = { ( x i , y i ) } i = 1 n D=\{(x_i,y_i)\}^n_{i=1} D={(xi,yi)}i=1n和特征向量 { x i } i = 1 n \{x_i\}^n_{i=1} {xi}i=1n,每个特征向量为 d d d维。

  • Definition 1: 定义了一个分类树,其中每个节点进行二元决策 i f   x i < = k if~ x_i<=k if xi<=k,其中 k k k为阈值。最顶端节点包含所有样本。细分直到节点只包含一个类。每一个节点都有一个特征,通过使得子节点之间的差异最小化选择 x i x_i xi与阈值 k k k。这通常被称为基尼不纯度(gini impurity)。
  • Definition 2: X = { X 1 , . . . , X d } X=\{X_1,...,X_d\} X={X1,...,Xd}为一串随机变量,称为随机向量。 X 1 , . . . X d X_1,...X_d X1,...Xd的联合分布 is a measure on μ \mu μ on R d R^d Rd μ ( A ) = P ( X ∈ A ) , A ∈ R d , w h e r e   d = 1 , . . . , m \mu(A)=P(X \in A), A \in R^d, where ~d=1,...,m μ(A)=P(XA),ARd,where d=1,...,m。例如令 x = { x 1 , . . . , x d } x=\{x_1,...,x_d\} x={x1,...,xd}为一串数据点,每个特征 x i x_i xi都为具有某种分布的随机变量。那么随机向量 X X X x x x有相同的联合分布。
  • Definition 3: h k ( x ) = h ( x ∣ θ k ) h_k(x)=h(x|\theta_k) hk(x)=h(xθk)代表了决策树的分类器 h k ( x ) h_k(x) hk(x)。决策树就是一系列分类器 h ( x ∣ θ 1 ) , . . . , h ( x ∣ θ k ) h(x|\theta_1),...,h(x|\theta_k) h(xθ1),...,h(xθk)组成。使用从随机向量 θ \theta θ中随机选取的 θ k \theta_k θk构建决策树。对于每一个分类器, h k ( x ) = h ( x ∣ θ k ) h_k(x)=h(x|\theta_k) hk(x)=h(xθk)为predictor, y = ± y=\pm y=±为输出。

3.5 Random Forest

节点 N N NGini impurity定义为:

g ( N ) = ∑ i ≠ j P ( w i ) P ( w j ) (12) g(N)=\sum_{i\neq j}P(w_i)P(w_j) \tag{12} g(N)=i=jP(wi)P(wj)(12)

其中 P ( w i ) P(w_i) P(wi)是具有 i i i类标签的比例。

节点 N N Nentropy定义为:

H ( N ) = − ∑ i = 1 i = d P ( w i ) l o g 2 ( P ( w i ) ) (13) H(N)=-\sum_{i= 1}^{i=d}P(w_i)log_2(P(w_i)) \tag{13} H(N)=i=1i=dP(wi)log2(P(wi))(13)

其中 d d d为类的数量, P ( w i ) P(w_i) P(wi)是具有 i i i类标签的比例。当所有类以相等的比例包含在节点中时,entropy最高。当一个节点中只有一个类时最低。

最佳分割的特征是信息增益最高或impurity减少最多。由于分割导致的信息增益可以计算如下:

△ I ( N ) = I ( N ) − P L ∗ I ( N L ) − P R ∗ I ( N R ) (14) \bigtriangleup I(N)=I(N)-P_L*I(N_L)-P_R*I(N_R) \tag{14} I(N)=I(N)PLI(NL)PRI(NR)(14)

PS:这里可能是原文写错了。

其中, I ( N ) I(N) I(N)是节点 N N N的杂质测度(Gini impurityentropy), P L P_L PL是节点 N N N中分裂后留给节点 N N N左子代的样本比例, P R P_R PR是节点 N N N中分裂后留给节点 N N N右子代的样本比例。

4. Tracing the RF algorithm

4.2 Trace output

这里应该注意的是,我们的算法随着森林中树的数量的增加而收敛。为了证明收敛性,我们计算了分类器相对于苹果数据集的袋外(OOB)误差。在下面给出的表格中,第一列表示时间窗,在该时间窗之后进行预测,第二列表示森林中的树的数量,第三列表示所使用的训练样本的大小,最后一列是OOB误差率。

正如所观察到的,错误率随着森林中树的数量的增加而降低。关于误差率和收敛的更多细节将在下一节讨论。

5. OOB error and Convergence of the Random Forest

5.1 Random forest as ensembles: An analytical exploration

5.2 OOB error visualization

对于原始训练集 T T T中的每个训练样本 Z i = ( X i , Y i ) Z_i= (X_i,Y_i) Zi=(Xi,Yi),我们选择不包含 Z i Z_i Zi的所有袋装集 T k T_k Tk。该集合包含引导数据集,该引导数据集不包含来自原始训练数据集的特定训练样本。这些集合被称为出袋示例。原始训练数据集中每 n n n个数据样本有 n n n个这样的集合。OOB误差是每个子计算的平均误差,使用的是在各自的自举样本中不包含子的树的预测。OOB误差是对广义误差的一种估计,它衡量随机森林预测以前看不到的数据的准确性。我们使用AAPL数据集绘制了随机森林分类器的OOB错误率

从上图中可见,随着森林中树木数量的增加,OOB错误率急剧下降。最终达到了OOB误差率的极限值。该图显示,随着森林中树木数量的增加,随机森林会收敛。这个结果也解释了为什么随机森林不会随着更多的树木被加入到集合中而过度砍伐。

6. Results

使用我们的模型产生的预测结果,我们可以决定是否购买或出售我们的股票。如果预测是+1,这意味着价格预计在n天后上涨,那么建议的交易决定是购买股票。然而,如果预测是-1,这意味着价格预计在n天后下跌,建议的交易决定是出售股票。

任何错误的预测都会给交易者带来巨大的损失。因此,应该对模型的robustness进行评估。用于评估二进制分类器robustness的参数是准确度accuracy、精确度precision、召回率recall(也称为灵敏度)和特异性specificity。计算这些参数的公式如下:(略)

。。。

Accuracy衡量所有测试样本正确分类的部分。Recall(也称为敏感度)衡量分类器正确识别阳性标签的能力,而specificity衡量分类器正确识别阴性标签的能力。precision衡量的是被归类为阳性标签的样本群体中所有正确识别样本的比例。我们使用AAPL、通用电气数据集(在纳斯达克上市)和三星电子有限公司(在韩国证券交易所上市)计算未来1个月、2个月和3个月预测模型的这些参数。结果如下表所示:

Fig 6: Results for Samsung datasetFig 7: Results for Apple Inc. datasetFig 8: Results for GE Dataset

6.1 Receiver Operating Characteristic

接收器操作特性是一种评估二进制分类器性能的图形化方法。通过绘制不同阈值下的真阳性率(灵敏度)与假阳性率(1 -特异性)的关系曲线来绘制曲线。ROC曲线显示了敏感性和特异性之间的权衡。当曲线更接近ROC空间的左边界和上界时,表明测试是准确的。曲线越靠近顶部和左侧边界,测试就越准确。如果曲线接近ROC空间的45度对角线,说明测试不准确。ROC曲线可以用来选择最优模型,丢弃次优模型。

Fig 9: ROC curves corresponding to AAPL datasetFig 10: ROC curves corresponding to GE datasetROC curves corresponding to Samsung dataset

从ROC曲线可以看出,90天模型是最优模型。ROC曲线下的面积是评估二元分类器性能的一个非常重要的参数。精确度是通过ROC曲线下的面积来衡量的。面积为1代表优秀的分类器;为0.5的区域表示产生随机输出的无用分类器。换句话说,该区域衡量的是区分度,即分类器在我们的问题中正确分类股票价格正移和负移的能力。对于使用所有三个数据集的所有三个模型,ROC曲线下的面积都大于0.9。这意味着我们的分类器非常优秀。

7. Discussion and Conclusion

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值