当前位置: 首页 > article >正文

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量化投资的星辰大海


http://www.kler.cn/a/282725.html

相关文章:

  • 《数学年刊A辑》
  • Dubbo 3.2 源码导读
  • 使用c#实现TCP客户端与服务器端
  • 斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段
  • vue2使用 <component> 标签动态渲染不同的表单组件
  • netmap.js:基于浏览器的网络发现工具
  • 记Spring HTTP Invoker远程调用的使用(一)基于Url映射方式,DispatcherServlet统一处理实现
  • Python实现分水岭图像分割算法
  • 非整周期截取信号对FFT分析的影响
  • Three.js Cesium.js 案例聚集地
  • ubuntu24.04 编译安装 Nginx 1.26.2
  • 内六角圆柱头螺丝产品应用指南
  • C++ 设计模式——状态模式
  • 湖南的智榜样网络安全公司开的培训学校参加学习成为网络安全工程师
  • 世界上知名度最高的人物:颜廷利三言两语,震慑“中国哲学家”
  • RabbitMQ 集群与高可用性
  • 大学开学必备好物清单有哪些?开学必备清单大全,超详细版!
  • COMP9315-week2-lecture1
  • Python TensorFlow 实战指南
  • 【Unity输入】Input Manager 和 Input System对比
  • 详细解说数据库课程设计mysql
  • 前缀和2️⃣-二维前缀和
  • 先进制造aps专题二十五 openai的ai大模型设计也使用了aps用的并行遗传算法
  • Linux文件IO缓存
  • Linux(更新中~)
  • 【JVM原理】类加载机制