




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ChatGPT应用分析ChatGPT在择时、风格、行业、选股中的应用实践(报告出品方/作者:方正证券,曹春晓)1引言2022年12月,OpenAI推出人工智能聊天机器人程序ChatGPT,迅速引起广泛的讨论和应用,仅耗时2个月月活用户即突破了1亿,成为用户增长速度最快的消费级应用程序。ChatGPT基于深度学习和神经网络技术,可以高效的进行自然语言生成、文本分类、问答等多种任务,有助于进一步实现自动化与提升效率,给予客户更好的交互体验,未来其对金融领域可能产生较大的影响。在报告《ChatGPT在投资研究工作中的应用初探——ChatGPT应用探讨系列之一》中,我们较为详细的探讨了ChatGPT在金融投研领域中的可能应用,从日常工作到数据分析,再到API接口和其他应用领域。本文中我们将进一步聚焦于ChatGPT在数量化研究领域的应用,分别从择时、风格轮动、行业轮动、选股因子挖掘等方面进行实践,进一步阐述ChatGPT在投研工作中的应用前景。2基于ChatGPT构建择时策略2.1均线择时策略及其优劣势在股票市场投资中,择时是最复杂且挑战最大的任务之一,由于市场影响因素众多,很难从某一个维度构建非常有效的择时模型。在实际应用中,技术分析领域中的均线策略是一种非常经典且常用的择时策略,至今仍然大量应用在CTA策略中。均线策略的基本思想是通过计算股票价格在一定时间内的均值,来判断股票价格走势和买卖信号。具体来说,均线策略包括以下几个步骤:1)选择合适的均线周期。一般情况下,常用的均线周期为5日、10日、20日、40日、60日、120日和240日等。2)根据选定的均线周期计算出相应的均线。计算均线的方法有简单移动平均线(SMA)和指数移动平均线(EMA)等,其中EMA更加灵敏。3)判断股票价格与均线的关系。当股票价格上穿均线时,称为“金叉”,表示股票价格开始向上突破均线,为买入信号;当股票价格下穿均线时,称为“死叉”,表示股票价格开始向下跌破均线,为卖出信号。4)根据买卖信号执行买卖操作。其中,均线周期的选择对策略的影响较为显著,均线周期较短,有利于抓取短期的波段行情,但频繁切换可能导致交易成本陡增。均线周期较长,更有利于抓取长期趋势,但其滞后性较为明显,在震荡行情中可能失效。实际应用中,长短期均线有不同的优点和劣势,我们可以通过使用多均线系统的方式将其结合,尝试搭建既能跟踪市场主要趋势,又能在拐点附近尽可能及时响应的均线系统。2.2基于ChatGPT构建均线排列择时模型当我们使用1根均线进行择时时,可以得到的是做多或者做空两种信号,但是当我们使用多根均线时,模型结果不再是多空两种信号,而是一个相对连贯的打分体系。例如我们设定当短期均线上穿长期均线时,+1分,短期均线下穿长期均线时,-1分,最终将多组均线的结果汇总,即可得到一个综合长短期均线特点的打分模型。我们尝试通过ChatGPT来实现这个部分:我们的需求:请写一个Python函数,输入是指数日频收盘价,格式为DataFrame,输出为指数的均线排列得分。在每个交易日,选择N根均线,从短到长排列,判断相邻两根均线的位置,如果短期均线在长期均线上方,则得1分,反之得-1分,将N-1个得分相加,即得到均线排列得分。ChatGPT的回答:可以看到,ChatGPT不仅准确给出了计算均线排列得分的函数,而且给出了详细的解释和使用示例。得到上述核心部分代码之后,我们就可以来编写策略了,在报告《ChatGPT在投资研究工作中的应用初探——ChatGPT应用探讨系列之一》中我们曾介绍过,与ChatGPT交互时,尽可能具体的表述对一次获得正确的结果至关重要,此处我们将整个策略分步骤明晰列示。我们的需求:请实现一个均线排列择时的策略,按照如下步骤:1、定义多条均线的时间窗口ma_list,为1到252的自然数序列;2、读取沪深300指数日度收盘价数据,并调用上述ma_score函数计算每日的均线排列得分;3、对上述均线排列得分再做一次移动平滑,窗口为60个交易日;4、当均线排列得分大于60日均线时,做多沪深300指数,小于60日均线做空,计算策略历史表现并将策略净值曲线与沪深300指数绘制于图中。ChatGPT的回答:至此,一个简易的多均线排列择时策略已经构建完成。我们也可以进一步在此基础之上测试不同参数下的策略表现,从而得到最优策略参数,或进一步构建更为复杂的择时模型。3基于ChatGPT构建风格轮动观测模型3.1近年来A股市场风格切换较为剧烈风格轮动是获取超额收益的重要来源之一,不论是美股市场还是A股市场,都存在着非常典型的风格轮动现象,如能够有效捕捉到风格切换的时点,则可以获取较为可观的相对收益。就A股市场而言,近几年风格切换相对较为剧烈,2019-2020年期间大盘成长风格明显走强,以贵州茅台和宁德时代为代表的核心资产股价上涨明显,一批大盘成长风格的基金产品业绩表现尤为亮眼。然而自2021年以来,大盘成长风格大幅走弱,与此同时小盘价值风格表现相对亮眼,部分小盘价值风格的基金再次成为市场关注的焦点。我们以几种相对较为宽泛的风格为例,来观察A股市场的风格轮动现象,其中大盘/小盘风格分别以沪深300指数和中证1000指数为代表,价值/成长风格分别以国证价值指数和国证成长指数为代表,高估值/低估值则以申万高市盈率指数和低市盈率指数为代表,绩优股和亏损股分别以申万绩优股指数和亏损股指数为代表。可以看到,近几年切换最为明显的风格是绩优股和亏损股,绩优股在2019-2020年迅速走强,估值快速提升,与亏损股的相对收益则出现了快速拉升,随着2021年初白马股抱团的松动,绩优股/亏损股相对表现大幅逆转,至今亏损股指数仍然显著跑赢绩优股指数。此外,价值与成长风格的切换也相对较为明显,而大盘/小盘,高估/低估等风格,相对而言近期并未出现明显的风格对立情形。关于如何构建风格轮动策略,是投资者非常关注的一个问题,接下来我们通过与ChatGPT交互风格轮动相关的话题,尝试构建一个简单的观测风格轮动的模型。显然,由于问题表述不够具体,ChatGPT只能给我们一些相对宽泛的回答,但其关于大小盘风格轮动、周期非周期风格轮动的表述,仍然可以给予我们一些启发。由于根据宏观环境进行风格轮动研判属于长周期的投资策略,此处我们尝试通过量价交易数据来构建一个短周期内可观测的风格轮动模型。显然,当我们尝试让ChatGPT给我们设计实际可用的策略时,其回复的内容相对来讲质量较低,基本上无法形成有效策略,且多次尝试后依然如此。因此我们直接给出一个策略,让其帮我们实现。3.2基于ChatGPT实现四象限风格轮动模型通常我们可以用两个风格指数的相对强弱曲线来观察风格轮动状态,以大盘/小盘为例,我们假设理想情况下大盘/小盘相对强弱曲线符合正弦波曲线形态,随着大盘指数逐渐走强,其相对于小盘风格的相对强弱曲线开始加速上升,一段时间后随着市场预期逐步体现,相对强弱曲线则开始减速上升,直至达到临界点,开始下跌,市场由此转向小盘风格。我们通过最小二乘回归来近似拟合相对强弱曲线的一阶导数与二阶导数,并将其绘制于二维图中,即可得到一个实际可用的风格轮动观测模型。在四象限中,一象限内大盘/小盘相对强弱指数加速上升,大盘风格持续占优,三象限中相对强弱指数加速下行,小盘风格明显占优。整个策略的构建过程相对简单,我们将全部步骤告诉ChatGPT,让其来构建这个风格观测模型。可以看到,在给定具体的计算步骤之后,ChatGPT能够快速的完成代码构建,且整段代码中除了开头和结尾部分有小错误之外,主体计算部分没有任何问题,我们将此代码复制到Python环境下,简单修改后运行即可得到相应的结果。至此我们已通过ChatGPT得到了一个风格轮动观测模型,如上文介绍,该模型显示了近期价值风格与成长风格的相对强弱趋势变化图,整个轨迹在四象限图中沿着逆时针方向旋转,截至4月底,轨迹运行至一象限价值风格占优区域,表明目前价值风格相对于成长风格占优。该模型是一个通用模型,我们将其简单修改调整即可用来观测任意两组不同风格指数的强弱关系。从截至4月底最新轮动状态来看,在大盘/小盘风格维度,大盘风格已开始走出相对优势,与此同时,高估值风格相对于低估值风格的轮动轨迹已进入三象限,表明低估值板块开始走强。从绩优股与亏损股风格的相对轮动状态来看,截至4月底绩优股开始逐步走强,轨迹刚刚进入一象限区域,同时今年以来表现最强势的TMT板块,相对于全市场的相对强弱已开始走弱,目前正处于二象限区域,后续需关注其是否会继续走弱切换进入三象限,从模型逻辑角度考虑,我们建议短期保持谨慎。4基于ChatGPT构建行业轮动策略4.1行业配置是获取超额收益的重要来源从A股市场历年表现来看,行业分化现象均较为明显,除市场普跌的2011年、2016年、2018年外,其余各年份行业涨跌分化均较为明显。今年以来截至4月30日,申万一级行业中传媒行业累计上涨51.78%,表现最为出色,同期商贸零售行业下跌10.87%,最好最差行业表现相差62.65%,分化较为明显。行业配置是获取超额收益的重要来源,如何把握行业轮动特征,如何构建有效的行业轮动策略,是投资者重点关注的问题。影响行业涨跌分化的原因有很多,此处我们从行业基本面景气变动角度出发,尝试通过ChatGPT来构建一个实际可行的行业轮动策略。4.2基于ChatGPT构建的基本面景气行业轮动策略通过上市公司财务数据可以判断出企业的盈利情况,行业或板块也类似。对于不同行业而言,由于成分股的差异较大,直接对比行业的财务指标会存在较大的偏差,因此,我们在对行业进行基本面指标比较时通常采用同比或环比数据。此外,关于行业基本面指标的计算存在不同方法,本文中我们使用整体法计算行业财务指标。接下来,我们将分步骤完成行业轮动策略的构建,首先我们需要计算各行业的基础财务指标。我们的需求:请写一个Python函数,用来实现通过整体法计算行业的财务指标,输入为DataFrame,包含字段股票代码stockcode,财报日期reportdate,申万行业分类sws1,TTM归母净利润netpp_ttm,TTM营业收入rev_ttm,单季度归母净利润netpp_q,单季度营业收入rev_q,净资产equitp。计算各行业的TTM归母净利润环比增速、TTM营业收入环比增速、单季度归母净利润同比增速、单季度营业收入同比增速、ROE_TTM环比变动值,单季度ROE同比变动值。ChatGPT的回答:从上述代码来看,基本实现了整体法的计算逻辑,对于环比增速和同比增速的理解正确,并且考虑到了分母为负数的情形,使用了abs函数调整,但其仍然存在一些bug,比如指标命名全部为_yoy,按照习惯我们需要将环比增速的指标后缀修改为_qoq,同时代码中遗漏了ROE的环比变动和同比变动部分,也需要进一步补充。接下来,我们需要定义一个时间序列标准化函数zscore,以实现对行业财务指标进行时间序列的标准化处理,之所以进行标准化,一方面是因为不同行业之间本身景气趋势存在差异,我们希望通过这种方式过滤掉行业本身的趋势,只关注其边际变化,另一方面,在此前的研究中我们也发现,经过zscore处理之后的行业财务指标,业绩表现都较原始指标有明显改善。我们的需求:请写一个Python函数,输入为DataFrame,包含字段sws1,reportdate,roe_ttm_qoq,netpp_ttm_qoq,rev_ttm_qoq,netpp_q_yoy,rev_q_yoy,将roe_ttm_qoq,netpp_ttm_qoq,rev_ttm_qoq,netpp_q_yoy,rev_q_yoy等财务指标滚动8个季度进行zscore标准化,即最新值减去历史均值除以标准差。ChatGPT的回答:至此,我们的行业轮动策略核心部分已经构建完成,我们进一步将上述经过标准化之后的财务指标等权合成为行业基本面景气得分,每个财报期结束之后,根据行业基本面景气得分选取前6个一级行业作为多头组合,后6个行业作为空头组合,由于年报和一季报在同一时间点披露完毕,因此在实际组合构建时我们剔除年报数据,仅使用一季报的最新得分进行排序和分组。可以看到,该行业轮动策略虽然每年只调整三次,但是其历史表现非常出色,自2012年以来,多头组合年化收益率为11.28%,空头组合年化收益率为1.75%,多空年化收益约为9.53%。且该行业轮动模型在历史大多数年份中,多头组合均较空头组合有明显的超额收益,多空相对净值曲线整体表现相对较为平稳。该模型仅利用了历史财报数据计算,更新频率较低,且每年三季报披露结束之后有较长的业绩真空期,我们可以在此基础之上,添加分析师预期数据、资金流数据等不同维度指标,进一步丰富和完善行业轮动策略,此处不再赘述。5基于ChatGPT挖掘高频量价选股因子5.1成交量的“激增时刻”在股票市场中,成交量的边际变化隐含着非常重要的信息,特别是在技术分析领域,成交量被认为是股票市场的原动力。俗语“量在价先”深刻反应了成交量的变化对于股票价格波动的预测具有指示性作用。我们以利好信息为例,当一个利好信息公布后,可能会引起相应个股成交量的突然放大。如果在成交量激增的同时,价格却未发生变动,或者未能引起价格的波动,则表明这一利好消息没能得到市场广泛的认可。相反,如果成交量激增的同时,价格出现大幅上涨,则表明市场对于此利好信息反应过于趋同,有可能出现反应过度。报告《成交量激增时刻蕴含的alpha信息——多因子选股系列研究之一》中我们通过观察日内成交量激增的时段,考察这些时段的收益率与波动率,并将市场平均水平作为“适度”程度的衡量标准,进而构建“耀眼波动率”因子和“耀眼收益率”因子,并最终合成为能综合反应投资者反应不足和反应过度程度的“适度冒险”因子。“适度冒险”因子的构建大致可以分为如下几个步骤:1)确定“激增时刻”:剔除开盘和收盘数据,仅考虑日内分钟频数据,计算个股每分钟的成交量相对于上一分钟的成交量的差值,作为该分钟成交量的增加量。计算每天每只个股分钟频成交量的增加量的均值mean和标准差std。我们定义那些分钟频成交量增加量大于“均值+1倍标准差”的时刻为成交量激增的时刻,我们将对应的时刻统称为“激增时刻”。2)根据“激增时刻”后的价格波动,计算“月耀眼波动率”因子:定义“激增时刻”的这一分钟及其随后的4分钟,是因成交量激增而引起投资者关注的5分钟。投资者对成交量激增的反应,在这5分钟里表现得最充分最强烈,我们将这5分钟称为“耀眼5分钟”。使用分钟收盘价,计算每分钟的收益率,进而可以得到每个“耀眼5分钟”里收益率的标准差,作为成交量激增引起的价格波动率,我们将其称为“耀眼波动率”。计算A股票在t日内所有“耀眼波动率”的均值,作为t日A股票对成交量的激增在波动层面上反应的代理变量,记为“日耀眼波动率”。根据前述分析,我们希望“日耀眼波动率”不要太大,也不要太小,适度最好,为了不引入其他参数,我们选取“日耀眼波动率”的截面均值作为最“适度”的水平。因此我们将每日的“日耀眼波动率”减去截面的均值再取绝对值,表示个股的“日耀眼波动率”与市场平均水平的距离,并将其记为日频因子“适度日耀眼波动率”。我们分别计算最近20个交易日的“适度日耀眼波动率”的平均值和标准差,记为“月均耀眼波动率”因子和“月稳耀眼波动率”因子。将“月均耀眼波动率”与“月稳耀眼波动率”等权合成,得到“月耀眼波动率”因子。3)根据“激增时刻”的价格变动,计算“月耀眼收益率”因子:找到“激增时刻”对应的分钟收益率,我们将其称为“耀眼收益率”。对A股票在t日内所有的“耀眼收益率”求均值,作为股票对成交量激增在收益率层面反应的代理变量,记为“日耀眼收益率”。根据上述分析,我们同样希望“日耀眼收益率”不要太大,也不要太小,适度最好。因此我们将每日的“日耀眼收益率”减去截面的均值再取绝对值,表示个股的“日耀眼收益率”与市场平均水平的距离,并将其记为“适度日耀眼收益率”。我们分别计算最近20个交易日的“适度日耀眼收益率”的平均值和标准差,记为“月均耀眼收益率”和“月稳耀眼收益率”因子。将“月均耀眼收益率”与“月稳耀眼收益率”因子等权合成,得到“月耀眼收益率”因子。4)将上述“月耀眼波动率”因子与“月耀眼收益率”因子等权合成,即得到“适度冒险”因子。在报告《成交量激增时刻蕴含的alpha信息——多因子选股系列研究之一》中我们对“适度冒险”因子在月频选股效果上的回测结果显示:合成之后的“适度冒险”因子表现非常出色,RankIC为-8.89%,RankICIR为-4.84,多空组合年化收益率达37.46%,信息比4.10,因子月度胜率87.74%。此外,在剔除了常用的风格因子影响后,“适度冒险”因子仍然具有较强的选股能力,RankIC均值为-3.18%,RankICIR为-1.89,多空组合年化收益率18.07%,信息比率2.23。接下来我们尝试通过ChatGPT来复现这个因子,这是一个相对较为复杂的因子,为了达到目标,我们需要将因子构建过程分解,逐步得到最终的因子构建代码。首先,该因子构建中最核心的问题是关于“激增时刻”的定义,“激增时刻”指的是在某一分钟上成交量的突然放大,其成交量相比于前一分钟出现明显放量,这些分钟就是我们所定义的“激增时刻”。我们的需求:请写一个Python函数,用来实现寻找个股日内交易的激增时刻,读入为DataFrame,表示个股分钟频交易数据,包含字段code,amount,money,high,low,close,open,num,其中num表示当天第几分钟,按照如下步骤进行:1、剔除开盘1分钟以及收盘前1分钟的数据;2、计算每只股票每分钟的收益率ret和每分钟成交量的增量diff_amount;3、计算每只股票当天diff_amount的均值和标准差,筛选出该股票大于其均值加一倍标准差的时刻即为该股票当天的激增时刻。需要注意的是,此处省略了数据预处理部分,本文中高频数据来源于米筐API,其将每天最后三分钟的交易数据合并为一根bar,因此此处剔除收盘前1分钟的数据实际代表的是剔除收盘前3分钟的数据(即集合竞价数据),如其他数据接口可能需要修改第一步表述部分。ChatGPT的第一个回答版本,该函数完全理解了我们的意图,并按照要求给出了每个股票每天的“激增时刻”及其对应的数据,但是在函数中使用了for循环来计算,这在分钟频数据上的计算是非常耗时的,因此我们尝试让ChatGPT来优化这个过程,我们直接告诉ChatGPT:for循环太耗时,换一种算法。这个版本的主要不同之处在于它使用了Pandas的向量化操作add和mul来计算均值加一倍标准差,而不是使用for循环和逐个计算每只股票的激增时刻。这种方式更快且更有效率,特别是在处理大量数据时。但其中有一处bug是其计算的阈值是均值+2倍标准差,而非我们定义的均值+1倍标准差,因此我们需要修改mul的参数为1,即可得到正确的结果。5.2基于ChatGPT构建“适度冒险”因子接下来,我们复现因子的具体计算过程。找到“激增时刻”之后,我们需要分别构建两个细分因子:“耀眼波动率因子”与“耀眼收益率因子”,其中“耀眼波动率因子”需要考察“激增时刻”之后的五分钟内的波动率情况,“耀眼收益率因子”则通过“激增时刻”这一分钟收益率来计算,我们在同一个函数中实现其计算过程。我们的需求:请写一个Python函数,用来计算日耀眼波动率因子和日耀眼收益率因子,读入为DataFrame,表示个股分钟频交易数据,包含字段code,amount,money,high,low,close,open,num,其中num表示当天第几分钟,按照如下步骤进行:1、计算每只股票每分钟的收益率ret;2、计算每只股票每一分钟及其未来四分钟内的收益率的标准差,得到该分钟该股票对应的波动率指标vol;3、调用上述find_volume_spikes函数,得到每只股票当天的激增时刻,找到各股票激增时刻对应的波动率vol_s和收益率指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于部门下季度工作计划(32篇)
- 小学人音版音乐教学实施计划
- 小学语文二年级上学期家长辅导计划
- 二年级语文线上学习计划
- 矿山开采主要施工机械设备计划
- 设备卸车就位合同范本
- 2025年度妇产科护士继续教育培训计划
- 个体贷款购货合同范本
- 初二下学期数学课程调整计划
- 2025年CDMA蜂窝移动通信系统合作协议书
- 2025年漂浮式风电市场现状调研及前景趋势预测报告
- 2024年装卸作业规范试题及答案
- 建设工程临时用电管理制度
- 如何撰写一份出色的学生会纪检部申请书
- 人教版三年级美术教育教学计划
- 《休闲农业》课件 项目四 休闲农业项目策划
- 2024年高中化学 专题2 化学反应速率与化学平衡 第一单元 化学反应速率 第2课时 影响化学反应速率的因素教学实录 苏教版选修4
- 山西省省直部分事业单位2025年公开招聘工作人员(十四)历年高频重点模拟试卷提升(共500题附带答案详解)
- (一模)哈三中2025届高三第一次模拟考试 语文试题(含答案)
- 数学-浙江天域全国名校协作体2025届高三下学期3月联考试题+答案-2025-03-05-06-11-30
- 2025年陕西农业发展集团有限公司(陕西省土地工程建设集团)招聘(200人)笔试参考题库附带答案详解
评论
0/150
提交评论