量化交易 2026-07

基于 Agent 的 ETF 轮动系统

基于 Agent 推理 + 定时任务驱动的全自动大类资产轮动系统,覆盖 6 只候选 ETF,每日自动执行环境评估、候选排名、风控校验和交易计划生成,已在真实市场环境中稳定运行。

基于 Agent 的 ETF 轮动系统


项目概述

项目 内容
项目名称 基于 Agent 的全自动 ETF 大类资产轮动系统
项目周期 2026年7月 — 至今(持续迭代)
技术栈 Python, Hermes Agent, Tushare Pro, Jinja2, Git
我的角色 独立架构设计与开发
项目状态 已上线运行,每日自动执行

1. 项目背景

传统 ETF 投资策略存在两类典型缺陷:

  • 纯主观决策型:依赖个人经验和盘感,没有系统化的判断框架,决策不可追溯、不可复盘
  • 纯量化模型型:历史回测表现优异,但市场环境发生结构性变化时容易失效,缺乏识别"环境已变"的能力

核心诉求

构建一套 结合 Agent 推理能力与工程化执行 的自动化投资系统,将人的角色从"盘中决策者"转变为"策略迭代者"。核心差异在于:

  • Agent 盘后做判断,盘中不参与实时决策
  • 每次判断经过完整的多步推理流程,决策可追溯、可复盘
  • 风控作为独立模块,优先级高于所有调仓判断

2. 系统架构设计

2.1 闭环流程

系统由三条链式衔接的定时任务驱动每日自动执行:

18:10  执行任务(按昨日计划模拟成交)
   ↓
18:15  复盘任务(校验执行正确性 + 体系健康度)
   ↓
18:20  计划生成任务(完整五步判断 → 输出下一交易日计划)
   ↓
次日09:15  推送任务(计划推送到飞书)

设计原则:计划、执行、复盘三段分离,职责边界清晰。Agent 仅在盘后执行判断。

2.2 候选池设计

系统锁定 6 只大类资产 ETF,覆盖权益、债券、商品、现金四大类,不做行业级轮动:

代码 名称 资产类别 场景定位
510300 沪深300ETF A股大盘 A股复苏、风险偏好上升
588000 科创50ETF 科技成长 科创行情主导
511260 10年国债ETF 利率债 避险、利率下行
518880 黄金ETF 商品 通胀、美元走弱、地缘风险
513500 标普500ETF 海外权益 A股不明、美股趋势向好
511990 货币ETF 现金 方向极度不明,持币观望

关键设计决策: 1. 现金是正式候选——与其他标的地位平等,不因"必须持有资产"而降低判断标准 2. 不做行业ETF轮动——行业轮动频率高、波动大、判断维度多,不适合 Agent 做稳定推理 3. 切换门槛明确分级——轻微占优/明显占优/压倒性占优,避免频繁切换

2.3 Agent 判断框架(五步推理)

每一步都按固定顺序执行,不跳过、不跳跃:

步骤 模块 核心逻辑
Step 1 宏观环境评估 5维度(增长/风险偏好/流动性/避险/外部)各输出 2-3 级判断
Step 2 候选统一排名 6只 ETF 在同一框架下横向比较,输出完整排名表
Step 3 继续持有默认 当前持仓逻辑成立则不切换,不因"略好"就换
Step 4 风控闸门 正常/审慎/冻结三级风控,优先级高于调仓判断
Step 5 唯一结论输出 仅允许 3 种结论:继续持有 / 切换 / 转现金

输出规则:结论必须唯一,不允许"二选一""盘中再看""视情况而定"等模糊输出。


3. 技术实现

3.1 数据层

  • 数据源:Tushare Pro(指数行情、ETF 日线、宏观指标、Shibor)
  • 缓存层:自建 ts_cache.py,以天为单位过期,避免同日内重复请求
  • 交易日历is_trading_day.py 基于交易所 trade_cal 判断,自动处理长假、调休等复杂情况

3.2 调度层

基于 Hermes Agent 框架,每条 cronjob 为自包含的 prompt,指定 schedule、skills、model、workdir、deliver 目标:

# 核心调度链(3条 cronjob)
Job 1 - 18:10: 回放执行
Job 2 - 18:15: 复盘校验
Job 3 - 18:20: 计划生成(使用 stronger 模型)

# 辅助任务
09:15 - 全体系计划推送
15:00 - 收盘提醒
23:55 - 每日摘要聚合

链式衔接通过 context_from 机制保证顺序依赖:下游始终等待上游完成。

3.3 知识管理层

每次运行输出结构化 Markdown 文件(含 YAML Frontmatter),自动同步至:

  1. 知识图谱(KG)——建立文档之间的关联关系
  2. 云端 RAG(百炼)——支持历史判断检索回溯
  3. Git 版本管理——全版本可追溯

4. 技术难点与解决方案

问题 影响 解决方案
计划链条断裂 复盘要求建仓但计划文件缺失 统一监控目录 + 23:55 一致性校验 + 异常告警推送
分钟级数据缺失 Tushare 偶发数据断点 记录异常,跳过执行。原则:宁可漏执行,不造假数据
Agent 数据幻觉 编造或夸大数据表述 prompt 强制约束:所有数据须经 API 查询核实,时间窗口精确到日期区间
交易日历复杂性 调休、长假等特殊情况 运行时查询交易所 trade_cal,不依赖硬编码判断

5. 运行成果

实际运行案例(2026-07-13)

市场背景:上证失守 4000 点,沪深300 两周跌 4.3%,科创50 两日振幅 16%

Agent 判定

增长预期 → 模糊    风险偏好 → 下降分化    流动性 → 中性
避险     → 升温    外部扰动 → 存在但次要
结论:环境高度模糊,不应做方向性押注

最终决策:6 只候选标的全量排序后,认定无一显著优于现金 → 继续持有货币ETF,持币观望

该决策并非"未作判断"——而是经过完整五步推理框架得出的系统级结论,每个环节均可追溯可复盘。


6. 后续规划

周期 方向 目标
短期 量化辅助指标 引入动量、波动率、趋势强度等量化数据作为 Agent 判断实证
规则库反哺 自动识别重复判断偏差,提示规则收紧建议
中期 多资产分仓 从单一持有扩展为动态比例配置
条件触发执行 支持"跌破 MA10 则次日转现金"等条件规则
长期 跨体系联动 ETF 轮动与回调低吸体系共享风险预算与资金池

7. 个人收获

  • 独立完成从架构设计、编码实现到上线运维的全流程,工程化落地能力得到验证
  • 深度实践了 Agent + 定时任务 + 数据管道 + 知识库的组合工程模式
  • 系统已在真实市场环境中每日运行,积累了大量可追溯的决策数据和复盘经验