篇策略 篇研究 个想法
回测

决策树机器学习择时策略

2020-07-23 09:54:59 分享了策略 349 1 2

在前一篇报告中,我们采用了机器学习的Adaboost算法。在这一篇报告中,从决策树算法出发进行资产短期择时的建模。我们选择的因子也与前一篇相同。

全球金融市场每天产生海量的各类数据,如何筛选并有效利用这些数据来预测股票市场走势一直是一个重要的问题。短期择时面临的主要困难包括但不限于:

1、短期市场走势受情绪等因素影响较大 2、如何筛选有效因子,以及非线性因子如何建模 3、因子相关性问题 4、因子较多时如何避免过拟合

本报告中,我们将股市涨跌定义为一个分类问题,利用机器学习算法筛选大量因子数据并进行未来涨跌的建模。

本报告中,机器学习模型我们选择了决策树模型。我们利用29种日频因子数据(包含资金流动性,风险偏好,技术指标等)构建机器学习模型,对下一交易日对资产组合涨(1)跌(-1)做出预测。

以下正文,我们利用决策树模型进行了回测和对比。

一、决策树简介

决策树是一种常用的非参数监督学习模型。它是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类或回归结果。

我们以CART(Classification and Regression Trees)算法为例说明如何构建分类决策树。首先定义基尼系数,它代表了模型的不纯度,基尼系数越小,则不纯度越低,模型的分类能力越强。假设在分类问题中有$K$个类别,第k个类别的概率为$p_k$,则基尼系数表达式为: $$Gini(p) = \sum_{k=1}^{K}p_k(1-p_k)=1- \sum_{k=1}^{K}p_k^2$$ 因此,对于给定的样本D,假设第k个类别的数量为$C_k$,则样本的基尼系数表达式为: $$Gini(D) =1- \sum_{k=1}^{K}\left(\frac{C_k}{D}\right)^2$$ 特别地,对于而分类问题的样本D,如果根据特征A的某个值a,把D分为$D_1$和$D_2$两部分,则在特征A的条件下,D的基尼系数为: $$Gini(D, A)=\frac{D_1}{D}Gini(D_1)+\frac{D_2}{D}Gini(D_2)$$ 其中,D、$D_1$、$D_2$表示样本的数量。

\textbf{CART分类树构建流程}

输入:训练集,基尼系数阈值,样本个数阈值

输出:分类树T

从根节点开始,我们用训练集递归地建立分类树。

1、对于当前节点的数据集D,如果样本个数小于阈值或没有特征,则返回决策树子树,当前节点停止递归。 2、计算样本集D的基尼系数,如果基尼系数小于阈值,则返回决策树子树,当前节点停止递归。 3、计算当前节点现有的各个特征A的每个特征值a对数据集D的条件基尼系数。 4、在计算得到的所有特征的各个特征值对应的基尼系数中,选择基尼系数最小的特征A和对应的特征值a。根据这个最优特征和最优特征值,把数据集划分为$D_1$和$D_2$。 5、对左右子节点递归地调用1-4步,直至生成决策树。

二、回测流程

我们利用29种日频因子构建决策树分类器,对下一交易日的资产包涨(1)跌(-1)进行预测。为了模型的泛化性能,我们将决策树的深度设置为1,也就是仅有一个根节点和两个叶节点。

    银行间质押式回购利率,银行间同业拆借利率&中债国债到期收益率: 1年,中债国债到期收益率: 2个月,中债国开债到期收益率: 3年,中债国债到期收益率: 1个月,SHIBOR: 隔夜,SHIBOR: 1周&SHIBOR: 1个月,SHIBOR: 3个月&SHIBOR: 6个月,质押式回购利率,银行间同业拆借利率变化率(5天),银行间质押式回购利率变化率(5天),SHIBOR: 隔夜变化率(5天),SHIBOR: 1周变化率(5天),SHIBOR: 1个月变化率(5天),SHIBOR: 3个月变化率(5天),SHIBOR: 6个月变化率(5天)&南华商品期货指数&南华商品期货指数变化率(5天),标普500&标普500变化率(5天)&市场动量指数,市场交易量&WTI原油期货价格,WTI原油期货价格变化率(5天),黄金期货价格,黄金期货价格变化率变化率(5天)

使用决策树模型的优点非常多,首先,决策树模型可以根据多个因子作为预测节点,具有结合多个因子信息的能力。其次决策树具有拟合非线性因子的能力。最后,决策树的算法保证了它会优先选取预测能力强的因子作为节点,实现因子的自动筛选。

本模型基于上述的短期因子,通过多层决策树来预测下一交易日的涨跌并构建交易策略。

多层决策树择时模型的回测流程如下:

1、先通过网格交叉验证预训练选取最优的决策树模型超参数,如层深等参数。 2、取当前天到前300天的样本数据作为训练集,利用训练集进行训练,若之前一天的预测相同,则进行买卖操作。如,前一天的预测与今天的预测均为上涨,则做多资产,反之则卖出资产。 3、每天滚动重复第二步操作,直至回测结束。

建立多层决策树的模型,为了更好地判断,我们采用了选取主成分,特征等方法对29个因子进行整合。

准备回测所需要的数据。

如下,我们可以看一个简单的例子。

隐藏输出

回测效果如下。可以看出虽然没有非常突出的表现,但是较为稳健,避开了许多大跌的地方,属于比较稳健的策略。

隐藏输出
篇策略 篇研究 个想法