2023年来市场的风格再次发生大的变化,今年的市场主要围绕ChatGPT引领的人工智能浪潮与“中特估”两条主线展开,传统的基本面模型基于历史的基本面信息或者分析师一致预期变化的维度较难取得明显的超额收益,故此,我们尝试从新的角度来做研究,脱离传统的基于纯粹的基本面和简单量价信息的思维,结合时代大环境从人工智能辅助投资的大方向来进行尝试。 构建ChatGLM因子 首先利用ChatGLM对分析师研报的文本数据进行情感打分并进行分类,以此获得初始的分类标签。其次,利用初始的分类便签与对应的研报文本数据对Bert模型进行微调获得所需的预测模型参数。对于微调后的模型及参数,我们将样本外的研报文本数据输入并提取其中的【CLS】向量,以此作为后续模型的输入样本。最后,我们使用Xgboost模型采用过去半年的样本作为训练数据滚动训练,来对未来一年的个股研报进行情感预测打分,并将过去三个月的所有样本计算平均作为个股的研报情感得分。 Chatglm_factor原始因子测试 Chatglm_factor研报情感因子与Barra风格因子中的动量因子的相关性较高(0.43)。IC统计结果发现该因子的IC大于0占比均超过60%、IC的t检验显著。该因子IC均值、中位数均大于0.03。另外,其IC时间序列可以看出该因子在历史上的表现相对较稳定。从分组测试的结果来看,其得分最高的第10组年化收益可达19.92%,信息比率1.05,年化超额收益8.5%,另外双边换手率年化仅10.42。其多空分组的测试结果来看,多空分组的年化收益达16%,夏普比率1.19,最大回撤22%主要发生于22年下半年市场整体出现大回撤区间。 Chatglm_factor纯因子测试 我们对Chatglm_factor因子进行纯化,纯因子历史IC大于0的占比提升到86%,IC的t统计量为8.88非常显著。另外,年化IC_IR由之前1.01提升到2.93。 纯化后的因子IC表现更加平稳,红色折线一直维持在0轴上方。纯化后的因子第10组年化收益可达19.23%,信息比率1.72,年化超额收益7.37%,另外双边换手率年化11.74;多空分组的年化收益达14%,夏普比率2.45,最大回撤仅3%。 Chatglm_factor因子选股策略 我们根据每月计算的个股情感得分选取情感得分最高的50只个股等权配置,策略在2014年06月01日至2023年6月12日期间年化收益率20.8%,基准(中证500)年化收益率5.3%,阿尔法15.6%。2014年06月01日至2023年6月12日以来2198个交易日中,获得正收益的天数为1204天,盈利天数占比:54.78%,盈利日平均每天盈利1.2%,亏损日数994天,亏损天数占比:45.22%,亏损日平均每天亏损1.25%。 策略在22年整体回撤15.47%,明显小于主动型基金的收益中位数;2023年至今(6月12日)绝对收益13.66%,相对基准超额收益12.46%,大幅跑赢基准。 风险提示: 策略基于历史数据回测,不保证未来数据的有效性。 投资主题 报告亮点 人工智能不仅是今年A股市场的主线之一,同时人工智能随着各种技术的突破未来也将深入到各个行业领域。本报告开创性的使用ChatGLM来对分析师研报的情感进行打分划分标签,并以此为基础叠加Bert大模型与Xgboost模型构建个股的情感因子。 投资逻辑 近两年来市场风格轮动较大,传统的基于基本面因子与简单量价因子的量化模型相较以往年份较难取得明显的超额收益。本报告结合时代大环境使用ChatGLM等来构建研报情感因子,通过测试该因子自2014年来能取得非常不错的效果,尤其在近两年来以此为基础构建的选股模型超额收益非常明显。 一、市场及策略回顾 (一)2023年至今市场回顾 A股市场在2022年下半年经历了非常艰难的阶段,2023年开始市场中各类投资者开始寻找新的热点和方向,截止目前市场的热点主要集中在chatgpt引导的人工智能浪潮以及“中特估”方向。其他传统的热门行业如食品饮料、生物医药、电力设备及新能源等在年初经历了1个多月的短暂反弹后又陷入了下跌的趋势当中。 A股的各大宽基指数也因此表现非常分化,科创50、红利指数的表现截止目前(2023年5月31日)最好。科创50指数年初以来的最大涨幅高达21.36%,4月底以来随着部分“AI概念股”的回调指数出现一定幅度的回撤。红利指数因为其成分股中包含长江传媒、凤凰传媒、中南传媒,三个个股年初至今涨幅分别为76.49%、65.9%、36.7%,总权重占比7.5%;同时包含中国石化、中信银行、中国银行、中国神华、交通银行、农业银行等11只“中特估”成分股,总权重达28.8%,因此红利指数今年来表现不错。 图表1各大宽基指数2023年以来涨幅及当前估值分位数 图表2各大宽基指数当前估值分位数 上图表示各大宽基指数当前的估值PETTM及对应2019年以来的估值分位数,当前仅国证2000指数的估值分位数处于90%(从小到大排序)以上,其次中证100、中证500、深证综指的估值分位数超过50%。创成长指数当前的PETTM为30.98,处于2019年以来的最低分位数水平。沪深300的PETTM为11.69,处于2019年来15.15%的分位数。 截至目前(2023年5月31日)超过一半的宽基指数估值水平处于2019年来的较低水平(低于30%分位数)。 图表3六大风格指数2023年以来涨幅及当前估值分位数 上图表示国证六大风格指数2023年至今(2023年5月31日)的涨幅及当前估值,与22年的结果相近,23年至今所有成长风格指数都跑输对应的价值指数,三个价值指数截止目前的涨幅都大于0,而大盘成长与中盘成长指数的涨幅为-8.46%、-9.83%。由此可见截止目前今年成长风格依旧大幅跑输价值风格。 (二)2023年至今CANSLIM策略回顾 下面我们对原来的CANSLIM策略做简单的回顾: 图表4 canslim策略2023年至今收益走势 上图表示CANSLIM1.0策略在今年的走势,策略今年最大回撤10.01%。策略在今年的最大累计收益接近8%,之后经历5月份的回撤后,截止目前(5月31日)策略的累计收益-0.15%,相对偏股混合基金指数的超额收益3.03%,全市场主动权益基金排名32%分位数。 CANSLIM策略主要偏向成长趋势型的策略,面对成长风格大幅跑输价值风格的时段策略的表现较一般,超额收益远小于过去今年成长风格盛行的时间段。 (三)2023年至今行业轮动策略回顾 图表5 FESC行业轮动策略2023年至今收益走势 上图表示2023年至今FESC行业策略的走势,今年来面对分化非常严重的A股市场,行业轮动在今年的表现相对较稳定。2023年以来策略的累计涨幅4.36%,相对偏股混合基金指数超额收益7.55%。行业轮动策略在2023年的最大回撤为-7.8%。 综上可以看出行业轮动模型在今年的表现要好于选股模型,选股模型相比过去几年的业绩明显的下降,故此,我们尝试从新的角度来做研究,脱离传统的基于纯粹的基本面和简单量价信息的思维,结合时代大环境从人工智能辅助投资的大方向来进行尝试。 二、利用ChatGLM构建选股因子 在之前的报告《人工智能助力量化投资——ChatGLM介绍》中我们对GLM大模型的原理及特点做过详细的介绍,在此不再赘述。 (一)本地部署ChatGLM大模型 开源的ChatGLM-6B虽然规模不及千亿模型,通过我们之前的测试和对比其回答的效果已相当符合人类的逻辑,同时具有一定知识储备,对文章的总结也能实现让人比较满意的结果。另外,其开源及容易部署的特点也促使我们选择对其做深入研究,并结合到量化投资中。 使用ChatGLM方式有两种:一种是在线版本网页的QA方式,可以通过网址:https://chatglm.cn/chat进行内测申请使用。 图表6 ChatGLM网页版使用案例 另一种是本地部署,本文主要对本地部署进行介绍。根据官网的介绍,ChatGLM-6B结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4量化级别下最低只需6GB显存)。因此多数个人投资者及一般机构投资者根据自己的需求也有能力进行本地的部署。 1、硬件需求 图表7硬件需求 对比三种模式,FP16模型下对GPU显存要求较高超过10G,其他两种要求均不超过10G。 我们选择的是FP16模型下的ChatGLM来进行部署。 2、安装所需python库 Python环境,模型的部署首先需要依赖huggingface的transformers模块,可以通过cmd中运行pipinstall transformers来进行本地安装,需要注意按照官方文档其中transformers库版本需在4.27.1以上。如果安装的版本较低,会发生如下错误提示: 图表8常见transformers版本较低错误展示 另外还需要安装sentencepiece、protobuf、cpm_kernels、torch>=1.10、gradio、mdtex2html Sentencepiece,同样在cmd中进行安装。 3、下载或加载ChatGLM 首次运行模型时需要从huggingface下载模型,可以通过如下代码进行下载,另外此命令也是后续调用本地模型的加载代码。 图表9加载ChatGLM代码 注意模型大小超过10G,首次下载模型耗时较长,下载时要保持网络通畅同时保证内存足够使用。 4、测试 我们对本地部署好的ChatGLM进行调试,同样对图表6中的问题进行询问,下图是本地版本的ChatGLM的答案: 图表10 ChatGLM本地版使用案例 上图表示利用本地部署的ChatGLM对问题“我在写一篇有关人工智能发展的论文,帮我列出提纲、目录结构”的答案,可以看出与网页版的答案并不相同。 (二)因子构建流程 通过上文的简介,我们可以非常简单的搭建自己的ChatGLM模型,进而我们可以结合预训练BERT模型(我们使用了熵简科技开源了的FinBERT模型)来对文本数据进行处理。 BERT模型可以通过“预训练+微调”的应用范式对下游具体应用优化,在微调步骤中,预训练BERT模型在特定任务的数据集上进行额外的训练,使其更好地理解并解决特定任务。但微调步骤的关键问题在于需要一定量的带有标签的数据,对于金融文本而言,获取这类数据的成本较高,且可能存在数据泄露问题,现在我们可以通过对ChatGLM提问的方式,获得大量带有标签的文本数据。在此我们使用卖方分析师的研报文本来进行研究。今天的因子构建流程如下图所示: 图表11因子构建流程 1、ChatGLM进行研报情感打分 首先对每篇研报的标题和摘要做简单的预处理,删除其中的特殊字符;其次,对处理之后的文本数据我们调用ChatGLM模型来进行情感打分,对每篇分析师的报告做一个情感分类。 图表12研报情感打分实例 上图表示我们筛选历史某只个股的分析师业绩点评报告,使用ChatGLM模型对其进行情感打分,报告得分为4.67分,总分为5分。 通过以上的方式我们对2010-2013年间的初筛后的分析师研报的样本进行打分,初筛后的样本共计36747个,对其得分进行统计: 图表13 ChatGLM打分后样本得分统计 鉴于A股分析师进行点评是更多都是偏正向的报告,研报的情感多数偏正向,故进行打分后的样本得分呈现明显的右偏特征,得分的均值与中位数均大于4分。 图表14 ChatGLM得分分布图 上图表示ChatGLM得分分布图,得分呈现明显的右偏特征,近半数的样本得分集中在4.5分左右。 2、Bert模型进行微调与预测 在本部分我们首先对上文中得到的ChatGLM得分样本进行筛选,为了保证微调样本的分布均衡我们将所有样本按照chatglm_score得分排序,然后将所有样本分成三等分打标签(0,1,2)。得分最高的分组标签为2,得分最低的分组标签为