股票策略03 | 基于机器学习的多因子策略

股票策略03 | 基于机器学习的多因子策略_第1张图片

量化策略开发,高质量社群,交易思路分享等相关内容

『正文』

ˇ

Adaboost算法介绍

提升算法的主要目的是将预测能力有限的单个弱学习器(例如决策树)组合 成一个集成强学习器。依据弱学习器的组合方式,可将集成学习算法分为两大种 类,一类为 Bagging 系列(并行方法),一类为 Boosting 系列(串行方法)。对于 多棵决策树,如果以 Bagging 的方式组合起来,可以得到上文中随机森林算法;如果以 Boosting 的方式组合起来,就得到了接下来的 AdaBoost 算法。

AdaBoost 算法基本原理

对于使用 Boosting 方式的集成算法有两个关键问题:1. 如何修正串行中每 一轮训练数据的权值;2. 如何将一组弱学习器组合成强学习器。

首先 AdaBoost 的做法[3]是提高那些被前一轮弱分类器错误分类样本的权值, 并降低那些被正确分类样本的权值。使得那些没有得到正确分类的数据,由于其 权值的加大而将受到后一轮弱分类器的更大关注。于是,分类问题被一系列的弱 分类器逐一解决。

其次 AdaBoost 采取加权多数表决的方法组合弱分类器。具体来说,加大分 类误差率小的弱分类器权值,使其在表决中起较大的作用,减小分类误差率大的 弱分类器的权值,使其在表决中起较小的作用。

策略逻辑

从A股中选择出市值最小的300只票(剔除上市短,ST,停牌票),获取这些股票的财务因子进行训练。从训练结果里再次选择出市值最小的前10只进行交易,每月第一个交易日选股,踢出不在池子里的,10只股票轮动。

模块导入

from __future__ import print_function, absolute_importfrom gm.api import *import datetimeimport pandas as pdimport numpy as npfrom sklearn.ensemble import AdaBoostClassifierfrom sklearn.model_selection import train_test_split

因子选择

市净率(PB),市现率LFY,市现率TTM,市盈率LFY,市盈率TTM,市销率TTM,

市值TOTMKTCAP

context.factor_names=['PB','PCLFY','PCTTM','PETTM','PSTTM','TOTMKTCAP']

获取数据

   # 当前时间    now = context.now       # 上一交易日    last_date = get_previous_trading_date(exchange='SZSE', date=now)    # 获取A股代码(剔除停牌股、ST股、次新股(365天))    all_stock,all_stock_str = get_normal_stocks(now)    # 获取所有股票市值,并按升序排序    fundamental = get_fundamentals_n('trading_derivative_indicator', all_stock_str, last_date, fields='TOTMKTCAP', count=1, df=True).sort_values(by='TOTMKTCAP')    # 获取前N只股票    symlist = list(fundamental.iloc[:300,:]['symbol'])    print("本次市场最小的股票池",len(symlist))

训练模型​​​​​​​

#训练模型的时间为20W,测试前5个月训练不交易,往后每月选股一次x_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=1)

特征重要性

股票策略03 | 基于机器学习的多因子策略_第2张图片

第一次训练的特征分布来看,市值和市净率权重较大。

股票策略03 | 基于机器学习的多因子策略_第3张图片

多次训练之后,市值这个指标依然是最重要的,其次是PB市净率。目前模型仅仅选择了6个因子,标签是目标收益率。

测试时间:2021年1月-2022年9月

股票策略03 | 基于机器学习的多因子策略_第4张图片

股票策略03 | 基于机器学习的多因子策略_第5张图片

股票策略03 | 基于机器学习的多因子策略_第6张图片

总结:

使用了较少的财务因子以及训练数据300只票以内,后面会丰富一些技术指标因子,增大训练数据。每月调仓较为迟钝,调整周度更加合理一些。同时考虑加上目前收益率平仓及止损平仓。没有加入其他的择时条件,加入一些技术指标的择时效果可能会更好一些。

本策略仅作学习交流使用,实盘交易盈亏投资者个人负责。

  你要的干货都在这里→关注V V“松鼠宽客”

松鼠宽客:研究04丨波动率与CTA盈利关键https://blog.csdn.net/m0_56236921/article/details/126655526?spm=1001.2014.3001.5502

松鼠宽客:Pro08丨累计概率密度突破策略https://blog.csdn.net/m0_56236921/article/details/126637398?spm=1001.2014.3001.5502松鼠宽客:KD01策略丨SuperTrend+空头波段https://blog.csdn.net/m0_56236921/article/details/126504676?spm=1001.2014.3001.5502

松鼠宽客:加降息与BTC流动性事件策略研究https://blog.csdn.net/m0_56236921/article/details/126136104?spm=1001.2014.3001.5502

 松鼠宽客:Pro_06丨重心拐点与高低波出场https://blog.csdn.net/m0_56236921/article/details/126704447?spm=1001.2014.3001.5502

松鼠宽客:基于订单流工具,我们能看到什么?https://blog.csdn.net/m0_56236921/article/details/125478268?spm=1001.2014.3001.5502


松鼠宽客:LM11丨重构K线构建择时交易策略https://blog.csdn.net/m0_56236921/article/details/125632587?spm=1001.2014.3001.5502

你可能感兴趣的:(股票,量化研究,量化交易,期货交易,策略研究)