ChatGPT官网

使用ChatGPT开发股票量化策略

chatgpt2023-05-13 20:56:57218

先做个广告:如需购买GPT帐号或代充值Chatgpt Plus(GPT4)会员,请添加站长客服微信:GPTchongzhi(备注好你的需求)

使用ChatGPT开发股票量化策略

【本文只分享策略的原理,不推荐实盘交易

推荐使用GPT中文版,国内可直接访问:https://ai.gpt86.top 

TL;DR

使用chatGPT可以提高编写策略的效率。但对于不了解量化或编程的人来说,只使用chatGPT难以开发一个可实盘的量化策略

环境准备

  1. joinquant的账号(注册地址)
  2. ChatGPT账号(注册地址)[本次使用的是chatGPT4,chatGPT3.5也可以]

策略

本次要实现策略来源于德邦证券的一篇研报《金工小市值专题之一:小市值策略初探》。根据研报的描述,小市值策略的投资逻辑主要有以下四点

  1. 规模溢价:通过统计发现,中国A股市场中,公司规模和股票风险溢价存在负相关关系[1]
  2. 卖空限制:由于中国股市没有完善的卖空机制,导致在一定时间范围内,股票的价格会更容易被错误定价;
  3. 投资者结构:中国股市中散户比例比较高,而散户对小市值股票会更加关注;
  4. **壳价值**[2]:由于中国股市IPO采用的是核准制,上市的成本和要求都比较严格,因此一些公司会选择借壳上市,而借的这个壳,一般是会选择收购一些小市值的上市公司;

原始小市值策略也比较简单,即从基础股票池中筛选出流通市值最小的100只股票进行买入。如果持有的股票不在这100只股票里,则卖出。每个月调仓一次。基础股票池的条件为:

  1. 股票上市满1年;
  2. 不属于ST、*ST的股票;
  3. 股票换仓日尾盘非涨停;
  4. 非注册制、非北交所的股票;

开发流程

其实也没有什么好说的,毕竟chatGPT比较智能,就直接把你的需求跟他说就好,你能说的越具体(prompt工程),他写的代码就能越正确。比如在描述策略的时候,对话是

现在我需要在joinquant平台上面实现一个量化策略,具体描述如下:

交易市场: 中国A股市场

策略逻辑: 根据以下条件筛选出股票候选池:1.排除 ST 股、*ST 股;2. 排除北交所股票;3. 排除上市不满 20 日的次新股票。然后从候选池中选取流通市值最小的100只股票作为交易候选池。如果持有的股票不在交易候选池中则卖出。如果交易候选池的股票没有持有,则使用可用资金平均进行买入

调仓频率: 每个月的首个交易日

第一部分对话 - 背景设定

第一部分对话是为了确认chatGPT是否有joinquant平台开发的背景知识,它给了我一个示例策略的代码。不过这份代码在joinquant上面运行的时候是报错的。错误的原因是chatGPT编造了一个joinquant平台下单的API:order_target_percent,虽然把错误信息给到chatGPT后,它能识别出错误的原因,但是给出来新代码仍然是错误的。

这个时候就需要提供更多的信息,可以直接从joinquant平台上面找到下单的接口文档然后贴进去。这次chatGPT能够识别出需要的下单函数,并且给出可运行的代码。

第二部分对话 - 策略开发

第二部分对话开始开发小市值策略,chatGPT根据之前的描述给出了对应的代码,从结构上来看是正确的。但是遇到的问题和之前是一样的,chatGPT仍然会编造各种API,导致了报错,处理的方式和之前一样

最终chatGPT给出了在joinquant平台上面一个可运行的策略代码(代码地址)。整体逻辑和描述的基本一致,但是有些细微的地方实现还有问题,具体为:

  1. 逻辑错误:get_stock_pool函数只取了100只股票来作为候选池,实际上应该取所有满足条件的股票;
  2. 未来函数:使用了get_price函数在开盘时间点来获取当天的数据,这个在当前策略下不会影响到回测结果,但是该策略是无法实盘运行。并且chatGPT未能识别这个问题;

策略表现

收益概述
回测时间190101 - 230427
策略收益80.59%
年化收益15.13%
超额收益36.32%
最大回撤19.40%

总结

亮点:

  1. 将自然语言转变为代码:能根据需求的文字描述生成代码
  2. 纠错:贴出报错信息后能够找到报错的原因以及改正代码,和开发时候的debug有点像
  3. 接受上下文信息:不是简单的一问一答的方式
  4. 支持中文

缺点:

  1. 领域知识缺失:由于chatGPT是通用领域的模型,对于特定的领域知识,需要额外训练
  2. 无中生有:受第一点的影响,经常编各种不存在API
  3. 回答生成的内容有长度限制,如果代码过长就得分成好几段输出
  4. chatGPT4限制3小时25个对话。。。。。

优化思路:

  1. 借助langchain[3]框架
  2. 利用openai平台提供的fine-tuning API[4]

参考资料

[1]

崔劲,殷霞,豁秋菊: CAPM模型在中国资本市场的改进研究——基于规模溢价的实证分析.

[2]

屈源育,沈涛,吴卫星: 上市公司壳价值与资源配置效率

[3]

langchain: https://github.com/hwchase17/langchain

[4]

fine-tuning: https://platform.openai.com/docs/guides/fine-tuning


chatgpt plus代充

本文链接:https://chatgpt.wenangpt.com/chatgpt/83.html

chatgpt相关文章