【机器学习】第四课:KNN算法

用户头像量化官方小助理
2023-03-07 发布

导语:

作为现在最为热门的一项技术,机器学习以及数据挖掘变得逐渐令人熟知。KNN分类算法作为机器学习中的很简单的算法已经被人所广泛应用。本文主要探讨KNN算法在金融量化投资领域的应用。这篇文章显示简单介绍了KNN分类算法并且向大家介绍如何用KNN分类算法来对股票进行多因子选股策略以及策略的回测结果。

KNN(k-Nearest Neighbours):

邻近算法,或者说KNN分类算法是数据挖掘分类技术中比较简单的方法之一,所谓K最邻近就是说每个样本都可以用它K个最近的邻居来代表。简言之,kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。 那么我们怎么定义离得近这个概念呢,我们引入欧式距离这个概念。欧氏距离:dij = 。因此我们可以根据样本间的欧式距离来定义远近。

KNN分类:

假设现在我们在二维坐标轴上有一系列点,我们用y=x将坐标轴分为两个部分,在y = x下方的我们认为是类别0,在y = x上方的我们认为是类别1,然后用图像将他们画出来,类别0为绿色,类别1为红色:

我们将这部分点坐标以及类别作为我们的训练数据,然后我们遍历所有剩下的点,利用KNN算法对他们进行类别预测,若预测类别为1,我们将点画成红色,为0画为绿色:

我们可以发现根据我们的训练数据以及KNN算法我们将所有数据清楚的分为了两类。此外KNN算法对于每个坐标点还有预测类别概率的功能,因此我们也可以利用概率来计算该数据点属于某个类别的可能性大小。

KNN多因子选股策略:

通过上面对于KNN的介绍,我们可以构架出一个简单的KNN分类选股策略,通过对筛选出的因子进行标准化操作,主要的标准化操作有两种,一种是最大最小标准化:x = (x-x.min)/(x.max-x.min)。另一种是高斯分布标准化:x = (x-x.min)/x.std。然后对训练集给与一个类别,把后20天上涨超过一定阀值的类别设为1,后20天上涨小于阀值的类别设为-1,然后用KNN模型对数据集进行训练,然后再根据KNN对测试数据的预测类别概率进行股票选择。

策略思想:

针对沪深300(000300.SH 沪深300)中的股票,选出7个因子(zdzb:ZDZB筑底指标,market_cap:总市值 ,obv:OBV能量潮 ,pe_ttm:市盈率TTM ,boll:BOLL布林线 ,pb:市净率 ,kdj:KDJ随机指标)作为训练样本特征属性,选择2013/01/07日的沪深300所有股票的七个因子数据作为特征值,并进行最大最小标准化操作,对于类别值以20天为基准,20日后涨幅超过阀值(2%)为1,反之为-1,然后利用KNN分类算法进行模型训练,然后每个回测日对当前一个交易日的沪深300所有股票的这七个因子先进行标准化操作,然后再用KNN模型预测,然后每日选出预测类别为1概率最大三只股票,若现在持仓的股票不在这三只股票中,则全部卖出,然后在等权买入这三只股票。(代码以及注释见附件)

回测结果:

初始资金:1000000

回测频率:每天

回测日期:2014-01-02——2015-01-01

评论

用户头像
2023-06-02 11:11:43

求代码

评论
用户头像
2023-06-24 23:08:32

求代码

评论
用户头像
2023-10-08 07:51:41

求代码

评论
用户头像
2023-10-17 18:44:39

求代码

评论

需要帮助?

试试AI小助手吧