股票助手 Agent 设计文档
一、项目概述
项目名称: Stock AI Assistant
项目类型: A股量化分析智能助手
核心定位: 专注于A股数据分析,提供有价值的投资信息(而非投资建议)
技术栈: OpenClaw + Python + AkShare + Flask
二、架构设计
2.1 整体架构
┌─────────────────────────────────────────────────────────────────┐
│ 用户交互层 │
│ (Telegram / Discord / WhatsApp 等) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ stock (主 Agent) │
│ - 任务协调与调度 │
│ - 结果汇总与回复 │
│ - 知识系统调用 │
└─────────────────────────────────────────────────────────────────┘
│
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ stock-query │ │ stock-decision │ │stock-reflection │
│ (行情查询) │ │ (买卖决策) │ │ (复盘学习) │
│ │ │ │ │ │
│ - 实时行情 │ │ - 技术分析 │ │ - 决策回顾 │
│ - 自选股监控 │ │ - 资金流向 │ │ - 错误分析 │
│ - 涨跌幅排行 │ │ - 市场情绪 │ │ - 策略更新 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────┼───────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ 数据存储层 │
│ - SQLite 缓存数据库 │
│ - JSON 文件存储 │
│ - Markdown 学习笔记 │
└─────────────────────────────────────────────────────────────────┘
2.2 数据流设计
用户指令
│
▼
┌────────────────────────────────────────────┐
│ stock(主) 分析任务意图 │
│ - 识别任务类型 │
│ - 确定所需子 Agent │
└────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────┐
│ 并行/串行调用子 Agent │
│ - stock-query → 行情数据 → latest.json │
│ - stock-decision → 分析决策 → decisions │
│ - stock-reflection → 复盘 → journal.md │
└────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────┐
│ stock(主) 汇总结果 │
│ - 整合各 Agent 输出 │
│ - 添加风险提示 │
│ - 格式化回复 │
└────────────────────────────────────────────┘
│
▼
用户收到回复
三、核心组件
3.1 主 Agent (stock)
职责:
- 协调调度各子 Agent
- 理解用户意图
- 整合分析结果
- 最终回复用户
核心原则 (定义在 SOUL.md):
- 提供有价值的信息,而非投资建议
- 数据优先,用数据说话
- 诚实面对不确定性
- 明确告知不是投资建议
数据文件:
SOUL.md- Agent 核心价值观与行为准则USER.md- 用户信息与偏好IDENTITY.md- Agent 身份定义MEMORY.md- 长期记忆memory/YYYY-MM-DD.md- 每日记录
3.2 子 Agent 配置
stock-query (行情查询)
职责: 获取股票实时行情数据
输入: 自选股列表
输出: 格式化行情数据 (latest.json)
功能:
- 读取 watchlist.txt 获取自选股
- 调用数据源查询每只股票
- 输出:代码、名称、现价、涨跌、涨跌幅、成交量、换手率
- 统计数据:上涨/下跌/平盘数量、平均涨跌幅
stock-decision (买卖决策)
职责: 基于行情和基本面分析给出决策建议
输入:
- latest.json (行情数据)
- latest_analysis.json (基本面分析)
输出: decisions.json
功能:
- 技术指标分析 (RSI, MACD, KDJ, BOLL)
- 资金流向分析
- 市场情绪评估
- 决策建议:买入/持有/卖出
- 风险提示
- 心理偏差提醒
stock-reflection (复盘学习)
职责: 回顾决策,积累经验
输入:
- latest.json
- decisions.json
- journal.md (历史复盘)
输出: 更新 journal.md
功能:
- 回顾今日决策
- 分析正确/错误
- 记录心得教训
- 更新投资策略
四、技能系统 (Skills)
4.1 a-stock-monitor
描述: A股量化监控系统
核心功能:
-
市场情绪评分 (7维度)
- 涨跌家数比 (20%)
- 平均涨幅 (20%)
- 涨停/跌停比 (15%)
- 强势股占比 (15%)
- 成交活跃度 (10%)
- 波动率 (10%)
- 趋势强度 (10%)
-
智能选股引擎
短线策略 (5大策略)
- RSI短线 - 超短线RSI策略
- MACD短线 - MACD金叉死叉
- KDJ短线 - KDJ超买超卖
- 布林突破 - 布林带突破
- 放量突破 - 量价齐升
中长线策略 (7大策略)
- MA趋势 - 均线多头排列
- MACD趋势 - MACD趋势确认
- 价值成长 - 长期价值投资
- 突破回踩 - 突破后回踩买入
- 底部反转 - RSI+MACD双确认
- 趋势加速 - 均线多头+放量
- 强势股回调 - 强势股回调低吸
-
实时价格监控
- 交易时间:5秒更新
- 非交易时间:显示历史数据
- 自动判断交易时段
-
Web可视化界面
- 市场情绪仪表盘
- 监控股票卡片
- 统计数据汇总
技术特点:
- 双数据源架构 (新浪财经 + AkShare)
- 智能切换机制
- SQLite 数据缓存
- 异步数据获取
4.2 akshare-stock
描述: A股量化数据分析工具
功能:
- 实时行情查询
- 历史K线数据
- 财务数据
- 板块/行业分析
- 资金流向
- 龙虎榜数据
- 新股/IPO数据
- 融资融券数据
4.3 fundamental-stock-analysis
描述: 基本面分析与同行排名
评分维度:
- 质量评分
- 资产负债表安全
- 现金流
- 估值
- 行业调整
- 置信度修正
4.4 stock-watcher
描述: 自选股管理与监控
功能:
- 添加/删除股票
- 查看自选股列表
- 行情总结
- 性能摘要
五、知识系统
5.1 设计理念
在每次股票分析时自动加载投资书籍中学到的知识,确保分析基于系统化的投资原则而非主观臆测。
5.2 知识来源
已整合的投资书籍核心原则:
-
《市场真相》
- 不要盲目相信专家荐股
- 关注市场情绪而非预测
- 逆向投资但不要接飞刀
- 损失厌恶是最大敌人
-
《威科夫操盘法》
- 供需关系决定价格
- 吸筹阶段:低量窄幅波动
- 派发阶段:高量宽幅波动
- 跟随主力而非对抗
-
《股票大作手回忆录》
- 趋势是你的朋友
- 关键点突破是买入时机
- 资金管理决定生死
- 承认错误立即止损
-
《慢慢变富》
- 安全边际是护城河
- 复利是第八大奇迹
- 长期持有优质公司
- 耐心是最好策略
-
《漫步华尔街》
- 分散投资降低风险
- 低成本指数基金是好选择
- 资产配置比选股重要
5.3 知识调用流程
分析请求
│
▼
knowledge_system.py 扫描学习笔记
│
▼
生成分析提示词 (包含书籍原则和问题清单)
│
▼
Agent 分析时必须回答这些问题
│
▼
将答案融入分析报告
六、自动化任务
6.1 定时触发器
stock-decision 定时任务:
- 每天 5 次: 9:30 / 10:00 / 11:00 / 14:00 / 14:40
- 调用知识系统获取学习内容
- 读取最新行情和基本面数据
- 生成买卖决策建议
数据更新任务:
- 交易时间每 5 分钟更新全市场数据
- 每日收盘后生成选股推荐
6.2 心跳机制 (Heartbeat)
配置: 当前为空,暂无周期性检查任务
可扩展功能:
- 邮件检查
- 日历事件提醒
- 天气查询
- 社交媒体通知
七、数据存储
7.1 文件结构
~/.clawdbot/
├── stock_watcher/
│ └── watchlist.txt # 自选股列表
├── stock_data/
│ └── latest.json # 最新行情数据
├── stock_decisions/
│ └── decisions.json # 买卖决策
├── stock_fundamental/
│ ├── latest_analysis.json # 基本面分析
│ ├── knowledge_index.json # 知识索引
│ └── learning_log/ # 学习笔记
└── stock_reflections/
└── journal.md # 复盘日记
7.2 SQLite 缓存
文件: stock_cache.db
用途: 缓存股票数据,减少API调用
缓存时间: 30分钟
八、配置说明
8.1 环境配置
| 配置项 | 说明 |
|---|---|
| Python 版本 | 3.9+ |
| 时区 | Asia/Shanghai |
| 工作目录 | /root/.openclaw/workspace-stock |
8.2 依赖包
akshare # A股数据接口
flask # Web服务
ccxt # 交易所接口
requests # HTTP请求
8.3 第三方服务
| 服务 | 用途 |
|---|---|
| AkShare | A股行情、财务数据 |
| 新浪财经 | 实时行情 (交易时间优先) |
| 同花顺 (10jqka.com.cn) | 自选股数据 |
| MiniMax | 网络搜索 (MCP) |
九、安全与边界
9.1 核心边界
- 不推荐具体买入/卖出: 只提供分析信息,不做投资建议
- 不保证收益: 明确告知股市有风险
- 投资需谨慎: 风险自担
- 不造谣传谣: 只引用权威数据源
9.2 安全原则
- 不暴露 API 密钥、密码等敏感信息
- 不执行未经授权的命令
- 不泄露用户隐私数据
- 敏感操作需用户确认
十、扩展能力
10.1 支持的通讯渠道
- Telegram (主要)
- Discord
- Signal
- Web Chat
10.2 待实现功能 (TODO)
1. 告警通知系统
目标: 实时推送关键信息,确保用户第一时间获取市场变化
告警类型:
| 类型 | 触发条件 | 通知方式 |
|---|---|---|
| 价格异动 | 涨跌幅 > 5% | 推送 |
| 涨停板 | 触及涨停 | 推送 |
| 跌停板 | 触及跌停 | 推送 |
| 选股推荐 | 每日策略选股结果 | 定时推送 |
| 市场情绪突变 | 情绪评分变化 > 20分 | 预警 |
| 成交额异动 | 成交量放大 2倍以上 | 提醒 |
通知渠道:
- 飞书/企业微信 Webhook: 企业级推送,支持卡片格式
- Telegram Bot: 个人即时通讯
- 邮件: 重要通知存档
- 短信: 极端行情应急通知
实现架构:
市场数据监控
│
▼
规则引擎 ←── 告警规则配置 (alert_rules.json)
│
▼
消息队列 (Redis/RabbitMQ)
│
├─→ 飞书 Webhook
├─→ Telegram Bot
└─→ 邮件服务
配置示例 (alert_rules.json):
{
"rules": [
{
"name": "涨停提醒",
"condition": "change_pct >= 9.9",
"channel": "feishu",
"enabled": true
},
{
"name": "异动提醒",
"condition": "volume_ratio > 2.0",
"channel": "telegram",
"enabled": true
}
]
}
2. 机器学习模块
目标: 利用机器学习算法辅助投资决策
功能模块:
2.1 预测模型
| 模型 | 输入特征 | 输出 | 适用场景 |
|---|---|---|---|
| 价格预测 LSTM | K线序列、成交量、技术指标 | 未来 N 天价格 | 短线择时 |
| 涨跌预测 Classifier | 宏观+基本面+技术面 | 涨/跌/平 | 日内交易 |
| 情绪预测 | 资金流向、龙虎榜、新闻情绪 | 市场情绪评分 | 仓位管理 |
特征工程:
- 技术指标: RSI, MACD, KDJ, BOLL, MA, EMA
- 量价特征: 成交量、成交额、换手率、量比
- 基本面: PE, PB, ROE, 营收增长
- 市场情绪: 涨停数、跌停数、资金净流入
2.2 量化策略回测
功能:
- 任意策略的历史回测
- 多维度绩效分析
- 样本内外检验
- 参数优化
回测指标:
- 年化收益率 (Annual Return)
- 夏普比率 (Sharpe Ratio)
- 最大回撤 (Max Drawdown)
- 胜率 (Win Rate)
- 盈亏比 (Profit/Loss Ratio)
- 卡玛比率 (Calmar Ratio)
回测框架:
策略定义 → 历史数据 → 信号生成 → 回测引擎 → 绩效报告
│ │
└─→ 参数优化 ────────────────┘
示例策略:
class MaCrossStrategy:
"""均线金叉死叉策略"""
def __init__(self, short_ma=5, long_ma=20):
self.short_ma = short_ma
self.long_ma = long_ma
def generate_signal(self, df):
df['ma5'] = df['close'].rolling(5).mean()
df['ma20'] = df['close'].rolling(20).mean()
# 金叉买入,死叉卖出
df['signal'] = 0
df.loc[df['ma5'] > df['ma20'], 'signal'] = 1
df.loc[df['ma5'] < df['ma20'], 'signal'] = -1
return df
2.3 组合优化
目标: 在给定风险约束下最大化收益
方法:
- 均值-方差优化 (Markowitz)
- 最小方差组合
- 最大夏普比率组合
- 风险平价策略
- Black-Litterman 模型
输入:
- 各资产预期收益
- 协方差矩阵
- 风险偏好/约束
输出:
- 最优权重配置
- 预期收益
- 预期风险
3. 高级分析 (扩展数据源)
| 数据类型 | 数据源 | 用途 |
|---|---|---|
| 期权数据 | 期权链、希腊字母 | 波动率交易、对冲 |
| 期货数据 | 商品期货、股指期货 | 期现套利、CTA策略 |
| 基金数据 | 基金净值、重仓股 | 基金对比、FOF配置 |
| 宏观数据 | GDP、CPI、利率 | 宏观择时 |
| 新闻舆情 | 文本分析 | 事件驱动 |
十一、目录结构
workspace-stock/
├── AGENTS.md # 工作区配置
├── SOUL.md # Agent 核心价值观
├── USER.md # 用户信息
├── IDENTITY.md # Agent 身份
├── TOOLS.md # 工具配置
├── HEARTBEAT.md # 心跳配置
├── stock-team-config.md # 团队配置
├── skills/
│ ├── a-stock-monitor/ # 量化监控系统
│ ├── akshare-stock/ # 数据接口
│ ├── fundamental-stock-analysis/ # 基本面分析
│ └── stock-watcher/ # 自选股管理
├── scripts/
│ ├── knowledge_system.py # 知识系统
│ ├── stock_decision_trigger.py # 决策触发器
│ └── ...
└── memory/
└── YYYY-MM-DD.md # 每日记录
十二、版本与更新
更新日志
| 版本 | 日期 | 更新内容 |
|---|---|---|
| 1.0.0 | 2026-02-24 | 初始版本,基本功能 |
| 1.1.0 | 2026-03-02 | 增加 skills 系统 |
| 1.1.2 | 2026-03-03 | a-stock-monitor 性能优化 |
附录
A. 常用股票代码示例
| 股票 | 代码 |
|---|---|
| 平安银行 | 000001 |
| 贵州茅台 | 600519 |
| 宁德时代 | 300750 |
| 比亚迪 | 002594 |
| 招商银行 | 600036 |
B. API 端点
| 端点 | 说明 |
|---|---|
| /api/market/sentiment | 市场情绪评分 |
| /api/stocks | 所有监控股票 |
| /api/stocks/realtime | 实时价格 |
/api/stock/ |
单只股票详情 |
本文档最后更新于 2026-03-04
评论区