百天计划之第29天,关于“AI智能量化,财富自由与个人成长”相关。
qlib框架使用暂时告一段落。
过去20几天,大家如果一起在学习的话,可以说已经掌握qlib的正确使用方式,甚至是定制与扩展,以及如何正确阅读它的代码。
我们要开始一个新的系列——机器学习在量化中的落地与实践。
当然基于的框架主体仍然是qlib,核心技能还是聚焦的。
机器学习,会涉及统计学、传统机器学习、深度学习以及强化学习。因子特征工程,自动调参等。
统计学用于解读样本,处理异常值。
数据质量对于算法模型非常重要,“数据质量决定结果的上限,而算法模型只是帮助我们逼近这个上限”。
统计学里还有时间序列分析相关内容也与量化投资有关。
机器学习我们会围绕sklearn以及集成学习(决策树为基础的集成学习),pytorch深度学习框架以及强化学习。
注意与qlib的学习类似,不能是一个fit, predict这么简单,而是要“借机器学习的能力,实现基于数字的洞察,进而支持决策”。投资本身就是一个基于信息的持续决策过程。
所以,对于机器学习,我们要知其然,更要知其以然。
01 传统的python量化
传统讲python量化的书,往往从pandas的统计功能讲起,什么描述性统计,推断统计,从学习入门的角度没问题,但离解决实际问题还远。我更建议的可行的切入方式是解决类似kaggle比赛里的问题,这些问题都源于生产,而且有很多人提交了真实有效的解决方案。于实战于学习能力,理解知识。
02 kaggle
kaggle是著名的算法“以武会友”的平台,不仅有资金,而且你若获得名次,是实力的表现,可以写到简历作为能力的象征的。google已经把kaggle平台给收了,也足见它在业内的影响力。
有数据,有代码,有讨论这就是非常好的闭环生态。
国内的比赛有阿里云的天池,这些命题和数据都源于实际生产环境,对于锻炼能力,构建机器学习技能很有帮助。
传统机器学习方式,要么直接找一份数据fit一个模型,要么从公式推导讲起,花里胡哨,但离实战终归太远,对于初学者,竞赛的方式是切入机器学习的极佳路径,即便在工作中,你都很难有这么多实战的机会。
kaggle这样的平台,不乏有业内大神团队参与和给出的解决方案,所以从中可以让自己的能力得到快速提升。
03 基础机器学习包sklearn
scikit-learn最新的版本是1.1.2。
qlib有这个依赖,如果已安装可以直接忽略;若未安装,可以使用如下安装指令:
pip install -U scikit-learn
03 hello kaggle
拿到一个题目,先对问题建模,同时完成baseline的搭建。
分类模型评价指标:精度、错误率,准确率,召回率,F1值,ROC/AUC
。
回归模型的评价指标:平均绝对误差,均方误差。
常用的模型有仨:线性模型(Lasso回归,Ridge回归),树模型(随机森林和梯度提升树【XGBoost, LightGBM, CatBoost】)和神经模型。
随机森林就是N棵决策树集体决策(Bagging的思想)。
04 qlib里的基准模型
xgboost:
model: class: XGBModel module_path: qlib.contrib.model.xgboost kwargs: eval_metric: rmse colsample_bytree: 0.8879 eta: 0.0421 max_depth: 8 n_estimators: 647 subsample: 0.8789 nthread: 20
转成代码调用:
def load_xgboost(): from qlib.contrib.model.xgboost import XGBModel config = { 'eval_metric': 'rmse', 'colsample_bytree': 0.8879, 'eta': 0.0421, 'max_depth': 8, 'n_estimators': 647, 'subsample': 0.8789, 'nthread': 20 } model = XGBModel(**config) return model
sklearn包里的模型,以及xgboost或者lightGBM这样的树模型包,作为baseline使用都非常容易。
机器学习难在数据预处理,特征工程,如何分析并调优参数等,这才是核心之关键。
小结:
本篇开个头,切入点是sklearn的使用,核心框架会聚焦在集成树模型上。
qlib对于模型都有baseline的实现,重点是在此基础上我们如何调优。
AI量化投资 = AI + 量化 + 投资。
三个技能集组成,核心是投资技能,量化是手段,AI+是工具。
量化框架选用qlib, AI+选择sklearn,集成树,pytorch还有强化学习。