AI 自动化实战:用 Hermes Agent 替代重复劳动
为什么要自动化
做量化交易,最消耗时间的是不是策略研究,而是这些重复劳动:
| 任务 | 频率 | 手动耗时 |
|---|---|---|
| 下载全市场日线数据 | 每天 | 5-10 分钟 |
| 运行策略回测 | 每周 | 15-30 分钟 |
| 生成投资日报 | 每天 | 20-40 分钟 |
| 检查系统健康(磁盘、数据完整性) | 每天 | 5 分钟 |
| 同步数据到数据库 | 每天 | 10 分钟 |
加起来每天 40-60 分钟——一个月就是 20 小时。用 Hermes Agent 自动化后,这些任务全部在后台自动完成,你只需要在飞书/微信上收结果。
架构设计
这套自动化系统的架构很简单:
┌────────────────┐ ┌──────────────┐ ┌──────────────┐
│ Hermes Agent │───▶│ 工具调用 │───▶│ 外部系统 │
│ (大脑) │ │ terminal │ │ pytdx │
│ │ │ file │ │ DuckDB │
│ │ │ web_search │ │ 本地文件 │
│ │ │ │ │ 飞书 │
└────────────────┘ └──────────────┘ └──────────────┘
Agent 作为”大脑”,收到指令后:
- 规划步骤
- 调用 terminal 执行 Python 脚本
- 读取结果并判断
- 继续下一步或输出报告
实战一:自动下载数据
手动方式
python download_daily.py
Agent 方式
只需要给 Agent 一句话:
下载今天的全市场日线数据,包括股票、ETF 和可转债
Agent 会自动:
- 检查上次下载日期
- 调用 pytdx 拉取增量数据
- 保存为 CSV
- 导入 DuckDB
- 汇报下载结果
核心代码(Agent 自己会写的脚本)
# download_daily.py
import pandas as pd
from tdxuse import TdxUse
def download_market_data():
"""下载全市场日线数据"""
tdx = TdxUse()
# 股票
stocks = tdx.get_all_stocks()
for code in stocks:
df = tdx.get_daily(code, start='20260101')
df.to_parquet(f'data/stock_{code}.parquet')
# ETF
etfs = tdx.get_all_etfs()
for code in etfs:
df = tdx.get_daily(code, start='20260101')
df.to_parquet(f'data/etf_{code}.parquet')
print(f"✅ 下载完成: {len(stocks)}只股票, {len(etfs)}只ETF")
实战二:策略回测自动化
你不需要手动改参数跑回测。直接说:
帮我回测 ETF 轮动策略,调仓频率改成每两周一次
Agent 会:
- 读取当前策略代码
- 修改调仓频率参数
- 运行回测
- 输出收益曲线和关键指标
回测脚本示例
# backtest_etf_rotation.py
import duckdb
import pandas as pd
def run_rotation_backtest(period='2w'):
"""ETF动量轮动回测"""
conn = duckdb.connect('data/quant.duckdb')
# 读取ETF数据
etfs = conn.execute("""
SELECT code, date, close
FROM etf_daily
WHERE date >= '2020-01-01'
""").fetchdf()
# 计算动量(过去N日收益率)
etfs['momentum'] = etfs.groupby('code')['close'].transform(
lambda x: x.pct_change(20)
)
# 每月调仓:选动量最强的3只ETF
etfs['month'] = etfs['date'].dt.to_period('M')
top_etfs = etfs.groupby('month').apply(
lambda x: x.nlargest(3, 'momentum')
)
# 计算组合收益
portfolio_return = top_etfs.groupby('date')['close'].mean()
total_return = (portfolio_return / portfolio_return.iloc[0] - 1)
print(f"回测周期: 2020-01 ~ {pd.Timestamp.today().date()}")
print(f"总收益率: {total_return.iloc[-1]:.1%}")
print(f"年化收益率: {((1 + total_return.iloc[-1]) ** (12 / len(total_return)) - 1):.1%}")
实战三:自动生成投资日报
这是每天最有价值的自动化。只需要说:
生成今天的投资日报,发送到飞书
Agent 会:
- 拉取数据——今日行情、持仓变动
- 计算指标——账户收益率、风险敞口
- 生成报告——Markdown 格式日报
- 发送推送——通过飞书 API 发送
日报内容示例
📊 **2026-06-18 投资日报**
**市场概况**
- 上证指数: 3,215.67 (+0.32%)
- 沪深300: 3,876.54 (+0.45%)
**策略表现**
- ETF轮动: 今日 +0.52%,累计 +18.7%
- Barra因子选股: 今日 +0.38%,累计 +30.5%
**操作提醒**
- 无调仓信号,持有不动
**数据状态**
- 数据完整性: ✅ 正常
- 磁盘空间: 47% 可用
实战四:自动巡检系统健康
每天早上开机后,Agent 自动检查:
检查系统状态:磁盘、数据完整性、网关连接
输出示例:
🔍 早间巡检报告 — 2026-06-18
✅ DuckDB 数据: 15.2M 行股票 × 736K 行可转债 × 69K 行 ETF
✅ 磁盘: C盘 64%, D盘 47%, WSL 2%
✅ 网关: 运行中
✅ 昨日数据: 完整无缺失
让自动化持续运行
手动下指令还不够”自动”——真正的自动化是设定好就不管了。
在 Hermes 中,一句简单的:
创建一个 cron 任务,每天早上 6 点执行早间巡检并发到飞书
就完成了自动化配置。Agent 会帮你创建 cron 作业,到点自动执行。
💡 详细 cron 配置方法见下一篇:「cron 调度:让 Agent 每天自动干活」
常见问题
Agent 写的脚本不放心怎么办?
你可以让 Agent 先展示代码再执行:
先把下载脚本写出来让我看看,不要执行
确认无误后再说:
现在执行吧
任务跑到一半断了?
Hermes 有上下文压缩和会话恢复机制。如果任务中途被中断:
hermes --continue
就可以从上次位置继续。
能同时跑多个任务吗?
可以。Agent 可以并行处理多个独立任务,或者一个任务在后台跑、你同时问别的问题。
小结
自动化实战的关键三步:
- 识别重复——找出每天/每周固定要做的任务
- 封装脚本——让 Agent 帮你写执行脚本
- 设置触发——手动指令 → cron 定时 → 全自动
本文是 Agent 学习路径的第 2 步。下一步:cron 调度:让 Agent 每天自动干活 →