You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
jack 14d2300564 ++ 2 weeks ago
..
Tranformer ++ 2 weeks ago
templates ++ 2 weeks ago
CODING_Guidance_Document.md ++ 2 weeks ago
README.md ++ 2 weeks ago
README_CONFIG.md ++ 2 weeks ago
__init__.py ++ 2 weeks ago
config.json ++ 2 weeks ago
config.json.example ++ 2 weeks ago
main.py ++ 2 weeks ago
requirements.txt ++ 2 weeks ago
running_error.txt ++ 2 weeks ago

README.md

Alpha Transformer ()

基于AI的Alpha变种自动生成器,将一个种子Alpha转换为多个具有不同逻辑和参数的新Alpha表达式。

功能概述

****的核心思想是:给定一个种子Alpha作为参考,结合大量已知的Alpha模板和AI能力,自动生成多个具有不同策略逻辑的新Alpha表达式。这些变种可以用于:

  • 策略多元化(避免单一策略风险)
  • 参数优化(探索最优参数组合)
  • 逻辑变体(发现新的市场规律)

工作原理详解

整体流程

种子Alpha → 获取详情 → AI生成模板 → 填充参数 → 验证输出
    ↓           ↓            ↓           ↓         ↓
  原始ID    settings    逻辑变体    表达式组合   JSON结果
            expression   + expression
            datafields

第一阶段:获取种子Alpha信息

当用户输入Alpha ID后,系统会:

  1. 连接BRAIN平台 - 使用提供的用户名密码认证

  2. 获取Alpha详情 - 通过API获取以下信息:

    • settings: Alpha的配置参数(region, universe, delay等)
    • expression: Alpha的具体表达式代码
    • description: Alpha的策略描述
    • operators: 使用的算子列表(ts_mean, group_rank等)
    • data_fields: 使用的数据字段(close, volume等)
  3. 解析表达式结构 - 分析Alpha代码中的:

    • 占位符类型(数据字段、时间窗口、分组方式等)
    • 算子组合模式
    • 数据依赖关系

第二阶段:AI生成模板

这是的核心。系统会:

  1. 构建提示词 - 将以下内容发送给LLM:

    种子Alpha详情(settings + expression + 使用的算子)
    + 模板摘要(template_summary.md中的90+个模板)
    + 生成指令(要求生成X个变种模板)
    
  2. LLM推理 - AI根据以下信息生成新模板:

    • 种子Alpha的核心逻辑是什么?
    • template_summary中有哪些类似或可组合的模板?
    • 如何创造性地变形生成新模板?
  3. 模板输出 - LLM返回的每个模板包含:

    • template_expression: 使用占位符的模板表达式
      • 例如:group_rank(<data_field/> / ts_mean(<data_field/>, <window/>))
    • template_explanation: 模板的核心思想和逻辑说明

第三阶段:模板填充

对每个生成的模板,系统会:

  1. 识别占位符 - 解析模板中的所有<placeholder/>

    # 常见的占位符类型
    <data_field/>    # 数据字段(如 close, volume, pe_ratio)
    <window/>        # 时间窗口(如 20, 60, 120)
    <group/>          # 分组方式(如 industry, sector)
    <operator/>       # 操作符(如 ts_mean, rank)
    
  2. 获取候选数据 - 从BRAIN API获取:

    • 符合条件的数据字段列表(top_n个)
    • 可用的窗口参数
    • 支持的分组方式
  3. 组合生成 - 笛卡尔积组合所有候选:

    # 如果模板有2个<data_field/>和3个<window/>
    # 则生成 50 * 50 * 3 = 7500 个表达式(示例)
    
    # 实际会限制总数,避免组合爆炸
    
  4. 设置继承 - 新生成的表达式会继承种子Alpha的:

    • Region(地区)
    • Universe(股票池)
    • Delay(延迟)
    • Neutralization(中性化方式)

第四阶段:验证与输出

  1. 表达式验证 - 验证生成的表达式是否合法:

    • 语法检查
    • 数据依赖检查
    • 算子兼容性检查
  2. 结果分类 - 分成三类输出:

    • Alpha_candidates.json: 模板级别的结果

      • 包含模板表达式和每个占位符的候选列表
      • 可用于进一步手动编辑或参数调整
    • Alpha_generated_expressions_success.json: 成功生成的表达式

      • 具体的、可直接使用的Alpha表达式
      • 可导入BRAIN或回测器
    • Alpha_generated_expressions_error.json: 失败的表达式

      • 生成或验证过程中出错的表达式
      • 用于排查模板问题

template_summary.txt 的作用

文件内容

template_summary.md是一个包含90+个精选Alpha模板的文档,每个模板包含:

  1. Hypothesis(假设) - 策略的核心思想

    "After news is released, if a stock takes a longer time to rise,
     it may show strong evidence of upward momentum"
    
  2. Expression(表达式) - 具体的Alpha代码

    `ts_backfill(vec_avg(nws12_prez_4l),504)`
    
  3. Settings(设置) - 推荐使用的配置

    Region: USA, Universe: TOP500, Delay: 1
    
  4. 逻辑链深度解析 - 为什么这个Alpha有效

    - 时序相对性: ts_backfill处理新闻数据的稀疏性
    - 算子深意: vec_avg聚合多维情绪
    
  5. 优化方向 - 如何进一步改进

    - 去噪: 增加winsorize或rank
    - 从属信号: 叠加Social Media Effect
    

模板分类

文件中的模板来自多个来源:

  1. Learn系列 - BRAIN官方教程中的示例

    • Learn101: 基础Alpha示例
    • Learn102: 中级Alpha示例
    • Learn103: 高级Alpha示例
  2. 《151 Trading Strategies》 - 学术论文中的策略

    • 动量策略
    • 价值策略
    • 波动率策略
  3. 社区精选 - 论坛中高评分的Alpha

为什么修改它能生成不同结果?

是的,这是生成不同Alpha变种的关键!

当你修改template_summary.md时:

修改内容 影响
增加新模板 LLM有更多参考,生成更多样化的变种
删除旧模板 生成的变种会集中在剩余模板上
修改模板说明 LLM对模板的理解改变,生成的变种逻辑不同
调整模板格式 可能影响LLM的解析和理解

如何优化template_summary

建议策略:

  1. 按主题分类 - 如果你想生成某类策略的变种

    ## 动量策略
    [相关的5-10个模板]
    
    ## 价值策略
    [相关的5-10个模板]
    
  2. 加入自己的Alpha - 如果你有成功的Alpha

    ## 我的成功策略
    **Expression**: `group_rank(close / ts_mean(close, 20))`
    **核心思想**: 均线偏离策略
    
  3. 保持格式一致 - 确保每个模板都包含:

    • 清晰的假设
    • 具体表达式
    • 逻辑解析
  4. 定期更新 - 随着策略进化,不断添加新的有效模板

快速开始

1. 安装依赖

cd /Users/jack/source/mySpace/mycode/my_project/py/alpha/WqApp/simple72
pip install -r requirements.txt

2. 启动服务

python main.py

服务将在 http://localhost:8000 启动

3. 使用Web界面

  1. 打开浏览器访问 http://localhost:8000
  2. 填写表单:
    • Alpha ID: 输入种子Alpha的ID(格式如 ak2YPVxv
    • LLM API Key: 你的LLM服务API密钥
    • LLM Base URL: LLM服务地址
      • Kimi: https://api.moonshot.cn/v1
      • OpenAI: https://api.openai.com/v1
      • 其他: https://your-llm-service.com/v1
    • LLM Model: 模型名称(如 kimi-k2.5, gpt-4
    • BRAIN Username/Password: 你的BRAIN平台账号
  3. 点击"生成变种"
  4. 等待处理完成(通常3-10分钟)
  5. 查看或复制JSON结果

4. 使用API

curl -X POST http://localhost:8000/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "alpha_id": "ak2YPVxv",
    "llm_api_key": "your-api-key",
    "llm_base_url": "https://api.moonshot.cn/v1",
    "llm_model": "kimi-k2.5",
    "brain_username": "your-brain-user",
    "brain_password": "your-brain-pass",
    "top_n_datafield": 50
  }'

API端点

GET /

  • 功能: 主页面
  • 返回: HTML页面

POST /api/generate

  • 功能: 生成Alpha变种
  • 请求体:
    {
      "alpha_id": "string (必填)",
      "llm_api_key": "string (必填)",
      "llm_base_url": "string (必填)",
      "llm_model": "string (必填)",
      "brain_username": "string (必填)",
      "brain_password": "string (必填)",
      "top_n_datafield": "int (可选,默认50)",
      "user_region": "string (可选)",
      "user_universe": "string (可选)",
      "user_delay": "int (可选)",
      "user_category": "string (可选)",
      "user_data_type": "string (可选,默认MATRIX)"
    }
    
  • 响应:
    {
      "success": true,
      "alpha_id": "种子Alpha ID",
      "candidates": [...],
      "expressions_success": [...],
      "expressions_error": [...]
    }
    

GET /api/health

  • 功能: 健康检查
  • 响应: {"status": "healthy", "service": "alpha-transformer"}

项目结构

simple72/
├── main.py                      # FastAPI应用入口
├── requirements.txt             # 依赖清单
├── Tranformer/                  # Transformer核心模块
│   ├── Transformer.py           # 主逻辑(~5000行)
│   │   ├── generate_alpha_description()  # 获取Alpha详情
│   │   ├── generate_new_alphas()        # 生成新Alpha
│   │   ├── propose_alpha_templates()     # LLM生成模板
│   │   ├── populate_template()          # 填充模板
│   │   └── validate_expression()        # 验证表达式
│   ├── ace_lib.py              # BRAIN API客户端
│   ├── helpful_functions.py    # 辅助函数
│   ├── validator.py            # 表达式验证器
│   ├── template_summary.md    # 模板摘要(可自定义)
│   └── output/                 # 输出目录
│       ├── Alpha_candidates.json
│       ├── Alpha_generated_expressions_success.json
│       └── Alpha_generated_expressions_error.json
└── templates/
    └── index.html              # 前端页面

高级配置

调整生成数量

修改top_n_datafield参数:

  • 值越大 → 生成的表达式越多,但处理时间越长
  • 值越小 → 生成更快,但可能错过好的变种
  • 建议值:30-100之间

自定义模板摘要

编辑Tranformer/template_summary.md

  • 添加你认为有效的Alpha模板
  • 按策略类型分类整理
  • 保持每个模板的格式一致性

限制生成范围

通过可选参数限制生成范围:

  • user_region: 只在特定地区生成
  • user_universe: 只在特定股票池生成
  • user_delay: 只使用特定的延迟设置

常见问题

Q: 生成失败怎么办?

A: 检查以下几点:

  1. BRAIN账号密码是否正确
  2. LLM API Key是否有效
  3. Alpha ID是否存在且可访问
  4. 查看返回的error字段

Q: 生成的结果都是类似的?

A: 尝试:

  1. 修改template_summary.md,添加更多样化的模板
  2. 调整top_n_datafield,增加数据字段候选
  3. 使用不同的种子Alpha

Q: 生成时间太长?

A: 这是正常的,因为:

  • LLM调用需要时间
  • BRAIN API查询数据字段
  • 表达式组合和验证

可以:

  • 减少top_n_datafield
  • 简化template_summary.md
  • 使用本地部署的LLM

技术栈

  • 后端: FastAPI + asyncio
  • LLM调用: OpenAI SDK (AsyncOpenAI)
  • BRAIN连接: requests Session
  • 前端: 原生HTML/CSS/JavaScript
  • 验证: 自定义表达式验证器

许可证

MIT License

参考资源