侧边栏壁纸
博主头像
晓果冻博主等级

行动起来,活在当下

  • 累计撰写 140 篇文章
  • 累计创建 17 个标签
  • 累计收到 91 条评论

目 录CONTENT

文章目录
AI

股票助手 Agent 设计

Administrator
2026-03-04 / 0 评论 / 0 点赞 / 2 阅读 / 45728 字

股票助手 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股量化监控系统

核心功能:

  1. 市场情绪评分 (7维度)

    • 涨跌家数比 (20%)
    • 平均涨幅 (20%)
    • 涨停/跌停比 (15%)
    • 强势股占比 (15%)
    • 成交活跃度 (10%)
    • 波动率 (10%)
    • 趋势强度 (10%)
  2. 智能选股引擎

    短线策略 (5大策略)

    • RSI短线 - 超短线RSI策略
    • MACD短线 - MACD金叉死叉
    • KDJ短线 - KDJ超买超卖
    • 布林突破 - 布林带突破
    • 放量突破 - 量价齐升

    中长线策略 (7大策略)

    • MA趋势 - 均线多头排列
    • MACD趋势 - MACD趋势确认
    • 价值成长 - 长期价值投资
    • 突破回踩 - 突破后回踩买入
    • 底部反转 - RSI+MACD双确认
    • 趋势加速 - 均线多头+放量
    • 强势股回调 - 强势股回调低吸
  3. 实时价格监控

    • 交易时间:5秒更新
    • 非交易时间:显示历史数据
    • 自动判断交易时段
  4. Web可视化界面

    • 市场情绪仪表盘
    • 监控股票卡片
    • 统计数据汇总

技术特点:

  • 双数据源架构 (新浪财经 + AkShare)
  • 智能切换机制
  • SQLite 数据缓存
  • 异步数据获取

4.2 akshare-stock

描述: A股量化数据分析工具

功能:

  • 实时行情查询
  • 历史K线数据
  • 财务数据
  • 板块/行业分析
  • 资金流向
  • 龙虎榜数据
  • 新股/IPO数据
  • 融资融券数据

4.3 fundamental-stock-analysis

描述: 基本面分析与同行排名

评分维度:

  • 质量评分
  • 资产负债表安全
  • 现金流
  • 估值
  • 行业调整
  • 置信度修正

4.4 stock-watcher

描述: 自选股管理与监控

功能:

  • 添加/删除股票
  • 查看自选股列表
  • 行情总结
  • 性能摘要

五、知识系统

5.1 设计理念

在每次股票分析时自动加载投资书籍中学到的知识,确保分析基于系统化的投资原则而非主观臆测。

5.2 知识来源

已整合的投资书籍核心原则:

  1. 《市场真相》

    • 不要盲目相信专家荐股
    • 关注市场情绪而非预测
    • 逆向投资但不要接飞刀
    • 损失厌恶是最大敌人
  2. 《威科夫操盘法》

    • 供需关系决定价格
    • 吸筹阶段:低量窄幅波动
    • 派发阶段:高量宽幅波动
    • 跟随主力而非对抗
  3. 《股票大作手回忆录》

    • 趋势是你的朋友
    • 关键点突破是买入时机
    • 资金管理决定生死
    • 承认错误立即止损
  4. 《慢慢变富》

    • 安全边际是护城河
    • 复利是第八大奇迹
    • 长期持有优质公司
    • 耐心是最好策略
  5. 《漫步华尔街》

    • 分散投资降低风险
    • 低成本指数基金是好选择
    • 资产配置比选股重要

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
  • WhatsApp
  • 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

0

评论区