[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-RL-MLDM--alphagen":3,"tool-RL-MLDM--alphagen":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",156804,2,"2026-04-15T11:34:33",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":76,"owner_website":76,"owner_url":77,"languages":78,"stars":87,"forks":88,"last_commit_at":89,"license":76,"difficulty_score":90,"env_os":91,"env_gpu":92,"env_ram":91,"env_deps":93,"category_tags":101,"github_topics":103,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":107,"updated_at":108,"faqs":109,"releases":145},7834,"RL-MLDM\u002Falphagen","alphagen","Generating sets of formulaic alpha (predictive) stock factors via reinforcement learning.","AlphaGen 是一款基于强化学习自动挖掘股票预测因子（Alpha）的开源工具。在量化投资领域，人工设计有效的交易因子不仅耗时费力，且难以发现复杂的非线性规律，AlphaGen 正是为了解决这一痛点而生。它能够自动生成具有协同效应的公式化因子组合，显著提升策略的预测能力。\n\n该工具特别适合量化研究员、算法工程师以及金融领域的 AI 开发者使用。其核心亮点在于将强化学习应用于因子挖掘过程，能够探索传统方法难以触及的庞大解空间。除了核心的强化学习算法，AlphaGen 还展现了极强的扩展性：它不仅提供了基于 Qlib 的完整数据流水线，支持从 Baostock 获取真实市场数据进行复现，还创新性地集成了大语言模型（LLM）模块，支持利用 LLM 进行自动化的迭代式因子生成。此外，项目代码结构清晰，允许用户通过定义标准接口轻松适配现有的量化计算框架，无论是学术研究还是实盘策略开发，都能提供强有力的技术支持。","# AlphaGen\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FRL-MLDM_alphagen_readme_74dfbba37887.jpg\" width=275 \u002F>\n\u003C\u002Fp>\n\nAutomatic formulaic alpha generation with reinforcement learning.\n\nThis repository contains the code for our paper *Generating Synergistic Formulaic Alpha Collections via Reinforcement Learning* accepted by [KDD 2023](https:\u002F\u002Fkdd.org\u002Fkdd2023\u002F), Applied Data Science (ADS) track, publically available on [ACM DL](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002F10.1145\u002F3580305.3599831). Some extensions upon this work are also included in this repo.\n\n## Repository Structure\n\n- `\u002Falphagen` contains the basic data structures and the essential modules for starting an alpha mining pipeline;\n- `\u002Falphagen_qlib` contains the qlib-specific APIs for data preparation;\n- `\u002Falphagen_generic` contains data structures and utils designed for our baselines, which basically follow [gplearn](https:\u002F\u002Fgithub.com\u002Ftrevorstephens\u002Fgplearn) APIs, but with modifications for quant pipeline;\n- `\u002Falphagen_llm` contains LLM client abstractions and a set of prompts useful for LLM-based alpha generation, and also provides some LLM-based automatic iterative alpha-generation routines.\n- `\u002Fgplearn` and `\u002Fdso` contains modified versions of our baselines;\n- `\u002Fscripts` contains several scripts for running the experiments.\n\n## Result Reproduction\n\nNote that you can either use our builtin alpha calculation pipeline (see Choice 1), or implement an adapter to your own pipeline (see Choice 2).\n\n### Choice 1: Stock data preparation\n\nBuiltin pipeline requires Qlib library and local-storaged stock data.\n\n- READ THIS! We need some of the metadata (but not the actual stock price\u002Fvolume data) given by Qlib, so follow the data preparing process in [Qlib](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fqlib#data-preparation) first.\n- The actual stock data we use are retrieved from [baostock](http:\u002F\u002Fbaostock.com\u002Fbaostock\u002Findex.php\u002F%E9%A6%96%E9%A1%B5), due to concerns on the timeliness and truthfulness of the data source used by Qlib.\n- The data can be downloaded by running the script `data_collection\u002Ffetch_baostock_data.py`. The newly downloaded data is saved into `~\u002F.qlib\u002Fqlib_data\u002Fcn_data_baostock_fwdadj` by default. This path can be customized to fit your specific needs, but make sure to use the correct path when loading the data (In `alphagen_qlib\u002Fstock_data.py`, function `StockData._init_qlib`, the path should be passed to qlib with `qlib.init(provider_uri=path)`).\n\n### Choice 2: Adapt to external pipelines\n\nMaybe you have better implements of alpha calculation, you can implement an adapter of `alphagen.data.calculator.AlphaCalculator`. The interface is defined as follows:\n\n```python\nclass AlphaCalculator(metaclass=ABCMeta):\n    @abstractmethod\n    def calc_single_IC_ret(self, expr: Expression) -> float:\n        'Calculate IC between a single alpha and a predefined target.'\n\n    @abstractmethod\n    def calc_single_rIC_ret(self, expr: Expression) -> float:\n        'Calculate Rank IC between a single alpha and a predefined target.'\n\n    @abstractmethod\n    def calc_single_all_ret(self, expr: Expression) -> Tuple[float, float]:\n        'Calculate both IC and Rank IC between a single alpha and a predefined target.'\n\n    @abstractmethod\n    def calc_mutual_IC(self, expr1: Expression, expr2: Expression) -> float:\n        'Calculate IC between two alphas.'\n\n    @abstractmethod\n    def calc_pool_IC_ret(self, exprs: List[Expression], weights: List[float]) -> float:\n        'First combine the alphas linearly,'\n        'then Calculate IC between the linear combination and a predefined target.'\n\n    @abstractmethod\n    def calc_pool_rIC_ret(self, exprs: List[Expression], weights: List[float]) -> float:\n        'First combine the alphas linearly,'\n        'then Calculate Rank IC between the linear combination and a predefined target.'\n\n    @abstractmethod\n    def calc_pool_all_ret(self, exprs: List[Expression], weights: List[float]) -> Tuple[float, float]:\n        'First combine the alphas linearly,'\n        'then Calculate both IC and Rank IC between the linear combination and a predefined target.'\n```\n\nReminder: the values evaluated from different alphas may have drastically different scales, we recommend that you should normalize them before combination.\n\n### Before running\n\nAll principle components of our expriment are located in [train_maskable_ppo.py](train_maskable_ppo.py).\n\nThese parameters may help you build an `AlphaCalculator`:\n\n- instruments (Set of instruments)\n- start_time & end_time (Data range for each dataset)\n- target (Target stock trend, e.g., 20d return rate)\n\nThese parameters will define a RL run:\n\n- batch_size (PPO batch size)\n- features_extractor_kwargs (Arguments for LSTM shared net)\n- device (PyTorch device)\n- save_path (Path for checkpoints)\n- tensorboard_log (Path for TensorBoard)\n\n### Run the experiments\n\nPlease run the individual scripts at the root directory of this project as modules, i.e. `python -m scripts.NAME ARGS...`.\nUse `python -m scripts.NAME -h` for information on the arguments.\n\n- `scripts\u002Frl.py`: Main experiments of AlphaGen\u002FHARLA\n- `scripts\u002Fllm_only.py`: Alpha generator based solely on iterative interactions with an LLM.\n- `scripts\u002Fllm_test_validity.py`: Tests on how the system prompt affects the valid alpha rate of an LLM.\n\n### After running\n\n- Model checkpoints and alpha pools are located in `save_path`;\n    - The model is compatiable with [stable-baselines3](https:\u002F\u002Fgithub.com\u002FDLR-RM\u002Fstable-baselines3)\n    - Alpha pools are formatted in human-readable JSON.\n- Tensorboard logs are located in `tensorboard_log`.\n\n## Baselines\n\n### GP-based methods\n\n[gplearn](https:\u002F\u002Fgithub.com\u002Ftrevorstephens\u002Fgplearn) implements Genetic Programming, a commonly used method for symbolic regression. We maintained a modified version of gplearn to make it compatiable with our task. The corresponding experiment scipt is [gp.py](gp.py)\n\n### Deep Symbolic Regression\n\n[DSO](https:\u002F\u002Fgithub.com\u002Fbrendenpetersen\u002Fdeep-symbolic-optimization) is a mature deep learning framework for symbolic optimization tasks. We maintained a minimal version of DSO to make it compatiable with our task. The corresponding experiment scipt is [dso.py](dso.py)\n\n## Trading (Experimental)\n\nWe implemented some trading strategies based on Qlib. See [backtest.py](backtest.py) and [trade_decision.py](trade_decision.py) for demos.\n\n## Citing our work\n\n```bibtex\n@inproceedings{alphagen,\n    author = {Yu, Shuo and Xue, Hongyan and Ao, Xiang and Pan, Feiyang and He, Jia and Tu, Dandan and He, Qing},\n    title = {Generating Synergistic Formulaic Alpha Collections via Reinforcement Learning},\n    year = {2023},\n    doi = {10.1145\u002F3580305.3599831},\n    booktitle = {Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining},\n}\n```\n\n## Contributing\n\nFeel free to submit Issues or Pull requests.\n\n## Contributors\n\nThis work is maintained by the MLDM research group, [IIP, ICT, CAS](http:\u002F\u002Fiip.ict.ac.cn\u002F).\n\nMaintainers include:\n\n- [Hongyan Xue](https:\u002F\u002Fgithub.com\u002FxuehongyanL)\n- [Shuo Yu](https:\u002F\u002Fgithub.com\u002FChlorie)\n\nThanks to the following contributors:\n\n- [@yigaza](https:\u002F\u002Fgithub.com\u002Fyigaza)\n\nThanks to the following in-depth research on our project:\n\n- *因子选股系列之九十五: DFQ强化学习因子组合挖掘系统*\n","# AlphaGen\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FRL-MLDM_alphagen_readme_74dfbba37887.jpg\" width=275 \u002F>\n\u003C\u002Fp>\n\n基于强化学习的自动化公式化阿尔法生成。\n\n本仓库包含我们被[KDD 2023](https:\u002F\u002Fkdd.org\u002Fkdd2023\u002F)应用数据科学（ADS）赛道接收的论文《通过强化学习生成协同式公式化阿尔法集合》的代码，该论文已在[ACM DL](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002F10.1145\u002F3580305.3599831)上公开。此外，本仓库还包含了对这项工作的若干扩展。\n\n## 仓库结构\n\n- `\u002Falphagen` 包含基础数据结构和启动阿尔法挖掘流水线所需的核心模块；\n- `\u002Falphagen_qlib` 包含用于数据准备的 qlib 特定 API；\n- `\u002Falphagen_generic` 包含为我们的基线设计的数据结构和工具，这些工具基本遵循 [gplearn](https:\u002F\u002Fgithub.com\u002Ftrevorstephens\u002Fgplearn) 的 API，但针对量化交易流水线进行了修改；\n- `\u002Falphagen_llm` 包含 LLM 客户端抽象以及一组用于基于 LLM 生成阿尔法的提示词，并提供了一些基于 LLM 的自动迭代式阿尔法生成流程。\n- `\u002Fgplearn` 和 `\u002Fdso` 包含我们基线的修改版本；\n- `\u002Fscripts` 包含若干用于运行实验的脚本。\n\n## 结果复现\n\n请注意，您可以选择使用我们内置的阿尔法计算流水线（见选项 1），也可以实现一个适配器以接入您自己的流水线（见选项 2）。\n\n### 选项 1：股票数据准备\n\n内置流水线需要 Qlib 库和本地存储的股票数据。\n\n- 请务必阅读！我们需要 Qlib 提供的部分元数据（但不需要实际的股票价格\u002F成交量数据），因此请先按照 [Qlib](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fqlib#data-preparation) 中的数据准备流程进行操作。\n- 我们实际使用的股票数据来自 [baostock](http:\u002F\u002Fbaostock.com\u002Fbaostock\u002Findex.php\u002F%E9%A6%96%E9%A1%B5)，这是出于对 Qlib 所用数据源时效性和真实性问题的考虑。\n- 可以通过运行脚本 `data_collection\u002Ffetch_baostock_data.py` 下载数据。新下载的数据默认保存在 `~\u002F.qlib\u002Fqlib_data\u002Fcn_data_baostock_fwdadj` 目录下。此路径可根据您的具体需求进行自定义，但在加载数据时请确保使用正确的路径（在 `alphagen_qlib\u002Fstock_data.py` 的 `StockData._init_qlib` 函数中，应通过 `qlib.init(provider_uri=path)` 将路径传递给 Qlib）。\n\n### 选项 2：适配外部流水线\n\n如果您已有更优的阿尔法计算实现，可以实现 `alphagen.data.calculator.AlphaCalculator` 的适配器。接口定义如下：\n\n```python\nclass AlphaCalculator(metaclass=ABCMeta):\n    @abstractmethod\n    def calc_single_IC_ret(self, expr: Expression) -> float:\n        '计算单个阿尔法与预定义目标之间的 IC 值。'\n\n    @abstractmethod\n    def calc_single_rIC_ret(self, expr: Expression) -> float:\n        '计算单个阿尔法与预定义目标之间的 Rank IC 值。'\n\n    @abstractmethod\n    def calc_single_all_ret(self, expr: Expression) -> Tuple[float, float]:\n        '同时计算单个阿尔法与预定义目标之间的 IC 和 Rank IC 值。'\n\n    @abstractmethod\n    def calc_mutual_IC(self, expr1: Expression, expr2: Expression) -> float:\n        '计算两个阿尔法之间的 IC 值。'\n\n    @abstractmethod\n    def calc_pool_IC_ret(self, exprs: List[Expression], weights: List[float]) -> float:\n        '首先将阿尔法线性组合，'\n        '然后计算线性组合与预定义目标之间的 IC 值。'\n\n    @abstractmethod\n    def calc_pool_rIC_ret(self, exprs: List[Expression], weights: List[float]) -> float:\n        '首先将阿尔法线性组合，'\n        '然后计算线性组合与预定义目标之间的 Rank IC 值。'\n\n    @abstractmethod\n    def calc_pool_all_ret(self, exprs: List[Expression], weights: List[float]) -> Tuple[float, float]:\n        '首先将阿尔法线性组合，'\n        '然后同时计算线性组合与预定义目标之间的 IC 和 Rank IC 值。'\n```\n\n提醒：不同阿尔法评估出的值可能具有截然不同的量级，建议在组合之前对其进行归一化处理。\n\n### 运行前\n\n我们实验的主要组件位于 [train_maskable_ppo.py](train_maskable_ppo.py) 中。\n\n以下参数可以帮助您构建一个 `AlphaCalculator`：\n\n- instruments（证券集合）\n- start_time & end_time（每个数据集的时间范围）\n- target（目标股票趋势，例如 20 天收益率）\n\n以下参数将定义一次强化学习运行：\n\n- batch_size（PPO 的批量大小）\n- features_extractor_kwargs（LSTM 共享网络的参数）\n- device（PyTorch 设备）\n- save_path（检查点保存路径）\n- tensorboard_log（TensorBoard 日志路径）\n\n### 运行实验\n\n请以模块方式运行本项目根目录下的各个脚本，即 `python -m scripts.NAME ARGS...`。使用 `python -m scripts.NAME -h` 查看参数说明。\n\n- `scripts\u002Frl.py`：AlphaGen\u002FHARLA 的主要实验\n- `scripts\u002Fllm_only.py`：完全基于与 LLM 迭代交互的阿尔法生成器\n- `scripts\u002Fllm_test_validity.py`：测试系统提示如何影响 LLM 生成有效阿尔法的比例\n\n### 运行后\n\n- 模型检查点和阿尔法池位于 `save_path` 目录下；\n    - 该模型与 [stable-baselines3](https:\u002F\u002Fgithub.com\u002FDLR-RM\u002Fstable-baselines3) 兼容\n    - 阿尔法池以人类可读的 JSON 格式存储。\n- TensorBoard 日志位于 `tensorboard_log` 目录下。\n\n## 基线方法\n\n### 基于 GP 的方法\n\n[gplearn](https:\u002F\u002Fgithub.com\u002Ftrevorstephens\u002Fgplearn) 实现了遗传编程，这是一种常用于符号回归的方法。我们维护了一个修改后的 gplearn 版本，使其与我们的任务兼容。相应的实验脚本是 [gp.py](gp.py)。\n\n### 深度符号回归\n\n[DSO](https:\u002F\u002Fgithub.com\u002Fbrendenpetersen\u002Fdeep-symbolic-optimization) 是一个成熟的深度学习框架，用于符号优化任务。我们维护了一个精简版的 DSO，使其与我们的任务兼容。相应的实验脚本是 [dso.py](dso.py)。\n\n## 交易（实验性）\n\n我们基于 Qlib 实现了一些交易策略。演示请参阅 [backtest.py](backtest.py) 和 [trade_decision.py](trade_decision.py)。\n\n## 引用我们的工作\n\n```bibtex\n@inproceedings{alphagen,\n    author = {Yu, Shuo and Xue, Hongyan and Ao, Xiang and Pan, Feiyang and He, Jia and Tu, Dandan and He, Qing},\n    title = {Generating Synergistic Formulaic Alpha Collections via Reinforcement Learning},\n    year = {2023},\n    doi = {10.1145\u002F3580305.3599831},\n    booktitle = {Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining},\n}\n```\n\n## 贡献\n\n欢迎提交 Issue 或 Pull 请求。\n\n## 贡献者\n\n本项目由MLDM研究组，[IIP, ICT, CAS](http:\u002F\u002Fiip.ict.ac.cn\u002F) 维护。\n\n维护人员包括：\n\n- [Xue Hongyan](https:\u002F\u002Fgithub.com\u002FxuehongyanL)\n- [Yu Shuo](https:\u002F\u002Fgithub.com\u002FChlorie)\n\n感谢以下贡献者：\n\n- [@yigaza](https:\u002F\u002Fgithub.com\u002Fyigaza)\n\n同时感谢对我们的项目进行深入研究的以下内容：\n\n- 《因子选股系列之九十五：DFQ强化学习因子组合挖掘系统》","# AlphaGen 快速上手指南\n\nAlphaGen 是一个基于强化学习自动生成公式化因子（Formulaic Alpha）的开源工具，相关论文已被 KDD 2023 收录。本指南将帮助中国开发者快速搭建环境并运行基础实验。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**: Linux (推荐 Ubuntu 18.04+) 或 macOS\n- **Python**: 3.8 或更高版本\n- **GPU**: 可选，用于加速强化学习训练（需支持 CUDA）\n\n### 前置依赖\n本项目依赖以下核心库：\n- **PyTorch**: 深度学习框架\n- **Stable-Baselines3**: 强化学习算法库\n- **Qlib**: 微软开源的量化投资平台（用于数据加载和回测）\n- **Baostock**: 证券数据接口（用于获取真实的股票行情数据）\n\n> **注意**：虽然 Qlib 提供了数据准备流程，但本项目建议使用 Baostock 获取更及时准确的股票数据，仅利用 Qlib 的元数据结构。\n\n## 安装步骤\n\n1. **克隆仓库**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002FThinklab-SJTU\u002FAlphaGen.git\n   cd AlphaGen\n   ```\n\n2. **创建虚拟环境并安装依赖**\n   推荐使用 `conda` 或 `venv` 隔离环境。\n   ```bash\n   # 创建环境\n   conda create -n alphagen python=3.8 -y\n   conda activate alphagen\n\n   # 安装 PyTorch (根据是否使用 GPU 选择对应命令，国内用户可使用清华源)\n   pip install torch torchvision torchaudio --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n\n   # 安装项目依赖\n   pip install -r requirements.txt\n   ```\n\n3. **准备数据**\n   AlphaGen 需要 Qlib 格式的元数据，但实际股价数据来自 Baostock。\n\n   - **步骤 A：初始化 Qlib 元数据**\n     参考 [Qlib 官方文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fqlib#data-preparation) 完成基础元数据下载（无需下载其默认的股票价格数据）。\n\n   - **步骤 B：下载 Baostock 股票数据**\n     运行项目自带的脚本获取数据，默认保存路径为 `~\u002F.qlib\u002Fqlib_data\u002Fcn_data_baostock_fwdadj`。\n     ```bash\n     python data_collection\u002Ffetch_baostock_data.py\n     ```\n     *提示：如需自定义路径，请修改 `alphagen_qlib\u002Fstock_data.py` 中的 `qlib.init(provider_uri=path)` 参数。*\n\n## 基本使用\n\n### 1. 运行强化学习实验 (核心功能)\n这是 AlphaGen 的主要功能，使用 PPO 算法挖掘因子组合。在项目根目录下以模块方式运行：\n\n```bash\npython -m scripts.rl.py --help\n```\n\n查看参数说明后，执行训练示例（指定数据范围和目标）：\n```bash\npython -m scripts.rl.py \\\n    --instruments all \\\n    --start_time 2008-01-01 \\\n    --end_time 2020-08-01 \\\n    --target 20d \\\n    --save_path .\u002Fresults\u002Frl_model \\\n    --tensorboard_log .\u002Flogs\n```\n- 训练完成后，模型检查点和生成的因子池将保存在 `--save_path` 指定的目录中。\n- 因子池以人类可读的 JSON 格式存储。\n- 可通过 TensorBoard 查看训练日志：`tensorboard --logdir .\u002Flogs`\n\n### 2. 运行基线对比实验\n项目内置了遗传规划 (GP) 和深度符号回归 (DSO) 作为基线。\n\n- **遗传规划 (GP)**:\n  ```bash\n  python -m scripts.gp.py --help\n  ```\n\n- **深度符号回归 (DSO)**:\n  ```bash\n  python -m scripts.dso.py --help\n  ```\n\n### 3. 基于大语言模型 (LLM) 的因子生成 (实验性)\n如果配置了 LLM API，可以运行纯 LLM 驱动的因子生成实验：\n```bash\npython -m scripts.llm_only.py --help\n```\n\n### 4. 自定义计算适配器\n如果您已有自己的因子计算引擎，可实现 `AlphaCalculator` 抽象类来对接 AlphaGen 的核心逻辑，而无需使用内置的 Qlib 管道。关键接口包括：\n- `calc_single_IC_ret`: 计算单个因子的 IC\n- `calc_mutual_IC`: 计算两个因子间的互信息\n- `calc_pool_IC_ret`: 计算因子组合后的 IC\n\n详细接口定义请参阅 `alphagen\u002Fdata\u002Fcalculator.py`。","某量化私募团队的因子研究员正致力于挖掘能预测短期股价波动的新型公式化 Alpha 因子，以优化现有的多因子选股模型。\n\n### 没有 alphagen 时\n- **人工挖掘效率低**：研究员依赖手工构造或简单的遗传规划（如 gplearn），每天仅能验证数十个因子表达式，难以覆盖庞大的搜索空间。\n- **因子同质化严重**：自动生成的因子往往与现有库中的因子高度相关，缺乏新意，无法提供额外的超额收益来源。\n- **组合协同性差**：单独表现好的因子在线性组合后效果互相抵消，缺乏对因子间“协同效应”的整体优化机制。\n- **迭代周期漫长**：从提出假设、编写代码到回测验证，一个完整的迭代周期需要数天，难以快速响应市场风格切换。\n\n### 使用 alphagen 后\n- **自动化大规模搜索**：利用强化学习算法，alphagen 能在短时间内自动探索数百万种公式组合，日均生成并筛选出数百个候选因子。\n- **发现非线性新因子**：通过奖励机制引导模型跳出局部最优，成功挖掘出人类难以直观构思的复杂非线性因子，显著提升了因子的独特性。\n- **直接优化组合表现**：工具不仅关注单因子 IC 值，更直接以因子池的整体预测能力（Pool IC）为目标进行训练，确保生成的因子集合具有极佳的互补性。\n- **端到端快速迭代**：集成 Qlib 数据管道后，实现了从数据加载、因子生成到绩效评估的全流程自动化，将策略迭代周期从“天”级缩短至“小时”级。\n\nalphagen 通过强化学习将因子挖掘从“手工作坊”升级为“智能工厂”，在保证因子多样性的同时最大化了组合的预测合力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FICT-FinD-Lab_alphagen_74dfbba3.jpg","ICT-FinD-Lab","FinD Lab @ ICT, CAS","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FICT-FinD-Lab_f521661f.jpg","Financial Intelligence & Data Mining Lab",null,"https:\u002F\u002Fgithub.com\u002FICT-FinD-Lab",[79,83],{"name":80,"color":81,"percentage":82},"Python","#3572A5",99.4,{"name":84,"color":85,"percentage":86},"Cython","#fedf5b",0.6,1068,303,"2026-04-15T02:50:40",4,"未说明","需要 PyTorch 设备支持（device 参数），具体型号和显存未说明，但涉及强化学习和 LSTM 网络，建议使用 NVIDIA GPU",{"notes":94,"python":91,"dependencies":95},"1. 必须预先按照 Qlib 文档准备元数据，但实际股票数据需通过 baostock 脚本单独下载并存储到指定路径。2. 核心实验脚本为 train_maskable_ppo.py，运行实验需使用 'python -m scripts.NAME' 格式。3. 若使用内置管道，需配置正确的本地数据存储路径；若使用外部管道，需实现 AlphaCalculator 接口。4. 模型检查点兼容 stable-baselines3 格式，因子池以 JSON 格式保存。",[96,97,98,99,100],"qlib","stable-baselines3","torch","gplearn (modified)","dso (modified)",[14,102],"其他",[104,105,106],"quantitative-trading","reinforcement-learning","symbolic-regression","2026-03-27T02:49:30.150509","2026-04-16T03:27:57.056860",[110,115,120,125,130,135,140],{"id":111,"question_zh":112,"answer_zh":113,"source_url":114},35096,"运行项目时遇到依赖包版本冲突或找不到特定版本（如 qlib==0.0.2.dev20）怎么办？","请查看项目的最新依赖更新（参考 Issue #16）。主要变更包括：已将 `gym` 替换为 `gymnasium`，请先卸载 `gym`。此外，`stable_baselines3` 和 `sb3_contrib` 必须严格使用 `requirements.txt` 中指定的版本（例如 stable_baselines3 v1.6.0 或 v1.8.0），不要自行安装其他版本以避免兼容性问题。","https:\u002F\u002Fgithub.com\u002FICT-FinD-Lab\u002Falphagen\u002Fissues\u002F15",{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},35097,"运行 train_maskable_ppo.py 时报错 'ValueError: too many values to unpack' 或 'model.learn' 相关错误如何解决？","这通常是由于 `stable_baselines3` 和 `sb3_contrib` 版本不兼容导致的。请确保安装 `requirements.txt` 中指定的确切版本。根据社区反馈，将 `stable_baselines3` 降级至 '1.6.0' 或升级至 '1.8.0'（同时匹配对应的 `sb3_contrib` 版本）可以解决此问题。不要使用 '2.1.0a1' 等测试版。","https:\u002F\u002Fgithub.com\u002FICT-FinD-Lab\u002Falphagen\u002Fissues\u002F11",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},35098,"运行时报错 'ValueError: can't find a freq from [] that can resample to day!' 是什么原因？","这是因为 Qlib 数据目录命名不正确。程序默认读取 `~\u002F.qlib\u002Fqlib_data\u002Fcn_data_rolling` 目录，但用户可能将数据下载到了 `~\u002F.qlib\u002Fqlib_data\u002Fcn_data`。解决方法是将文件夹重命名为 `cn_data_rolling`，或者确保数据存放在代码指定的正确路径下。","https:\u002F\u002Fgithub.com\u002FICT-FinD-Lab\u002Falphagen\u002Fissues\u002F33",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},35099,"报错 'ValueError: instrument not exists: ...\u002Fcsi300.txt' 找不到指数成分股文件怎么办？","这是因为数据目录中缺少特定的指数配置文件（如 csi300.txt）。通常这些文件存在于 `~\u002F.qlib\u002Fqlib_data\u002Fcn_data\u002Finstruments\u002F` 目录下，而程序在 `cn_data_rolling` 目录下寻找。解决方法是将 `cn_data\u002Finstruments\u002F` 下的所有文件（如 csi300.txt, all.txt 等）复制粘贴到 `~\u002F.qlib\u002Fqlib_data\u002Fcn_data_rolling\u002Finstruments\u002F` 目录中。","https:\u002F\u002Fgithub.com\u002FICT-FinD-Lab\u002Falphagen\u002Fissues\u002F14",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},35100,"训练过程中出现 'Token Min not allowed here' 或类似的语法树验证错误如何处理？","该错误表示生成的因子表达式中包含了在当前上下文中非法的操作符（如在某些栈状态下使用了 Min）。这是一个已知问题，特别是在使用自定义数据时。临时解决方案是修改源码中的验证逻辑：找到报错位置的 `if not self.validate(token): raise ...` 语句，将其改为仅打印警告（`print`）并跳过当前非法 token，让程序继续执行，但这可能会影响因子的有效性，建议检查数据格式或等待官方修复。","https:\u002F\u002Fgithub.com\u002FICT-FinD-Lab\u002Falphagen\u002Fissues\u002F23",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},35101,"初始化 AlphaPool 时发生参数不匹配错误（AlphaPool init error）怎么办？","这是代码内部调用参数与类定义不一致导致的 Bug。在 `gp.py` 文件中调用 `AlphaPool` 时传入的参数（如 capacity, stock data, target, ic）与 `AlphaPool` 类定义所需的参数（capacity, calculator, ic, l1）不匹配。需要手动修改 `gp.py` 中的调用代码，使其参数顺序和名称与类定义保持一致，或者更新到已修复该问题的最新代码版本。","https:\u002F\u002Fgithub.com\u002FICT-FinD-Lab\u002Falphagen\u002Fissues\u002F19",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},35102,"为什么在小步数（step）训练时，测试集的 IC 和 Rank IC 表现异常好或呈现奇怪的负值趋势？","这通常是因为对训练集和测试集的概念存在误解。代码逻辑是在使用训练集进行模型训练的同时，实时拿测试集数据进行评估（边训练边测）。初始阶段的负值或异常高值可能是模型尚未收敛或随机初始化的结果，随着训练步数（step）增加，指标会逐渐趋向正常。请确保正确理解代码中的数据划分和评估逻辑。","https:\u002F\u002Fgithub.com\u002FICT-FinD-Lab\u002Falphagen\u002Fissues\u002F38",[]]