返回列表 发布新帖

多因子组合的AI策略--小白的成长

353 1
发表于 2024-4-3 14:02:09 | 显示全部楼层 阅读模式
背景

说来也很有趣,本人计算机毕业,写了十多年代码,无意之间接触到了量化领域,便开始了一系列的克肝之路

由于缺乏金融知识,甚至连K线图是什么都不知道的情况下,便开始了这场金融之旅。每天除了本质工作以外,一空阅读大量的基础金融知识,从最基础的知识入手,不断的学习大佬们的一些成熟经验。好在自己程序猿出生,Python的一些基础也终于坐到了信手拈来,一切觉得变得美好起来。


然而事与愿违,匮乏的金融知识在编写策略的时候被无限放大,拉跨的回测曲线一次次的打击我,也许就快放弃的时候,接触到了AI的知识,包括机器学习、深度学习,喜欢数学的我立马开始研究案例和研报,寻找大量的资料,终于,让我摸到了门槛(激动中)



因子的本地化计算

因子作为量化交易里非常重要的因素,直接决定量化策略的质量如何。每个因子都代表一些有效的(产生正超额收益,即最高分位)和无效的投资策略(产生负超额收益,即底部分位),因子之所以如此重要,是因为一旦认定一个因子具有投资价值,它就可以与其他因子相结合创建复杂的模型,从而产生强大且稳定的超额收益。

古语云工欲善其事必先利其器,在编写策略中我们花费了很多时间花在因子上,例如因子挖掘、因子计算、因子分析,因子组合、因子测试等等,所以好的工具尤为重要。好的因子以及相互组合,无论在传统策略,或者配合上AI模型(机器学习、深度学习),都会有一些不错的收益。目前量化平台上受限于技术平台(服务器资源,例如CPU、内存等因素),很多因子计算都需要自定义方法去做大量去计算,从获取基础数据、基础特征,再去计算因子值,这样的计算耗时耗力。那能不能通过简单的公式表达式去计算一些因子呢?

我这里给出一些示例:


  1. <blockquote>Factor1=close_0/ts_min(close_0,20)
复制代码
  1. Factor2=ts_max(high_0,3)/close_0
复制代码
  1. Alpha001=(rank(correlation((high_0+low_0+close_0+open_0)/4,volume_0,4))*rank(correlation(rank(low_0),rank(mean(volume_0,50)),12)))
复制代码

传统的方法计算factor1、factor2还行,计算这种alpha101中的因子是一个很棘手的问题,而且服务器的资源也是一大瓶颈(1核6G内存),因此我把因子计算拉到本地,用一套因子计算引擎,来解决这类的问题。

图片1.png

效果还可以,2013年~2023年的11年A股的全部数据,三个因子计算耗时在1min4s左右。

初入量化领域可能对因子的概念比较模糊,至少我当年刚开始的时候,几乎只知道一些择时、风控等方式,对于一些诸如alpha101因子有啥作用完全是懵逼状态,根本不知道怎么用。随着不断的研究、学习,才发现因子才是量化的一个基础。我们平时所用的一些条件其实都可以称作为因子,例如5日均价、macd的值,10日波动率等等。因子既然如此重要,所以计算、分析必须要有个趁手的工具才行。下面我就把本地化的因子研究来做个抛砖引玉,欢迎各个大佬批评指正。

例如有如下因子,我把因子值分为10个分位,把未来2日收益作为目标,查看此因子是否有不错的区分度。

微信图片_20240402223931.png

此时发现,1~10分位这几年的累计收益会有明显的区别,尤其是1分位和其他分位有着明显差距,那么此因子就可以拿来做过滤,取1分位(因子值的rank>0.9)来过滤,那效果因该还可以。过两天我会以此清洗来做个策略来测试下效果如何,各位朋友感兴趣的话可以关注后续。

AI模型的加持

对于新起的AI模型,我想很多人和我一样,抱着谨慎的态度去观望,我前后研究大概也有一两年时间,相对于传统策略,AI模型更像是一种玄学,然而捉摸不透才有意思,不是么?

本人程序员出生,从传统策略入门 ,因为没有金融学知识背景,发现这个传统策略异常困难,匮乏的金融知识直接导致策略难以盈利,甚至收支平衡都难以企及。难道真的没有办法了么?

无意间接触到了AI智能模型,从原理到案例阅读了上百次,最后选择了CNN卷积神经网络作为模型,相对于传统策略,这类卷积模型对因子的要求并不是很高,在传统策略中相对较弱的因子在CNN中效果还不错。因此靠着计算机基础和自己擅长的代码领域,通过大量的计算和分析做出了一个自认为还不错的AI策略。

微信图片_20240402162222.jpg

23年4月底开始到年底,收益还不错哈。今年一月开始的股灾已经空仓。

当然,基于深度学习的AI策略需要大量的计算,而且还需要大量的资源,因此只能把项目放在本地,有兴趣的朋友可以一起研究交流哈~

总结

本地化主要做了哪些事情我简单概述一下:

  • 数据本地化存储、数据每日更新(目前仅日频数据)
  • 因子计算公式化
  • 数据处理(空值处理、去极值、标准化)
  • 引用了一些经典的机器学习、深度学习模型
  • 本地的策略回测
  • 本地策略模拟、实盘

本地化代码研究当然少不了硬件加持,i9-14900K+128G内存,让代码飞起来~~

本地项目开发已经发布了beta版本,欢迎大家测试Bug!链接


评论1

*******1101_lhlMl
发表于 2024-4-17 17:45:00 | 显示全部楼层
大神好,能不能加个V

回复

您需要登录后才可以回帖 登录 | 立即注册

主题

2

回帖

0

积分

0

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2024 迅投QMT社区 版权所有 All Rights Reserved. 蜀ICP备19002686号-2
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表