我用ChatGPT撸了一个量化回测引擎产品(一)

牛小乐超短 2023-04-14 15:28:27 731阅读 举报

在昨天发了一篇小作文用ChatGPT写三角套利策略之后,对最近在搞的量化回测这个轮子有了新的想法。此文有点长,文后有Github代码库,今后将持续更新这个量化回测引擎,看看完成这样一个产品需要多少时间。

一、ChatGPT编程模式的思考

  • 根据不同的上下文,相同的问题会给出不同的答案;
  • 通过提出一个问题,让ChatGPT给出个粗略的框架性解决方案
  • 根据对业务的理解,在粗略的框架基础之上使用抽象方法、解耦关系、封装对象等方式以重构的形式进行开发
  • 同步使用ChatGPT对业务本身展开讨论,以完善业务需求框架,并以此输出业务代码。
  • 得到一个好产品的前提是明白自己需要什么,并能提出一个好问题,这个过程也将是可迭代升级的。

二、上车调教

1、提出一个问题,得到一个粗略的框架性解决方案

ChatGPT给出的框架非常简陋,但已经有很好的注释,这个有点小意外,这个输出可以让我更好的沉浸在需求的阐述中,而且当我不知道提出更细化的问题时,可以用“继续”引导它进一步深入输出代码,而不需要马上另外展开其他问题。
有时ChatGPT会断线,会有重复的答案,但会在上次的基础略有修改,这个时候可以提出新的问题展开

2、展开一个新问题

这里生成的一个Strategy基类,和一个继承的子类,并演示了一个移动均线的策略
这里它跳回到了回测引擎中的收益率计算模块,并根据上一次的策略信号进行“模拟撮合“,虽然这个撮合很简陋,但已经包括了手续费和滑点的成本计算,居然考虑了滑点???这点是我所思考的时候遗漏的。好吧,它又一次惊艳到我了。
好像使用三次”继续“ 就将会把它榨干,或许它也不希望依此展开。

3、完善Backtest初始化

这里它给出了一个新语法,Callable[[np.ndarray],np.ndarray],唉技术水平菜,有点被Dis的感觉
不耻下问,随便提高下技术水平。
这里的重构也比较有意思的,它知道ohlcv是什么意思,并且使用字典形式以支持多品种
另外会自动优化了信号的生成,以遍历所有品种,不过解决方法还是最佳的,这里会导致循环过多,计算复杂度会指数级上升。

4、上小皮鞭,增加难度

反馈还是不错,而且知道根据symbol获取对应信号的数值,而且在解释方案中很会顺着你的意思说明,并补充完整。
这里的因子计算使用了独立的函数,而且参数是固定死,这个解决不优雅
继续小皮鞭抽,但好像一次最好一个问题,多了它有点吼不住
第一天大概使用了2小时,完成了一个简陋的框架,这里有不足处就是在后期已经在单独计算收益率的函数,但在run函数中又使用了第一次的方法,好似忘记了自己输出的新方法,对上文的理解还是差很多。

后续将持续迭代更新,直至能正常使用,并即于此使用ChatGPT开始生成策略。

版权声明:
作者:牛小乐
链接:https://www.gushenbiji.com/p/928d7b27feb5e.html
来源:超短
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以点击 “举报”


登录 后发表评论
0条评论
还没有人评论过~