QuantML-Qlib LLM | GPT-4o复现因子计算代码

QuantML-Qlib LLM | GPT-4o复现因子计算代码

原创 QuantML QuantML 2024-05-17 15:23

Content

自2017年Google引入Transformer架构以来,语言模型(LMs)通常以判别性或生成型目标进行预训练。判别性预训练使用掩蔽语言模型预测下一句,而生成性预训练则预测下一个词。文章通过图1展示了从一般领域LMs到金融领域LMs的演进时间线。

大型语言模型(LLMs)在金融量化领域的应用可以非常广泛,因为量化金融涉及到大量的数据处理、模式识别、预测分析等任务,这些正是LLMs能够大展身手的地方。

我们将开设一个专注于LLM在量化金融领域应用的专栏。该专栏将深入探讨一系列主题,包括:

  1. 模型部署:介绍如何将大型语言模型有效地集成到量化分析和交易系统中。

  2. LangChain:探讨如何利用语言模型构建和优化量化交易中的链式数据处理流程

  3. RAG(Retrieval-Augmented Generation):分析如何通过增强检索来提升模型在处理金融数据时的准确性和可靠性。

  4. 因子计算:讨论如何运用LLMs来识别和计算alpha因子。

  5. 策略构建:分享如何结合LLMs的分析能力来设计和实施量化交易策略。

在运用大型语言模型(LLM)构建因子时,有两条策略路径:其一,是将LLM作为强化学习(RL)中的智能体,通过持续的学习与进化,精炼并提升现有的因子模型。其二,则是利用LLM的分析能力,直接实现现有因子的计算。

本文将聚焦于第二种方案的深入探讨,即如何通过文本或图片信息,引导LLM生成因子的计算代码。

1. LLM部署

通常来讲,在本地调用大模型有两种方案,一是使用商业API接口,利用gpt,kimi等,二是在本地部署开源大模型,例如qwen,llama等。另外还有一种非通用方案,使用逆向API的方式调用大模型,参考各类free-xxx-api项目。

本文我们采用目前多模态上表现最好的两个中英文模型gpt-4o和kimi

gpt-4o采用OPENAI的API接口,需要自行准备。

kimi 采用free-kimi-api项目(https://github.com/LLM-Red-Team/kimi-free-api),通过以下命令安装(首先确保电脑安装docker):

 docker run -it -d --init --name kimi-free-api -p 8000:8000 -e TZ=Asia/Shanghai vinlic/kimi-free-api:latest

在kimi的网页端获取refresh_token, 即可在本地启用kimi的API服务。API接口和openai保持一致,确保了各类插件和前端能够快速调用。

free-kimi-api详细教程参考github官方文档。

2. LLM生成因子计算代码

因子是构建投资策略的关键。通常,这些信息可从研究报告、学术论文等多种渠道获取。为了简化这一过程,本文采用了QIML的因子日历,该日历对券商研究报告中的因子进行了系统的梳理和总结,极大地减少了投资者自行搜集和整理因子信息的工作量。

具体操作步骤如下:

  1. 将因子日历的PDF文档复制至QuantML-Qlib项目中的examples/alphazoo/alphagpt/data/factorcalendar目录。

  2. 利用pdf_to_images.py脚本,该脚本能够将PDF文件转换为图像格式。

生成的图片如下:

再使用image_to_code.py将图片转为因子的计算代码:

#encoding=gbkimport numpy as np
class ReversalFrequency:    def __init__(self, overnight_returns, daytime_returns):        """        初始化        :param overnight_returns: 隔夜收益率列表        :param daytime_returns: 日内收益率列表        """        self.overnight_returns = np.array(overnight_returns)        self.daytime_returns = np.array(daytime_returns)
    def calc_reversal_frequency(self):        """        计算反向日内逆转的频率        :return: 反向日内逆转的频率        """        T = len(self.overnight_returns)        indicator = (self.overnight_returns > 0) & (self.daytime_returns < 0)        return np.sum(indicator) / T
# 示例用法# 隔夜收益率overnight_returns = [0.01, -0.02, 0.015, -0.007, 0.03, -0.012, 0.025]
# 日内收益率daytime_returns = [-0.008, 0.01, -0.005, 0.004, -0.02, 0.011, -0.015]
# 计算反向日内逆转的频率reversal_freq_calculator = ReversalFrequency(overnight_returns, daytime_returns)frequency = reversal_freq_calculator.calc_reversal_frequency()
print(f"反向日内逆转的频率: {frequency}")

可以看出gpt-4o能够完全理解因子的逻辑,并且给出可运行的代码,代码运行结果:

反向日内逆转的频率: 0.5714285714285714

在使用image_to_code.py之前,需先行配置OpenAI的API密钥(请自行获取)或Kimi的refresh token(详见free-kimi-api),并将其记录于QuantML-Qlib根目录下的.env文件中,以确保系统能够顺利读取这些配置信息。

此外,除了依赖因子日历,还可以直接将研究报告或学术论文导入系统,借助大型语言模型(LLM)的强大分析能力,揭示文章中因子的计算公式。

需要注意的是,LLM所生成的因子并非绝对准确,因此在生成后必须经过审核流程。尽管存在这一限制,LLM在提升因子生成效率方面的贡献仍然是显著的。

  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值