华泰 | 金工:面向投资研究行业的GPT使用指南
(以下内容从华泰证券《》研报附件原文摘录)
人工智能系列之66:四则案例展示如何使用GPT提升投研效率。人类社会发展的基本规律是先进生产力不断取代落后生产力。如同各行各业正在发生的变革一样,以GPT为代表的大语言模型也将重塑投资研究行业。本文通过(1)量化分析、(2)网页抓取、(3)文字摘要、(4)行情复盘四个案例,探讨 GPT在投资研究中可能的应用场景,展示如何使用ChatGPT提升投研效率,并分析ChatGPT使用技巧。总的来看,ChatGPT在代码编写、文本编写这两类任务上表现较好。一方面可以替代日常重复劳动,另一方面能拓展投研人员的能力圈。同时,生成高质量的回答需要提出正确的问题,我们通过实验总结出任务提示Prompt的若干经验。 核心观点 代码编写任务经验 (1)ChatGPT利好有代码基础但不熟练的开发者。可以省去大量网络搜索、查看帮助文档时间,大幅提升编程效率。(2)需要使用者有代码基础。ChatGPT生成的代码可能有错误,需要人工查错;另外,涉及输入数据、输出结果这些个性化程度较高的环节,人工实现效率可能更高。(3)做优秀的产品经理。项目解耦很重要,ChatGPT很难一步到位,将项目拆解成独立的子任务,引导ChatGPT写函数;明确需求很重要,指定函数的输入、输出变量名和格式。(4)代码出错没关系,可以提供报错信息要求ChatGPT修改。GPT支持4096个字符的上下文,能够在原有代码基础上修改。 文字编写任务经验 (1)文字处理是ChatGPT较为擅长的领域。自然语言相比代码冗余度更高,容错率也更高,生成质量整体较好。(2)任务提示Prompt应写在开头位置,实验表明当Prompt写在结尾时,ChatGPT可能无法正确理解意图。(3)GPT处理上下文字数有限制,需要拆分段落,合理分配每轮对话字数,输入以1000个左右汉字为宜。(4)对于编写行情复盘这类“半监督式任务”(有往期答案但没有当期答案),可以在Prompt中提供少量样例,GPT支持Few-shot或One-shot学习,基于样例的生成效果相比无样例更好。也不必担心GPT没有学习2021年9月后的数据,新信息同样可作为Prompt提供。 GPT助力投资研究案例四则 (1)量化分析。目标:检验MACD“金叉”“死叉”事件信号对个股收益预测能力。方法:将项目拆解成独立的子任务,引导ChatGPT写Python函数。(2)网页抓取。目标:程序化抓取东方财富股吧评论。方法:从原型代码出发,逐步添加需求。(3)文字摘要。目标:将约10000字的速记稿总结成约2000字的会议纪要。方法:ChatGPT3.5仅支持4096 tokens的上下文。需将原稿拆成约1000字的段落,分别概括大意并输出。(4)行情复盘。目标:基于A股市场当日行情数据,编写复盘文字。方法:提供行情数据和复盘样例,采用One-shot或Few-shot学习,生成质量高。 正 文 GPT应用于投资研究经验总结 人类社会发展的基本规律是先进生产力不断取代落后生产力。如同各行各业正在发生的变革一样,以GPT为代表的大语言模型也将重塑投资研究行业。 本文通过(1)量化分析、(2)网页抓取、(3)文字摘要、(4)行情复盘四则案例,探讨GPT在投资研究中可能的应用场景,展示如何使用ChatGPT提升投研效率,并分析ChatGPT使用技巧。 总的来看,ChatGPT在代码编写、文本编写这两类任务上表现较好。一方面可以替代日常重复劳动,另一方面能够拓展投研人员的能力圈。例如,主动投研人员希望引入量化分析工具,或者借助网页抓取获取非结构化数据,都可以尝试用ChatGPT生成Excel公式或Python等编程语言代码。同时,高质量的回答需要提出正确的问题,我们通过实验总结出任务提示Prompt的若干经验。 代码编写任务经验: 1.ChatGPT利好有代码基础但不熟练的开发者。可以省去大量网络搜索、查看帮助文档时间,大幅提升编程效率。 2.需要使用者有代码基础。ChatGPT生成的代码可能有错误,需要人工查错;另外涉及输入数据、输出结果这些个性化程度较高的环节,人工实现效率可能更高。 3.做优秀的产品经理。项目解耦很重要,ChatGPT很难一步到位,要将项目拆解成独立的子任务,引导ChatGPT写函数;明确需求很重要,要指定函数的输入、输出变量名和格式。 4.代码出错没关系,可以提供报错信息,要求ChatGPT修改。GPT支持4096个字符的上下文,能够在原有代码基础上修改。 文字编写任务经验: 1.文字处理是ChatGPT较为擅长的领域。自然语言相比代码冗余度更高,容错率也更高,生成质量整体较好。 2.任务提示Prompt应写在开头位置。实验表明当Prompt写在结尾时,ChatGPT可能无法正确理解意图。 3.GPT处理上下文字数有限制,需要拆分段落,合理分配每轮对话字数,输入以1000个左右汉字为宜。 4.对于编写行情复盘这类“半监督式任务”(有往期答案但没有当期答案),可以在Prompt中提供少量样例。GPT支持Few-shot或One-shot学习,基于样例的生成效果相比无样例更好。也不必担心GPT没有学习2021年9月后的数据,新的信息同样可以作为Prompt提供给ChatGPT。 我们让ChatGPT总结这两类任务的技巧,如下图所示,和前述经验较为符合,供读者参考。另外要说明的是,尽管本文中的案例均围绕GPT展开,随着越来越多大语言模型的开发和上线,或将诞生功能更强、使用更便捷、成本更低的GPT替代方案,这也是新生产力取代旧生产力的体现。 案例1:量化分析 目标:检验MACD“金叉”“死叉”事件信号对全市场个股收益预测能力。 方法:将项目拆解成独立的子任务,引导ChatGPT写Python函数。本文全部测试均基于ChatGPT3.5网页版实现。 MACD是经典的技术指标。当快线DIF自下而上穿过慢线DEA,此时MACD由负转正,这种形态通常称为金叉,为做多信号。反之,当快线DIF自上而下穿过慢线DEA,此时MACD由正转负,这种形态通常称为死叉,为做空信号。MACD指标对全市场个股是否具备择时能力?我们将借助ChatGPT生成量化分析代码进行检验。 ChatGPT的工作(1):计算MACD。人的提问也称为Prompt,我们在Prompt中明确输入数据变量名、类型和具体定义,并指定生成Python代码。 生成代码总体正确,并且包含注释和解读。但ChatGPT对输入数据格式理解有误。Prompt中指定输入的收盘价矩阵,index为股票代码,columns为日期。但代码的输入变量,index为日期,columns为股票代码。我们认为此处ChatGPT的错误完全可以接受,因为Python DataFrame的习惯用法是将index定义为时间轴,ChatGPT学习大量代码语料,生成结果贴近习惯用法。与其改变ChatGPT,不如改变自己,后文我们将输入数据进行转置调整。 ChatGPT的工作(2):发“金叉”“死叉”信号。金叉代表MACD由负转正,发做多信号;死叉代表MACD由正转负,发做空信号。 生成代码总体正确。唯一的错误是函数内部第一行的pct_change()应删除。 ChatGPT的工作(3):计算未来horizon个交易日收益率。预测区间长度horizon为变量,之后我们将对其进行遍历。 生成代码正确。注意这里我们没有在Prompt中指定输入数据的格式,由于ChatGPT支持4096个token的上下文,无需铺垫背景也可正常理解人类意图。 ChatGPT的工作(4.1):统计正数和负数数量,计算胜率使用。之后我们将从(3)输出的区间收益率矩阵中,分别根据(2)输出的多空信号,提取做多或做空信号下股票的区间收益率,并统计做多或做空胜率。 生成代码正确。 ChatGPT的工作(4.2):统计正数和负数均值,计算赔率使用。 生成代码有误。ChatGPT这里没有考虑缺失值的影响。代码先对单个股票全部日期信号求均值,再对全部股票求均值(column-wise);实际应对全部信号求均值(element-wise)。当各行列缺失值数量不一致时,原代码会造成较大偏差。 ChatGPT的工作(4.2):统计正数和负数均值,计算赔率使用。第二次生成补充要求,考虑各行列缺失值。 生成代码正确。有意思的是我们没有明示ChatGPT修改,但ChatGPT“情商很高”,回答的第一句话表明理解了我们的意图。 人的工作(1):输入数据及预处理。ChatGPT对输入数据的路径、格式没有概念,预处理涉及较多细节,这步交给人来做效率更高。 人的工作(2):遍历预测区间,调用各函数,汇总结果。 人的工作(3):输出结果。和输入类似,ChatGPT对输出数据的路径、格式没有概念,这步交给人来做效率更高。 至此我们完成了对MACD个股择时信号的胜率、赔率统计。多、空信号胜率在50%左右,难言有效。多头胜率低于50%但赔率相对高,空头胜率高于50%但赔率相对低。 总的来看,ChatGPT基本可以胜任这类基础的量化分析代码任务,编程语言也不局限于Python,其他编程语言乃至Excel公式,都可以尝试交给ChatGPT生成。 案例2:网页抓取 目标:程序化抓取东方财富股吧评论。 方法:从原型代码出发,逐步添加需求。 东方财富股吧评论是使用较广泛的另类数据,可以反映短期散户投资者的情绪。通过网页抓取技术得到的文本结合自然语言处理技术,可以进行更为定量的多空情绪识别,是传统财务数据和行情数据的补充。 第1步:直接提出需求,写一段网页抓取代码,以某上市公司为例。 生成代码正确。东方财富股吧是网页抓取的入门级案例, GPT的训练语料很可能包含类似代码。ChatGPT还贴心地给出了风险提示。另外,我们没有给出该上市公司的股票代码,但ChatGPT正确回复了600519,表明中国A股市场文本也在训练语料中。 第2步:补充需求,保存为Excel。 生成代码正确。不足之处是保存的Excel中,阅读量、评论数、标题、作者、最后更新时间等字段保存在同一个单元格,我们希望分字段保存在各列。 第3步:补充需求,分字段保存。 生成代码有误,直接运行报错AttributeError: ‘NoneType’ object has no attribute ‘get_text’。 第4步:补充需求,解决报错。假设我们没有编程经验,不理解报错含义,我们可以直接将Python报错信息提交给ChatGPT。 生成代码正确,实现了分字段保存。Debug是编程的痛点之一,ChatGPT似乎也能应对。 第5步:补充需求,抓取多页。原代码只抓取了首页,我们希望抓取前10页。 生成代码正确,通过循环实现了分页抓取。 实验1:抓取2023年上市新股的股吧评论(无股票代码)。ChatGPT的训练数据截至2021年9月,如果要求ChatGPT抓取2023年上市新股的股吧评论,且不提供股票代码,ChatGPT会如何回应?如下图,ChatGPT给出的代码是600733,显然与我们希望抓取的新股代码不匹配。 实验2:抓取2023年上市新股的股吧评论(含股票代码)。我们在Prompt中补充股票代码,ChatGPT的回应中设置了变量stock_code储存股票代码,此时对于任意新股,只要给定股票代码,都可以实现股吧评论抓取。ChatGPT具备了一定程度的泛化能力。 总的来看,ChatGPT可以胜任这类网页抓取任务。东方财富股吧属于入门级别的网页抓取,在网络上有大量案例供GPT训练。对于相对小众或者难度较大的网页抓取任务,可能需要更高的Prompt技巧。 案例3:文字摘要 目标:将约10000字的速记稿总结成约2000字的会议纪要。 方法:ChatGPT3.5仅支持4096 tokens的上下文。需将原稿拆成约1000字的段落,分别概括大意并输出。 撰写文字摘要、会议纪要、信息整理等是投研人员常规工作,此类任务适合交给ChatGPT处理。 我们询问ChatGPT输入和输出字数限制,答复如下图,最大输入/输出长度为2048个字符,即1024个汉字。因此需要对原始文本进行合理拆分,每次输入1000字左右为宜。 这里又有一个新问题,Prompt(如“请将这段话总结成100个左右汉字的中文纪要)应写在提问的开头还是结尾?我们继续询问ChatGPT,答复如下图,应写在开头。我们在实验中也发现,当Prompt写在结尾时,ChatGPT可能无法正确领会意图,将摘要任务理解成翻译任务。 以下两张图展示拆分后的输入和输出。总的看,摘要正确概括了原文内容。文字处理是ChatGPT较为擅长的领域。自然语言相比代码冗余度更高,容错率也更高,生成质量整体较好。 案例4:行情复盘 目标:基于A股当日行情数据,编写复盘文字。 方法:提供行情数据和复盘样例,采用One-shot或Few-shot学习,生成质量更高。 撰写行情复盘也是投研人员常规工作。此类任务的难点是定性和定量描述相结合,文本需要和数据相匹配。 实验1:直接提供行情数据。以2023年4月17日为例,我们提供沪深两市日内30分钟频价格以及日度成交额,在Prompt中要求ChatGPT写一段中文股评。这里需要注意,尽管ChatGPT没有学过2021年9月之后的数据,但可以将新数据在Prompt中体现。 直接生成质量不佳。从形式角度看尚可;从内容角度看,对日内行情的分析不够,并且杜撰了部分内容。 在GPT3论文Language Models are Few-Shot Learners中,OpenAI团队证实GPT具有Zero-shot、One-shot和Few-shot学习的能力,基于少数例子甚至完全没有例子,GPT也能够理解指令实现相应功能。当然从测试表现看,Few-shot优于One-shot,One-shot也优于Zero-shot。前述实验1直接要求写复盘,相当于Zero-shot学习,我们可以尝试给出案例再要求写复盘,即采用One-shot学习。 实验2:提供行情数据和复盘样例。我们首先给出4月14日行情数据,并给出人工撰写的4月14日复盘。随后给出4月17日行情数据,要求ChatGPT给出相应复盘。 提供样例后生成质量显著提升,依次描述开盘、上午、午后、收盘行情,最后总结全天价、量情况。两条回答仍有小部分杜撰内容,需要后续少量人工修改,但整体质量在可接受范围。 实验3:前述实验的数据通过Wind API接口下载,可否要求ChatGPT编写下载数据代码?我们发现生成代码总体质量不错,但仍需要修改细节方能正确运行。相比前述MACD计算和网页抓取,Wind API代码更小众,可能在GPT训练语料中占比较小,因此生成质量相对差一些。不过对于有一定经验的开发者而言,在此基础上修改并不难。 风险提示: GPT生成内容不保证真实性。GPT生成内容具有随机性。人工智能挖掘市场规律是对历史的总结,市场规律在未来可能失效。人工智能技术存在过拟合风险。深度学习模型受随机数影响较大。 相关研报 研报:《金工:面向投资研究行业的GPT使用指南》2023年4月26日 林晓明 S0570516010001 | BPY421 何 康 S0570520080004 | BRB318 李子钰 S0570519110003 | BRV743 关注我们 华泰证券研究所国内站(研究Portal) https://inst.htsc.com/research 访问权限:国内机构客户 华泰证券研究所海外站 https://intl.inst.htsc.com/mainland 访问权限:美国及香港金控机构客户 添加权限请联系您的华泰对口客户经理 免责声明 ▲向上滑动阅览 本公众号不是华泰证券股份有限公司(以下简称“华泰证券”)研究报告的发布平台,本公众号仅供华泰证券中国内地研究服务客户参考使用。其他任何读者在订阅本公众号前,请自行评估接收相关推送内容的适当性,且若使用本公众号所载内容,务必寻求专业投资顾问的指导及解读。华泰证券不因任何订阅本公众号的行为而将订阅者视为华泰证券的客户。 本公众号转发、摘编华泰证券向其客户已发布研究报告的部分内容及观点,完整的投资意见分析应以报告发布当日的完整研究报告内容为准。订阅者仅使用本公众号内容,可能会因缺乏对完整报告的了解或缺乏相关的解读而产生理解上的歧义。如需了解完整内容,请具体参见华泰证券所发布的完整报告。 本公众号内容基于华泰证券认为可靠的信息编制,但华泰证券对该等信息的准确性、完整性及时效性不作任何保证,也不对证券价格的涨跌或市场走势作确定性判断。本公众号所载的意见、评估及预测仅反映发布当日的观点和判断。在不同时期,华泰证券可能会发出与本公众号所载意见、评估及预测不一致的研究报告。 在任何情况下,本公众号中的信息或所表述的意见均不构成对任何人的投资建议。订阅者不应单独依靠本订阅号中的内容而取代自身独立的判断,应自主做出投资决策并自行承担投资风险。订阅者若使用本资料,有可能会因缺乏解读服务而对内容产生理解上的歧义,进而造成投资损失。对依据或者使用本公众号内容所造成的一切后果,华泰证券及作者均不承担任何法律责任。 本公众号版权仅为华泰证券所有,未经华泰证券书面许可,任何机构或个人不得以翻版、复制、发表、引用或再次分发他人等任何形式侵犯本公众号发布的所有内容的版权。如因侵权行为给华泰证券造成任何直接或间接的损失,华泰证券保留追究一切法律责任的权利。华泰证券具有中国证监会核准的“证券投资咨询”业务资格,经营许可证编号为:91320000704041011J。
人工智能系列之66:四则案例展示如何使用GPT提升投研效率。人类社会发展的基本规律是先进生产力不断取代落后生产力。如同各行各业正在发生的变革一样,以GPT为代表的大语言模型也将重塑投资研究行业。本文通过(1)量化分析、(2)网页抓取、(3)文字摘要、(4)行情复盘四个案例,探讨 GPT在投资研究中可能的应用场景,展示如何使用ChatGPT提升投研效率,并分析ChatGPT使用技巧。总的来看,ChatGPT在代码编写、文本编写这两类任务上表现较好。一方面可以替代日常重复劳动,另一方面能拓展投研人员的能力圈。同时,生成高质量的回答需要提出正确的问题,我们通过实验总结出任务提示Prompt的若干经验。 核心观点 代码编写任务经验 (1)ChatGPT利好有代码基础但不熟练的开发者。可以省去大量网络搜索、查看帮助文档时间,大幅提升编程效率。(2)需要使用者有代码基础。ChatGPT生成的代码可能有错误,需要人工查错;另外,涉及输入数据、输出结果这些个性化程度较高的环节,人工实现效率可能更高。(3)做优秀的产品经理。项目解耦很重要,ChatGPT很难一步到位,将项目拆解成独立的子任务,引导ChatGPT写函数;明确需求很重要,指定函数的输入、输出变量名和格式。(4)代码出错没关系,可以提供报错信息要求ChatGPT修改。GPT支持4096个字符的上下文,能够在原有代码基础上修改。 文字编写任务经验 (1)文字处理是ChatGPT较为擅长的领域。自然语言相比代码冗余度更高,容错率也更高,生成质量整体较好。(2)任务提示Prompt应写在开头位置,实验表明当Prompt写在结尾时,ChatGPT可能无法正确理解意图。(3)GPT处理上下文字数有限制,需要拆分段落,合理分配每轮对话字数,输入以1000个左右汉字为宜。(4)对于编写行情复盘这类“半监督式任务”(有往期答案但没有当期答案),可以在Prompt中提供少量样例,GPT支持Few-shot或One-shot学习,基于样例的生成效果相比无样例更好。也不必担心GPT没有学习2021年9月后的数据,新信息同样可作为Prompt提供。 GPT助力投资研究案例四则 (1)量化分析。目标:检验MACD“金叉”“死叉”事件信号对个股收益预测能力。方法:将项目拆解成独立的子任务,引导ChatGPT写Python函数。(2)网页抓取。目标:程序化抓取东方财富股吧评论。方法:从原型代码出发,逐步添加需求。(3)文字摘要。目标:将约10000字的速记稿总结成约2000字的会议纪要。方法:ChatGPT3.5仅支持4096 tokens的上下文。需将原稿拆成约1000字的段落,分别概括大意并输出。(4)行情复盘。目标:基于A股市场当日行情数据,编写复盘文字。方法:提供行情数据和复盘样例,采用One-shot或Few-shot学习,生成质量高。 正 文 GPT应用于投资研究经验总结 人类社会发展的基本规律是先进生产力不断取代落后生产力。如同各行各业正在发生的变革一样,以GPT为代表的大语言模型也将重塑投资研究行业。 本文通过(1)量化分析、(2)网页抓取、(3)文字摘要、(4)行情复盘四则案例,探讨GPT在投资研究中可能的应用场景,展示如何使用ChatGPT提升投研效率,并分析ChatGPT使用技巧。 总的来看,ChatGPT在代码编写、文本编写这两类任务上表现较好。一方面可以替代日常重复劳动,另一方面能够拓展投研人员的能力圈。例如,主动投研人员希望引入量化分析工具,或者借助网页抓取获取非结构化数据,都可以尝试用ChatGPT生成Excel公式或Python等编程语言代码。同时,高质量的回答需要提出正确的问题,我们通过实验总结出任务提示Prompt的若干经验。 代码编写任务经验: 1.ChatGPT利好有代码基础但不熟练的开发者。可以省去大量网络搜索、查看帮助文档时间,大幅提升编程效率。 2.需要使用者有代码基础。ChatGPT生成的代码可能有错误,需要人工查错;另外涉及输入数据、输出结果这些个性化程度较高的环节,人工实现效率可能更高。 3.做优秀的产品经理。项目解耦很重要,ChatGPT很难一步到位,要将项目拆解成独立的子任务,引导ChatGPT写函数;明确需求很重要,要指定函数的输入、输出变量名和格式。 4.代码出错没关系,可以提供报错信息,要求ChatGPT修改。GPT支持4096个字符的上下文,能够在原有代码基础上修改。 文字编写任务经验: 1.文字处理是ChatGPT较为擅长的领域。自然语言相比代码冗余度更高,容错率也更高,生成质量整体较好。 2.任务提示Prompt应写在开头位置。实验表明当Prompt写在结尾时,ChatGPT可能无法正确理解意图。 3.GPT处理上下文字数有限制,需要拆分段落,合理分配每轮对话字数,输入以1000个左右汉字为宜。 4.对于编写行情复盘这类“半监督式任务”(有往期答案但没有当期答案),可以在Prompt中提供少量样例。GPT支持Few-shot或One-shot学习,基于样例的生成效果相比无样例更好。也不必担心GPT没有学习2021年9月后的数据,新的信息同样可以作为Prompt提供给ChatGPT。 我们让ChatGPT总结这两类任务的技巧,如下图所示,和前述经验较为符合,供读者参考。另外要说明的是,尽管本文中的案例均围绕GPT展开,随着越来越多大语言模型的开发和上线,或将诞生功能更强、使用更便捷、成本更低的GPT替代方案,这也是新生产力取代旧生产力的体现。 案例1:量化分析 目标:检验MACD“金叉”“死叉”事件信号对全市场个股收益预测能力。 方法:将项目拆解成独立的子任务,引导ChatGPT写Python函数。本文全部测试均基于ChatGPT3.5网页版实现。 MACD是经典的技术指标。当快线DIF自下而上穿过慢线DEA,此时MACD由负转正,这种形态通常称为金叉,为做多信号。反之,当快线DIF自上而下穿过慢线DEA,此时MACD由正转负,这种形态通常称为死叉,为做空信号。MACD指标对全市场个股是否具备择时能力?我们将借助ChatGPT生成量化分析代码进行检验。 ChatGPT的工作(1):计算MACD。人的提问也称为Prompt,我们在Prompt中明确输入数据变量名、类型和具体定义,并指定生成Python代码。 生成代码总体正确,并且包含注释和解读。但ChatGPT对输入数据格式理解有误。Prompt中指定输入的收盘价矩阵,index为股票代码,columns为日期。但代码的输入变量,index为日期,columns为股票代码。我们认为此处ChatGPT的错误完全可以接受,因为Python DataFrame的习惯用法是将index定义为时间轴,ChatGPT学习大量代码语料,生成结果贴近习惯用法。与其改变ChatGPT,不如改变自己,后文我们将输入数据进行转置调整。 ChatGPT的工作(2):发“金叉”“死叉”信号。金叉代表MACD由负转正,发做多信号;死叉代表MACD由正转负,发做空信号。 生成代码总体正确。唯一的错误是函数内部第一行的pct_change()应删除。 ChatGPT的工作(3):计算未来horizon个交易日收益率。预测区间长度horizon为变量,之后我们将对其进行遍历。 生成代码正确。注意这里我们没有在Prompt中指定输入数据的格式,由于ChatGPT支持4096个token的上下文,无需铺垫背景也可正常理解人类意图。 ChatGPT的工作(4.1):统计正数和负数数量,计算胜率使用。之后我们将从(3)输出的区间收益率矩阵中,分别根据(2)输出的多空信号,提取做多或做空信号下股票的区间收益率,并统计做多或做空胜率。 生成代码正确。 ChatGPT的工作(4.2):统计正数和负数均值,计算赔率使用。 生成代码有误。ChatGPT这里没有考虑缺失值的影响。代码先对单个股票全部日期信号求均值,再对全部股票求均值(column-wise);实际应对全部信号求均值(element-wise)。当各行列缺失值数量不一致时,原代码会造成较大偏差。 ChatGPT的工作(4.2):统计正数和负数均值,计算赔率使用。第二次生成补充要求,考虑各行列缺失值。 生成代码正确。有意思的是我们没有明示ChatGPT修改,但ChatGPT“情商很高”,回答的第一句话表明理解了我们的意图。 人的工作(1):输入数据及预处理。ChatGPT对输入数据的路径、格式没有概念,预处理涉及较多细节,这步交给人来做效率更高。 人的工作(2):遍历预测区间,调用各函数,汇总结果。 人的工作(3):输出结果。和输入类似,ChatGPT对输出数据的路径、格式没有概念,这步交给人来做效率更高。 至此我们完成了对MACD个股择时信号的胜率、赔率统计。多、空信号胜率在50%左右,难言有效。多头胜率低于50%但赔率相对高,空头胜率高于50%但赔率相对低。 总的来看,ChatGPT基本可以胜任这类基础的量化分析代码任务,编程语言也不局限于Python,其他编程语言乃至Excel公式,都可以尝试交给ChatGPT生成。 案例2:网页抓取 目标:程序化抓取东方财富股吧评论。 方法:从原型代码出发,逐步添加需求。 东方财富股吧评论是使用较广泛的另类数据,可以反映短期散户投资者的情绪。通过网页抓取技术得到的文本结合自然语言处理技术,可以进行更为定量的多空情绪识别,是传统财务数据和行情数据的补充。 第1步:直接提出需求,写一段网页抓取代码,以某上市公司为例。 生成代码正确。东方财富股吧是网页抓取的入门级案例, GPT的训练语料很可能包含类似代码。ChatGPT还贴心地给出了风险提示。另外,我们没有给出该上市公司的股票代码,但ChatGPT正确回复了600519,表明中国A股市场文本也在训练语料中。 第2步:补充需求,保存为Excel。 生成代码正确。不足之处是保存的Excel中,阅读量、评论数、标题、作者、最后更新时间等字段保存在同一个单元格,我们希望分字段保存在各列。 第3步:补充需求,分字段保存。 生成代码有误,直接运行报错AttributeError: ‘NoneType’ object has no attribute ‘get_text’。 第4步:补充需求,解决报错。假设我们没有编程经验,不理解报错含义,我们可以直接将Python报错信息提交给ChatGPT。 生成代码正确,实现了分字段保存。Debug是编程的痛点之一,ChatGPT似乎也能应对。 第5步:补充需求,抓取多页。原代码只抓取了首页,我们希望抓取前10页。 生成代码正确,通过循环实现了分页抓取。 实验1:抓取2023年上市新股的股吧评论(无股票代码)。ChatGPT的训练数据截至2021年9月,如果要求ChatGPT抓取2023年上市新股的股吧评论,且不提供股票代码,ChatGPT会如何回应?如下图,ChatGPT给出的代码是600733,显然与我们希望抓取的新股代码不匹配。 实验2:抓取2023年上市新股的股吧评论(含股票代码)。我们在Prompt中补充股票代码,ChatGPT的回应中设置了变量stock_code储存股票代码,此时对于任意新股,只要给定股票代码,都可以实现股吧评论抓取。ChatGPT具备了一定程度的泛化能力。 总的来看,ChatGPT可以胜任这类网页抓取任务。东方财富股吧属于入门级别的网页抓取,在网络上有大量案例供GPT训练。对于相对小众或者难度较大的网页抓取任务,可能需要更高的Prompt技巧。 案例3:文字摘要 目标:将约10000字的速记稿总结成约2000字的会议纪要。 方法:ChatGPT3.5仅支持4096 tokens的上下文。需将原稿拆成约1000字的段落,分别概括大意并输出。 撰写文字摘要、会议纪要、信息整理等是投研人员常规工作,此类任务适合交给ChatGPT处理。 我们询问ChatGPT输入和输出字数限制,答复如下图,最大输入/输出长度为2048个字符,即1024个汉字。因此需要对原始文本进行合理拆分,每次输入1000字左右为宜。 这里又有一个新问题,Prompt(如“请将这段话总结成100个左右汉字的中文纪要)应写在提问的开头还是结尾?我们继续询问ChatGPT,答复如下图,应写在开头。我们在实验中也发现,当Prompt写在结尾时,ChatGPT可能无法正确领会意图,将摘要任务理解成翻译任务。 以下两张图展示拆分后的输入和输出。总的看,摘要正确概括了原文内容。文字处理是ChatGPT较为擅长的领域。自然语言相比代码冗余度更高,容错率也更高,生成质量整体较好。 案例4:行情复盘 目标:基于A股当日行情数据,编写复盘文字。 方法:提供行情数据和复盘样例,采用One-shot或Few-shot学习,生成质量更高。 撰写行情复盘也是投研人员常规工作。此类任务的难点是定性和定量描述相结合,文本需要和数据相匹配。 实验1:直接提供行情数据。以2023年4月17日为例,我们提供沪深两市日内30分钟频价格以及日度成交额,在Prompt中要求ChatGPT写一段中文股评。这里需要注意,尽管ChatGPT没有学过2021年9月之后的数据,但可以将新数据在Prompt中体现。 直接生成质量不佳。从形式角度看尚可;从内容角度看,对日内行情的分析不够,并且杜撰了部分内容。 在GPT3论文Language Models are Few-Shot Learners中,OpenAI团队证实GPT具有Zero-shot、One-shot和Few-shot学习的能力,基于少数例子甚至完全没有例子,GPT也能够理解指令实现相应功能。当然从测试表现看,Few-shot优于One-shot,One-shot也优于Zero-shot。前述实验1直接要求写复盘,相当于Zero-shot学习,我们可以尝试给出案例再要求写复盘,即采用One-shot学习。 实验2:提供行情数据和复盘样例。我们首先给出4月14日行情数据,并给出人工撰写的4月14日复盘。随后给出4月17日行情数据,要求ChatGPT给出相应复盘。 提供样例后生成质量显著提升,依次描述开盘、上午、午后、收盘行情,最后总结全天价、量情况。两条回答仍有小部分杜撰内容,需要后续少量人工修改,但整体质量在可接受范围。 实验3:前述实验的数据通过Wind API接口下载,可否要求ChatGPT编写下载数据代码?我们发现生成代码总体质量不错,但仍需要修改细节方能正确运行。相比前述MACD计算和网页抓取,Wind API代码更小众,可能在GPT训练语料中占比较小,因此生成质量相对差一些。不过对于有一定经验的开发者而言,在此基础上修改并不难。 风险提示: GPT生成内容不保证真实性。GPT生成内容具有随机性。人工智能挖掘市场规律是对历史的总结,市场规律在未来可能失效。人工智能技术存在过拟合风险。深度学习模型受随机数影响较大。 相关研报 研报:《金工:面向投资研究行业的GPT使用指南》2023年4月26日 林晓明 S0570516010001 | BPY421 何 康 S0570520080004 | BRB318 李子钰 S0570519110003 | BRV743 关注我们 华泰证券研究所国内站(研究Portal) https://inst.htsc.com/research 访问权限:国内机构客户 华泰证券研究所海外站 https://intl.inst.htsc.com/mainland 访问权限:美国及香港金控机构客户 添加权限请联系您的华泰对口客户经理 免责声明 ▲向上滑动阅览 本公众号不是华泰证券股份有限公司(以下简称“华泰证券”)研究报告的发布平台,本公众号仅供华泰证券中国内地研究服务客户参考使用。其他任何读者在订阅本公众号前,请自行评估接收相关推送内容的适当性,且若使用本公众号所载内容,务必寻求专业投资顾问的指导及解读。华泰证券不因任何订阅本公众号的行为而将订阅者视为华泰证券的客户。 本公众号转发、摘编华泰证券向其客户已发布研究报告的部分内容及观点,完整的投资意见分析应以报告发布当日的完整研究报告内容为准。订阅者仅使用本公众号内容,可能会因缺乏对完整报告的了解或缺乏相关的解读而产生理解上的歧义。如需了解完整内容,请具体参见华泰证券所发布的完整报告。 本公众号内容基于华泰证券认为可靠的信息编制,但华泰证券对该等信息的准确性、完整性及时效性不作任何保证,也不对证券价格的涨跌或市场走势作确定性判断。本公众号所载的意见、评估及预测仅反映发布当日的观点和判断。在不同时期,华泰证券可能会发出与本公众号所载意见、评估及预测不一致的研究报告。 在任何情况下,本公众号中的信息或所表述的意见均不构成对任何人的投资建议。订阅者不应单独依靠本订阅号中的内容而取代自身独立的判断,应自主做出投资决策并自行承担投资风险。订阅者若使用本资料,有可能会因缺乏解读服务而对内容产生理解上的歧义,进而造成投资损失。对依据或者使用本公众号内容所造成的一切后果,华泰证券及作者均不承担任何法律责任。 本公众号版权仅为华泰证券所有,未经华泰证券书面许可,任何机构或个人不得以翻版、复制、发表、引用或再次分发他人等任何形式侵犯本公众号发布的所有内容的版权。如因侵权行为给华泰证券造成任何直接或间接的损失,华泰证券保留追究一切法律责任的权利。华泰证券具有中国证监会核准的“证券投资咨询”业务资格,经营许可证编号为:91320000704041011J。
大部分微信公众号研报本站已有pdf详细完整版:https://www.wkzk.com/report/(可搜索研报标题关键词或机构名称查询原报告)
郑重声明:悟空智库网发布此信息的目的在于传播更多信息,与本站立场无关,不构成任何投资建议。