导语:
作为机器学习早期的经典算法,逻辑回归模型已经被人所广泛应用,尤其是在利用概率分类的问题上。本文主要探讨逻辑算法在金融量化投资领域的应用。这篇文章显示简单介绍了逻辑回归并且向大家介绍如何用逻辑回归算法来对股票进行多因子选股策略以及策略的回测结果。
逻辑回归(Logistic Regression):
在我们对数据进行分类的时候(以二分类为例),我们只定义两类(0,1),很明显这是一个离散值,假如我们想利用一个算法得到一个连续值,比如得到某个类别的概率,如果概率大于0.5,我们认为分为类别1,如果小于0.5,我们认为分为类别0,我们可以很容易想到Sigmoid函数(y = ):
我们可以看到,Sigmoid函数将z值转化为一个接近0或者1的y值,并且其输出值在z=0附近变化很陡。如果我们假设y代表类别为1的概率,那么此函数的实质就是根据属性数据,判别该数据属于类别1的概率。如果我们定义函数z =,我们可以看出,其实逻辑回归是由线性模型构成的,是一种利用线性回归帮我们做出0,1判断,而通过变换函数z=ln
,如果把y看做1的概率,那么线性函数表达的是1的概率和0的概率的对数几率。LR(Logistics Regression)分类器的目的是从训练数据中学习出一个0/1分类模型,这个模型以线性组合作为自变量使用逻辑函数将 其映射到(0,1)上。因此我们可以定义对于特征向量X来说其属于类别1和0的概率分别为:
因此我们要判别特征值属于哪个类的时候我们先利用求出一个z值然后求出y,如果y大于0.5就属于1类,如果y小于0.5就属于0类,所以我们寻列的目的就是求出参数W以及b。
逻辑回归的简单数学推导:
我们令fw(x) =
现在我们n个观察样本观察值向量为Y所以我们能够得出:
由于各项相互独立所以我们利用极大似然发来估计参数W:
=
最大似然估计就是使得上述值得到最大的W,我们现在令J(W)=-l(W)/n,这样我们就将原问题转化成了求J(W)的最小值,我们可以利用梯度下降法:
=
*i为第i个样本,j为第j个属性,表示步长
我们可以不断计算新的W(j),并且迭代到J(W)中只到收敛,或者某一步减少的值少于某个很小的值。
逻辑回归策略思想:
通过上面关于逻辑回归的简略介绍,我们能够得出大致以概率为基础去选择成为类别1(上涨)概率大的股票作为我们的买入列表。 策略思想:针对沪深300(000300.SH 沪深300)中所有股票,选出7个因子(zdzb:ZDZB筑底指标,market_cap:总市值 ,obv:OBV能量潮 ,pe_ttm:市盈率TTM ,boll:BOLL布林线 ,pb:市净率 ,kdj:KDJ随机指标)作为训练样本特征属性,然后对于每一个回测日,取出回测日前四十一个交易日的沪深300所有股票这七个因子进行标准化操作作为训练集特征值,对于类别值以20天为基准,20日后涨幅超过阀值(2%)为1,反之为-1,然后利用逻辑回归对训练集进行训练,然后利用训练好的模型对当前回测日的前一个交易日的这七个因子数据先进性标准化再进行类别概率预测,并且调整调仓周期为20天,每个调仓日选出类别为1概率最大的三只股票,如果当前持仓股票不在这三只股票当中则全部卖出,然后等权买入三只股票。
回测结果:
初始资金:100000
回测频率:每天
回测日期:2016-04-01——2017-04-01
思考:
对于机器学习算法我们应该不断地思考如何能够将其优化,这次逻辑回归在之前的随机森林的基础上增加了循环model fit的优化,但是我们仍然有很多东西可以优化比如说分类阀值(n天后的涨幅),调仓频率,此外对于机器学习模型有一个很重要的需要优化的点-参数我们在三个模型中都没有进行优化,而对于机器学习模型参数的优化主要是利用交叉验证进行循环取最优结果。之后的章节我们将对这一点进行讨论。