Quantlab5.8全量代码发布:新增大模型因子挖掘,Deap因子挖掘系统优化

原创内容第635篇,专注量化投资、个人成长与财富自由

一周一度的星球更新代码的日子:

图片

本周代码更新核心点:

1、因子表达式引擎里把函数集基本补齐,提供给deap遗传算法因子挖掘,包括TA-lib的函数,如阿隆指标,CCI等。

2、Deap支持单序列回测(按分位点),主要用于CTA时序因子挖掘。

3、新增大模型生成因子Factor-GPT,生成的因子符合world quant101的格式,且使用的是咱们因子表达式的函数集,可以直接调用。

4、修复一些已知问题。

5、补充分钟级期货数据。

后续星球的工作重点:

基于Deap因子挖掘框架的成熟,可以挖掘多序列截面因子和单序列的时序因子。补充指数、ETF量价数据集,股票价量数据集,股票基本面数据集。

然后进行因子挖掘和筛选,同时进行因子合成与策略生成。

不排除引入一些技术分析指标,信号来辅助优化策略。

另外,因子表达式的计算效率通过numba来优化。

Numba 是一个 Python 的 JIT(Just-In-Time)编译器,它可以将 Python 代码编译成机器代码,从而提高代码的执行速度。它特别适合于科学计算和数值密集型任务,特别是当使用 NumPy 数组进行大量计算时。

使用 Numba 进行性能优化的技巧和注意事项:

  1. 使用 @jit 装饰器:将 @jit 装饰器添加到 Python 函数上,可以加速该函数的执行。使用 nopython=True 参数可以指示 Numba 生成不依赖 Python 解释器的代码,从而获得更好的性能。

  2. Numba 与 NumPy 的结合使用:Numba 能够理解 NumPy 数组类型,并且可以生成在 GPU 或多核 CPU 上执行的高效代码。当处理面向数组的计算任务时,Numba 可以提供数据并行性。

AlphaGPT的代码如下:

from langchain_community.adapters.openai import convert_openai_messages


def read_file_2_list(filepath):
    with open(filepath, 'r', encoding='utf-8', errors='ignore') as f:
        text = f.readlines()
    return text


sample_json = """
{
  "expr": 生成的因子表达式,

}
"""
# "desc": 对该因子表达式的解释说明
from langchain_openai import ChatOpenAI
import json as json

KIMI_KEY = None
if not KIMI_KEY:
    import os
    KIMI_KEY = os.getenv('KIMI_KEY')

class FactorGPTAgent:
    def __init__(self):
        self.sources = [x.strip() for x in read_file_2_list('worldquant_101.txt')]
        optional_params = {
            "response_format": {"type": "json_object"}
        }
        self.func_names = []
        from datafeed.expr_functions import unary_rolling_funcs
        for func in unary_rolling_funcs:
            self.func_names.append(func)

        from datafeed.expr_functions import unary_funcs
        for func in unary_funcs:
            self.func_names.append(func)

        from datafeed.expr_functions import binary_roilling_funcs
        for func in binary_roilling_funcs:
            self.func_names.append(func)

        # openai_api_key = KIMI_KEY
        self.model = ChatOpenAI(temperature=0, openai_api_key=KIMI_KEY, model='moonshot-v1-8k',
                                base_url="https://api.moonshot.cn/v1", max_retries=1, model_kwargs=optional_params)

    def build_prompt(self):
        prompt = [{
            "role": "system",
            "content": "你是一个量化分析师. 你可以通过阅读多个alpha因子表达式,总结其内在规律,并且可以创新性的生成可用的因子表达式。"
                       "对于生成的表达式,你能够解释其有效性,并且能够用清晰简洁的语言解释其各个变量的含义。\n "
        }, {
            "role": "user",
            "content": f"指令描述: 生成因子表达式"
                       f"可以使用的变量名:open,high,low,close,volume\n"
                       f"可以使用的函数名列表: {self.func_names}\n "
                       f"你的任务学习以上资源之后,总结其规律,输出一个同类型表达式。\n "
                       f"参考{self.sources}的因子形式,书写表达式时,每次生成10个,,生成的表达式,不要带Alpha#xxx,期望因子的相关性低\n"
                       f"Please return nothing but a JSON in the following format:\n"
                       f"{sample_json}\n "
        }]
        return prompt

    def run(self):
        lc_messages = convert_openai_messages(self.build_prompt())
        response = self.model.invoke(
            lc_messages).content
        print(response)
        return json.loads(response)


if __name__ == '__main__':
    FactorGPTAgent().run()

9月开学季,送你一张优惠券:

图片

历史文章:

deap实战分钟级CTA因子挖掘,夏普比大于2

AI量化实验室——2024量化投资的星辰大海

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI量化投资实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值