量化投资AI篇

发布于: 雪球转发:0回复:0喜欢:4

AI量化构建流程(8步)

一、确定优化目标

例如:以未来N日收益率为优化目标

因为收益率是一个连续变量,预测困难,所以一般把它转化成离散变量。预测目标值,我们一般用label指代。

比如一天的收益率上下浮动20%,分20个桶,每个桶的范围就是2%,通过简单映射关系,就可以得到20个label的值。

也可以简化成最简单的二分类问题,未来N日收益率为正,label=1,收益率为负,label=0。

二、确定数据源和时间范围

例如:用2015~2019的历史数据,去预测2020至今的股票走势。

数据源可以是沪深300创业板股票,白酒股票、自选股等等。

时间范围上需要注意的是特征使用的时间范围要早于label使用的时间范围。

例如:

【正确】用2015~2019的历史数据,去预测2020/2021的股票走势。

【错误】用2015~2019的历史数据,去预测2019的股票走势。

【错误】用2015~2019的历史数据,去预测2015的股票走势。

【错误】用2015~2019的历史数据,去预测2012的股票走势。

打个比喻,模型训练就像你平时练习一样,不会直接对着答案抄,而是先思考再作答,然后看答案,再修正,再思考、作答循环往复,这样正式考试也能比不练习的学生考得更好。如果只是把答案死背下来,即使做对了练习题,也不能在正式考试中取得好成绩。

三、提取特征

特征在量化模型中常常被称为因子。例如,

量价因子:收益、交易量、收益排名、交易量排名等

财务因子:应付账款、应收账款、现金比率、每股收益、销售毛利率、每股净资产等

换手率因子:平均换手率、换手率排名等

基本信息因子:公司成立天数、申万一级行业类别、是否属于沪深300指数成份等

资金流因子:主力净流入净额、大单净流入占比、平均净主动买入额排名等

股东因子:户均持股比例、户均持股比例半年增长率、股东户数等

估值因子:市净率、市盈率、市销率、总市值、流通市值等

技术分析因子:MACD、RSI指标、收盘价的5日简单移动平均值等

BETA值因子:BETA值(上证综指)、BETA值(所在行业)等

波动率因子:波动率等

基金经理也会综合考虑上述因子,但基金经理主要是凭经验,而量化模型是通过机器去学习各个因子的权重。

四、特征处理

特征有了,label有了,是不是就可以开始训练了呢?

有的模型可以直接进入训练,但有的模型还需要进行特征处理。

最常见的特征处理方式就是缺失数据处理和特征转化。

缺失数据处理:删除缺失数据行/列,填充0、最小值、最大值、平均值等。

特征转化:log变换、one-hot编码等。

五、模型训练、预测

1、准备两个不同时间段的带label的数据集,早些的作为训练集,晚些的作为测试集。

2、选择一种训练模型,把训练集扔进去,模型就会自动训练了。

常见模型有:logistic回归模型、xgb树模型、深度学习模型

个人比较喜欢用树模型作为排序模型,使用简单、预测速度快、可解释性强。

3、把训练好的模型和测试集一起扔进对应的预测模型,模型就会给每行记录一个分数。如果你的label是未来收益率,那么分数越高预示着这只股涨的概率越大。

六、设定离线评估指标、评估策略效果

模型结束,会自动给出一些评价指标,例如NDCG、AUC、F1值等,有的还会给出特征权重。

量化投资里常常用一段时间的回测来评估策略效果。

回测是利用测试集数据的模型预测结果编写策略,并用测试集的历史数据对策略进行校验的过程。

回测模块需要设定策略的每日交易逻辑。

初始化:设置本金、手续费、持仓天数(hold_days)、最大持股数量、每只股票占用的最大资金比例、股票的权重分(分数越高的股票权重越大)。

主函数:资金分配(每日预期使用 1/hold_days 的资金)、生成卖出订单(卖出持仓股中分数低的股票)、生成买入订单(按权重分买入分数高的股票)。

七、上线、评估结果

前一天晚上,模型会把买入/卖出股票的份额跑出来,第二天按指令就可以进行交易,每隔一段时间可以回测效果,迭代模型。