2023年ChatGPT应用探讨系列之五:Code Interpreter在金融市场数据分析中的应用

  • 来源:方正证券
  • 发布时间:2023/07/20
  • 浏览次数:747
  • 举报
相关深度报告REPORTS

ChatGPT应用探讨系列之五:Code Interpreter在金融市场数据分析中的应用.pdf

ChatGPT应用探讨系列之五:CodeInterpreter在金融市场数据分析中的应用。继OpenAI推出网络浏览及多项插件功能后,2023年7月9日,OpenAI继续向Plus用户推出新的内部插件——CodeInterpreter。CodeInterpreter是ChatGPT提供的一个可以在防火墙执行环境中运行的Python解释器,以及一些临时的内存空间。ChatGPTPlus用户可以通过CodeInterpreter来执行Python代码、进行数据分析、运行数学计算、处理文件以及获得可视化结果。用户甚至并不必懂得编码过程,只需将任务需求告知ChatGPT,即可得...

1 引言

继 OpenAI 推出网络浏览及多项插件功能后,2023 年 7 月 9 日,OpenAI 继续向 Plus 用户推出新的内部插件——Code Interpreter。Code Interpreter 是 ChatGPT 提供的一个可以在防火墙执行环境中运行的 Python 解释器,以及一些 临时的内存空间。Code Interpreter 支持将文件上传到当前对话工作区完成分 析与计算,并下载工作结果。 ChatGPT Plus 用户可以通过 Code Interpreter 来执行 Python 代码、进行数据 分析、运行数学计算、处理文件以及获得可视化结果。用户甚至并不必懂得编 码过程,只需将任务需求告知 ChatGPT,即可得到相应的结果。Code Interpreter 的上线大幅提升了 ChatGPT 在数据分析方面的能力,可以进一步提 升用户的工作效率。

出于安全考虑,ChatGPT 使用严格的网络控制来防止执行代码访问外部互联网。 此外,ChatGPT 还为每个会话设置了资源限制。发布之初,官方已经列举了使用 Code Interpreter 的有效场景,例如解决定量和定性的数学问题,进行数据分 析和可视化以及在格式之间转换文件等。 金融投研领域涉及大量的数据分析与处理,而 Code Interpreter 在数据处理方 面拥有强大的优势,本文中我们将重点介绍 Code Interpreter 在金融投资领域 中的一些使用案例,进一步介绍如何通过 ChatGPT 辅助提升投研工作效率。

2 Code Interpreter 数据分析与可视化

Code Interpreter 为用户提供了一个解决问题的通用工具箱(通过 Python 代码 实现),一个可以使用的内存空间(能够上传文件,且这些文件可以是压缩形 式)。因此用户可借助 Code Interpreter 完成复杂的数学问题求解,以及大量 探索性分析和可视化工作。

Code Interpreter 的使用非常简单,如同其他插件功能一样,plus 用户只需要 在新建会话窗口时选中 Code Interpreter,即可在聊天窗使用该功能。点击聊 天窗左端的“+”即可上传本地文件,需要注意的是每次只能上传一个文件,官 方提示最大可上传 512M 的文件,但实际测试时当文件超过 100M 时上传速度非 常慢且可能中断,因此建议将较大的文件压缩为.zip 的格式再上传。

此外,Code Interpreter 的默认运行环境中缺少中文字体,因此在可视化显示 时如需显示中文的图标会出现乱码。不过用户可以自行上传中文字体文件,并 指定其使用来解决。

2.1 数学计算

ChatGPT 本身在文本处理、逻辑推理方面有较强的优势,但在数学计算等方面存 在较大不足,我们在报告《ChatGPT 投资相关插件测试及策略开发——ChatGPT 应用探讨系列之四》中介绍了如何使用第三方插件 Wolfram 来弥补 ChatGPT 在 数学方面的短板。此次 Code Interpreter 的上线,同样可以大幅提升 ChatGPT 本身的数学计算能力。 Code Interpreter 完成数学计算的过程本质上是通过 Python 程序调用 SymPy 库 等专业工具完成任务求解。SymPy 库支持符号计算、高精度计算、模式匹配、绘 图、解方程、微积分、组合数学、离散 数学、几何学、概率与统计、物理学等 方面的功能。因此通过 Code Interpreter 可以完成大量基础数学问题的求解。

然而,在处理较为复杂的问题是,Code Interpreter 可能会存在一些不足。 Wolfram Alpha 的首席科学家 Michael Trott 在 Wolfram 社区展示了对 Code Interpreter 和 Wolfram Plugin 在解决数学问题时的对比实验。该实验中选取 了 100 道数学问题,大多来自于数学杂志、大学数学竞赛、数学奥林匹克等资 源,然后分别用两种工具尝试解决这些问题。实验结果显示 Walfram Plugin 解 决了全部问题,而 Code Interpreter 成功解决了大约 50%的问题。在 Code Interpreter 成功解决问题的情况下,Michael Trott 还比较了实际代码的长 度。平均而言,Wolfram 语言代码的大小约为 Code Interpreter 的 Python 代 码的 27%。因此对于复杂数学问题的求解,我们仍然推荐使用 Wolfram Plugin 来完成。

2.2 数据分析与可视化

Code Interpreter 拥有强大的数据分析与可视化能力,本节中我们上传了一段 航空公司乘客满意度调查问卷的数据,借助 Code Interpreter 的数据分析能 力,来判断各因素与乘客满意度之间的关系并可视化。Code Interpreter 首先 通过对数值特征进行相关性分析和对分类特征进行分组均值比较来了解各个特 征与满意度之间的关系。

2.3 自然语言处理

Code Interpreter 还拥有强大的自然语言处理能力,本节中我们上传一段 ChatGPT APP 的评论数据,通过 Code Interpreter 来对其进行评分分析及语义 分析。

进一步,我们可以让其筛选出 5 星评价中的评论内容,统计其中的高频词汇并 制作词云图。不过由于目前 code interpreter 环境没有互联网访问权限,所以 无法下载 Python 下自然语言处理中最常用的 NLTK 库,因此分词、停用词的处 理等并不理想。

3 Code Interpreter 金融数据分析案例测试

3.1 科创板公司上市审核分析

近期科创板迎来开板四周年,作为注册制改革的第一块“试验田”,科创板坚守 “硬科技”定位,战略性新兴产业集聚效应凸显,科创企业持续加码研发投 入,推进关键核心技术攻关。 截至 2023 年 7 月 17 日,科创板已有 542 家上市公司,合计总市值约为 7.17 万 亿元,已成为我国资本市场的重要组成部分和服务实体经济、解决科创企业融 资需求的重要板块。 我们提取了科创板所有上市审核的公司情况,包括其受理批次、审核状态、科 创主题、上市标准、募资金额、保荐机构、注册地等多维度信息,我们可以借 助 Code Interpreter 来快速实现信息整理与可视化工作。

点击结果中的“Show work”,即可看到数据分析的源码,包括文件读取、数据 处理以及图表展示都是通过 Python 代码实现,用户也可以将代码段复制到本地 保存,以便日后在本地处理同样的任务。

3.2 公募基金重仓股分析

公募基金是 A 股市场最重要的机构投资者之一,其持仓变动受到市场高度关 注。本案例中我们以市场最为关注的主动权益型基金(普通股票型+偏股混合型 +灵活配置型)重仓股为例,测试如何通过 Code Interpreter 来快速完成不同 维度信息的汇总分析与可视化。此处我们提取了自 2018 年以来每个季度的公募 基金重仓股信息,包含其行业信息与上市板块等,由于最新的 2023 年二季报尚 未披露完毕,因此数据截止至 2023 年一季度。

3.3 财务造假预测模型

在报告《ChatGPT 投资相关插件测试及策略开发——ChatGPT 应用探讨系列之 四》中我们介绍了如何通过 Noteable Plugin 来完成财务造假预测模型的构 建,本节中我们尝试使用 Code Interpreter 来完成同样的任务。我们筛选了 2002 年之后,部分 A 股市场被中国证监会、沪深两市交易所公开确定为财务造 假的上市公司。剔除 IPO 之前以及新股上市当年造假的数据,对于同一家上市 公司连续多个年度造假的数据,仅保留其首次造假年份作为研究数据。此外, 我们采用控制样本匹配法,选取造假样本当年同行业所在的上市公司(剔除被 证监会、交易所处罚的公司)作为对照样本。 在特征指标筛选方面,我们结合公司参与年报财务造假的动机、常见的手段, 重点以财务指标为研究对象,整理了包括审计师意见、前一年度是否亏损、前 五大股东占比、应收账款占流动资产比例、预付款项占流动资产比例、其他应 收款占流动资产比例等一系列指标作为特征指标来训练模型。

可以看到,与 Noteable Plugin 类似,Code Interpreter 在编写程序运行过程 中遇到的错误,都会快速的自行解决直至顺利运行,大幅提升了工作效率。

与 Noteable Plugin 类似,Code Interpreter 在模型评估之后也会针对性的给 出特定的改进建议,我们可以根据这些建议与其多次交互测试,直至达到理想 的训练效果。然而需要说明的是,由于目前 Code Interpreter 不具备联网功 能,因此当模型需要使用复杂模型时,可能遇到在当前环境下没有安装相应的 库而导致无法完成任务的情况。例如当我们想使用深度学习模型时,会提示在 当前环境下无法使用 TensorFlow、Keras 或 PyTorch 等深度学习库。此外,深 度学习通常需要大量的计算资源(如 GPU)和大量的数据,这也可能会超出 Code Interpreter 的限制。

3.4 因子选股模型测试

除以上常用的金融数据分析与可视化之外,我们尝试一个更加实际的投资问 题。我们筛选了 99 个财务、估值等相关的因子,以及个股的市值、行业以及未 来一期的涨跌幅数据,数据区间为 2013 年 1 月至 2023 年 6 月。由于数据量较 大,我们将其压缩为.zip 格式后将其上传给 Code Interpreter,让其分析哪些 因子可能对股票未来收益率有较强的预测能力。 在量化研究中,这是最常见的单因子检验工作,有标准的流程和规则来验证和 筛选有效因子,此处我们仅用来测试 Code Interpreter 能否解决类似的大规模 数据分析问题。

从上述结果来看,Code Interpreter 选择了通过随机森林模型来训练模型并查 看各个特征的重要性,然而遗憾的是由于数据量过大导致出现了内存错误,进 一步缩小数据规模后依然无法运行。 在我们要求其使用线性回归模型后依然遇到同样的问题,由此可见 Code Interpreter 由于资源限制并不适合用来做大规模的数据训练和挖掘,相较而 言,对于量化用户或需要使用大规模数据挖掘的用户,我们建议使用 Noteable Plugin 来完成相应任务。

4 Code Interpreter 的限制与不足

综上所述,Code Interpreter 拥有强大的数学计算、数据分析及可视化的能 力,对于金融领域中的常见的数据分析与统计任务,可以高效完成,大幅提升 工作效率,然而 Code Interpreter 也存在诸多限制与不足:

1)互联网访问限制:Code Interpreter 目前无法访问互联网,它无法直接从网 络获取数据或与在线 API 交互。这也限制了 Code Interpreter 处理复杂任务的 能力,如上文案例所示,由于无法下载 TensorFlow、Keras 或 PyTorch 等深度 学习库,Code Interpreter 在深度学习模型训练方面明显不足。

2)文件大小限制:Code Interpreter 对单次文件大小的限制最大为 512MB。通 常建议可上传的单个文件大小最大为 100MB。上传文件时可以将数据压缩为.zip 文件处理。 因为该功能主要是用于交互式会话中进行计算以及数据分析而非超大规模数据 处理。如果上传的文件越大,则处理的速度越慢,占用的内存越多。因此不建 议使用 Code Interpreter 来处理大规模数据。

3)编程语言限制:目前 Code Interpreter 仅支持 Python 代码。其他编程语言 需要复制代码到自己在开发环境中运行。

4)Python 库限制:由于联网限制,目前 Code Interpreter 不允许安装外部 Python 库。但是,编码环境预装了 330 多个常用的库。这包括但不限于用于数 值计算的 numpy,用于数据操作和分析的 pandas,用于数据可视化的 matplotlib 以及用于计算机视觉任务的 OpenCV 等,对于日常的数据分析与可视 化已足够,但复杂任务可能无法很好的完成。

5)环境持久性限制:正如 Code Interpreter 官方介绍中写道,在聊天对话期 间活动状态具有使用时间上限,如果超时则当前环境可能死亡,整个状态就会 丢失。如果用户关闭了页面隔一段时间,OpenAI 会关闭之前分配的环境和资 源,下次再进入会话页面开始提问,会丢失之前的上下文,比如上传的文件等 内容。如果继续使用该对话,Code Interpreter 会不断尝试重新加载数据和脚 本。所以此时用户最好开启一个新的会话,然后重新上传文件进行分析。

6)中文字体缺失:Code Interpreter 预装环境中没有较好的中文字体库,因此 在可视化过程中中文显示有误,但用户可自行上传中文字体库来弥补这一缺 陷。


(本文仅供参考,不代表我们的任何投资建议。如需使用相关信息,请参阅报告原文。)

相关报告
评论
  • 相关文档
  • 相关文章
  • 全部热门
  • 本年热门
  • 本季热门
  • 全部热门
  • 本年热门
  • 本季热门
  • 最新文档
  • 最新精读
分享至