Investment Multi-Agent Decision System

v1.1.1

投资研究多智能体决策系统 - 8位专业分析师并行研究,加权投票给出投资建议。支持A股股票、基金、ETF、可转债等多种投资标的分析。支持实时行情获取、财务数据分析、多维度分析、风险提示。触发词:股票分析、基金推荐、投资建议、买卖建议、估值分析、能买吗。

1· 58· 6 versions· 0 current· 0 all-time· Updated 3h ago· MIT-0

投资研究多智能体决策系统

🎯 核心特性

特性说明
多智能体分析8位专业分析师并行研究
加权投票机制按权重计算最终投资建议
多标的支持支持A股股票、基金、ETF、可转债
实时行情通过腾讯财经API获取实时行情
财务数据分析行情数据+行业估算(部分指标)
完整报告输出结构化投资决策报告
风险提示识别并提示潜在风险

⚠️ 数据说明:本技能仅使用腾讯财经API(qt.gtimg.cn)获取数据。部分财务指标(如毛利率、净利率)基于行业经验估算,非真实财务报表数据。如需精确财务数据,请查阅官方财报或专业数据平台。


🚀 快速开始

1️⃣ 安装

cd ~/.openclaw/skills/boheng-investment-workflow/scripts
chmod +x install.sh
./install.sh

会自动完成:

  • ✅ 创建 ~/.openclaw/workspace/investment/ 数据目录
  • ✅ 安装 Python 依赖(requests, beautifulsoup4, akshare)
  • ✅ 测试基本功能

依赖说明

依赖包用途
requestsHTTP 请求(必需)
beautifulsoup4HTML 解析(可选)

⚠️ 注意:本技能不再依赖 AKShare。所有数据通过腾讯财经API获取,部分财务指标为估算值。


2️⃣ 分析投资标的

股票分析

# 分析单只股票
python3 analyze_stock.py 600919

# 指定股票名称
python3 analyze_stock.py 600919 江苏银行

基金分析

# 分析基金
python3 analyze_fund.py 110022  # 易方达消费行业

# 指定基金名称
python3 analyze_fund.py 110022 易方达消费行业

ETF分析

# 分析ETF
python3 analyze_etf.py 510300  # 沪深300ETF

# 指定ETF名称
python3 analyze_etf.py 510300 沪深300ETF

可转债分析

# 分析可转债
python3 analyze_bond.py 113050  # 核能转债

# 指定可转债名称
python3 analyze_bond.py 113050 核能转债

3️⃣ 输出示例

==================================================
        投资研究决策报告
==================================================

【标的】:600919 江苏银行
【研究时间】:2026-04-29
【当前价格】:¥11.40 (+0.35%)

==========================================
        财务数据概览
==========================================

📊 盈利能力:
   ROE: 12.5%  |  毛利率: 45.2%  |  净利率: 28.3%

📈 成长能力:
   营收增速: 8.5%  |  利润增速: 12.3%

💰 估值指标:
   PE: 5.8倍  |  PB: 0.65倍  |  股息率: 5.2%

==========================================
        8位分析师投票结果
==========================================

1. 宏观经济分析师 → ✅ 建议 (权重 1.0x)
   理由:货币政策宽松,利率下行利好银行股...

2. 行业研究员 → ✅ 建议 (权重 1.5x) ⭐
   理由:银行业景气度稳定,息差收窄但资产质量改善...

==========================================
            最终结论
==========================================

最终建议:✅ 建议投资

综合建议:
1. 估值处于历史低位,具备安全边际
2. 高股息率(5.2%),适合长期持有
3. 建议分批建仓,控制仓位

风险提示:
- 经济下行可能导致不良贷款上升
- 息差收窄压力持续
==========================================

📁 文件结构

boheng-investment-workflow/
├── SKILL.md                    # 主文档
├── README.md                   # 使用说明
└── scripts/
    ├── config.py               # ⭐ 统一配置
    ├── monitor.py              # ⭐ 行情监控模块
    ├── financial_data.py       # ⭐ 财务数据模块(AKShare)
    ├── analysts.py             # ⭐ 8位分析师模块
    ├── analyze_stock.py        # ⭐ 股票分析入口
    ├── analyze_fund.py         # ⭐ 基金分析入口
    ├── analyze_etf.py          # ⭐ ETF分析入口
    ├── analyze_bond.py         # ⭐ 可转债分析入口
    ├── report_generator.py     # 报告生成器
    ├── install.sh              # 安装脚本
    └── uninstall.sh            # 卸载脚本

👥 8位分析师及其职责

#分析师职责分析维度权重数据来源
1宏观经济分析师宏观环境分析GDP/利率/政策1.0xAKShare宏观接口
2行业研究员行业景气度赛道/竞争/政策1.5xAKShare行业数据
3基本面分析师公司财务分析业绩/增长/护城河1.5xAKShare财务报表
4技术分析师K线趋势分析趋势/支撑/信号1.0xAKShare K线数据
5风险控制师风险识别仓位/止损/分散1.2x综合分析
6量化分析师数据统计分析因子/相关/回测1.0xAKShare历史数据
7情绪分析师市场情绪分析资金/贪婪恐惧0.8xAKShare资金流向
8估值分析师合理价值分析DCF/PE分位/安全边际1.2xAKShare估值数据

📊 AKShare 数据接口使用

⚠️ 重要说明:v1.1.1 版本起,本技能已移除 AKShare 依赖,改为仅使用腾讯财经API。以下文档保留供参考,但代码中不再使用 AKShare。

行情数据(已弃用 AKShare)

import akshare as ak

# 实时行情
df = ak.stock_zh_a_spot_em()
quote = df[df['代码'] == '600919'].iloc[0]

# 历史K线
df = ak.stock_zh_a_hist(symbol="600919", period="daily", 
                         start_date="20250101", end_date="20260429",
                         adjust="qfq")  # 前复权

财务数据

import akshare as ak

# 主要财务指标
df = ak.stock_financial_analysis_indicator(symbol="600919")
# 包含:ROE、毛利率、净利率、营收增速等

# 资产负债表
df = ak.stock_balance_sheet_by_report_em(symbol="600919")

# 利润表
df = ak.stock_profit_sheet_by_report_em(symbol="600919")

# 现金流量表
df = ak.stock_cash_flow_sheet_by_report_em(symbol="600919")

估值数据

import akshare as ak

# 市盈率、市净率、股息率
df = ak.stock_a_lg_indicator(symbol="600919")
# 包含:pe_ttm、pb、dv_ratio(股息率)

# 估值分位
# 需要结合历史数据计算

资金流向

import akshare as ak

# 个股资金流向
df = ak.stock_individual_fund_flow(stock="600919", market="sh")

# 主力资金
df = ak.stock_fund_flow_individual(symbol="600919")

行业数据

import akshare as ak

# 行业板块行情
df = ak.stock_board_industry_name_em(symbol="银行")

# 个股所属行业
df = ak.stock_individual_info_em(symbol="600919")

📈 各分析师数据使用详解

1. 宏观经济分析师

数据接口

# 中国GDP增速
df = ak.macro_china_gdp()

# CPI/PPI
df = ak.macro_china_cpi_yearly()

# 社融数据
df = ak.macro_china_shrz_money()

# 利率数据
df = ak.macro_china_shibor_all()

分析逻辑

  • GDP增速 > 5%:经济扩张,利好股市
  • CPI < 3%:通胀温和,货币政策空间大
  • 社融增速上升:信用扩张,利好市场

2. 行业研究员

数据接口

# 行业涨跌幅排行
df = ak.stock_board_industry_index_em()

# 行业资金流向
df = ak.stock_board_industry_fund_flow_em()

# 行业估值
df = ak.stock_board_industry_pe_lg(symbol="银行")

分析逻辑

  • 行业涨跌幅排名前30%:景气度高
  • 行业资金净流入:资金关注度高
  • 行业PE处于历史低位:估值优势

3. 基本面分析师

数据接口

# 主要财务指标
df = ak.stock_financial_analysis_indicator(symbol="600919")

# 关键指标:
# - roe: 净资产收益率
# - roa: 总资产收益率
# - grossprofitmargin: 毛利率
# - netprofitmargin: 净利率
# - revenue_growth: 营收增速
# - net_profit_growth: 利润增速
# - debt_to_asset: 资产负债率
# - current_ratio: 流动比率
# - ocf_to_revenue: 经营现金流/营收

评分标准

指标优秀良好一般较差
ROE>15%10-15%5-10%<5%
毛利率>40%25-40%15-25%<15%
营收增速>20%10-20%0-10%<0%
资产负债率<40%40-60%60-75%>75%

4. 技术分析师

数据接口

# 日K线数据
df = ak.stock_zh_a_hist(symbol="600919", period="daily",
                         start_date="20250101", adjust="qfq")

# 列包含:开盘、收盘、最高、最低、成交量、成交额

技术指标计算

import pandas as pd

# 均线
df['MA5'] = df['收盘'].rolling(5).mean()
df['MA10'] = df['收盘'].rolling(10).mean()
df['MA20'] = df['收盘'].rolling(20).mean()

# MACD
exp12 = df['收盘'].ewm(span=12, adjust=False).mean()
exp26 = df['收盘'].ewm(span=26, adjust=False).mean()
df['MACD'] = exp12 - exp26
df['SIGNAL'] = df['MACD'].ewm(span=9, adjust=False).mean()

# RSI
delta = df['收盘'].diff()
gain = (delta.where(delta > 0, 0)).rolling(14).mean()
loss = (-delta.where(delta < 0, 0)).rolling(14).mean()
rs = gain / loss
df['RSI'] = 100 - (100 / (1 + rs))

信号判断

  • 金叉:MA5上穿MA20,MACD上穿信号线
  • 超买:RSI > 70
  • 超卖:RSI < 30

5. 风险控制师

数据来源:综合其他分析师数据

风险评估

# 波动率(年化)
volatility = df['收盘'].pct_change().std() * (252 ** 0.5)

# 最大回撤
cummax = df['收盘'].cummax()
drawdown = (df['收盘'] - cummax) / cummax
max_drawdown = drawdown.min()

# 风险等级
if max_drawdown > -0.3:
    risk_level = "高"
elif max_drawdown > -0.2:
    risk_level = "中"
else:
    risk_level = "低"

6. 量化分析师

数据接口

# 历史行情(用于回测)
df = ak.stock_zh_a_hist(symbol="600919", period="daily",
                         start_date="20240101", adjust="qfq")

# 指数数据(计算相关性)
df_index = ak.stock_zh_index_daily(symbol="sh000300")  # 沪深300

因子计算

# 动量因子(过去20日收益率)
momentum = (df['收盘'].iloc[-1] / df['收盘'].iloc[-20] - 1) * 100

# 波动率因子
volatility = df['收盘'].pct_change().std() * 100

# 换手率因子
turnover = df['换手率'].mean()

# 价值因子(需要估值数据)
value_score = 100 - pe_percentile  # PE分位越低越好

7. 情绪分析师

数据接口

# 个股资金流向
df = ak.stock_individual_fund_flow(stock="600919", market="sh")

# 主力资金净流入
main_flow = df['主力净流入-净额'].iloc[-1]

# 融资融券
df = ak.stock_margin_detail_szse(date="20260429")
# 或
df = ak.stock_margin_detail_sse(date="20260429")

# 北向资金
df = ak.stock_hsgt_north_net_flow_in_em()

情绪判断

  • 主力资金连续3日净流入:情绪偏多
  • 融资余额上升:杠杆资金入场
  • 北向资金净流入:外资看好

8. 估值分析师

数据接口

# 估值指标
df = ak.stock_a_lg_indicator(symbol="600919")

# pe_ttm: 滚动市盈率
# pb: 市净率
# ps_ttm: 市销率
# dv_ratio: 股息率
# total_mv: 总市值

# 历史PE数据(计算分位)
df_hist = ak.stock_a_pe_and_pb_analysis(symbol="600919")

估值分位计算

# PE分位
pe_current = df['pe_ttm'].iloc[-1]
pe_hist = df_hist['pe']  # 历史PE序列
pe_percentile = (pe_hist < pe_current).sum() / len(pe_hist) * 100

# 分位解读
if pe_percentile < 20:
    valuation = "严重低估"
elif pe_percentile < 40:
    valuation = "偏低"
elif pe_percentile < 60:
    valuation = "合理"
elif pe_percentile < 80:
    valuation = "偏高"
else:
    valuation = "严重高估"

🔄 决策流程

用户提问投资问题
        ↓
识别投资标的类型(股票/基金/ETF/可转债)
        ↓
获取实时行情(AKShare)
        ↓
获取财务/净值数据(AKShare)
        ↓
并行启动8个分析师
        ↓
各分析师独立分析并给出建议
        ↓
收集投票结果(✅建议/⚠️谨慎/❌不建议)
        ↓
按权重计算最终得分
        ↓
输出综合报告

💾 数据存储

watchlist.txt(自选股列表)

600919|江苏银行
000921|海信家电

reports/(分析报告存档)

2026-04-29_600919_江苏银行.txt
2026-04-29_000921_海信家电.txt

🔧 高级用法

批量分析

# 分析多只股票
for code in 600919 000921 600926; do
    python3 analyze_stock.py $code
done

自定义分析

from financial_data import FinancialDataFetcher
from analysts import run_all_analysts

# 获取财务数据
fetcher = FinancialDataFetcher()
financial = fetcher.get_all_data("600919")

# 运行分析师
results = run_all_analysts(quote, financial)

❓ 常见问题

Q1: AKShare 接口报错怎么办?

部分接口有频率限制,建议:

  • 添加请求间隔:time.sleep(1)
  • 使用缓存减少重复请求
  • 切换备用接口

Q2: 如何修改分析师权重?

编辑 scripts/config.py

ANALYST_WEIGHTS = {
    "宏观经济分析师": 1.0,
    "行业研究员": 1.5,
    # ...
}

Q3: 支持港股/美股吗?

AKShare 支持港股和美股数据,可在 financial_data.py 中扩展。

Q4: 支持哪些投资标的?

当前支持:

  • A股股票:完整财务分析
  • 公募基金:净值、持仓、业绩分析
  • ETF:指数跟踪、估值分析
  • 可转债:转股价值、溢价率分析

📊 基金分析

基金数据接口

import akshare as ak

# 基金基本信息
df = ak.fund_name_em()
fund_info = df[df['基金代码'] == '110022'].iloc[0]

# 基金净值
df = ak.fund_open_fund_daily_em(symbol="110022")
# 包含:单位净值、累计净值、日增长率

# 基金历史净值
df = ak.fund_open_fund_info_em(fund="110022", indicator="单位净值")

# 基金持仓
df = ak.fund_portfolio_em(fund="110022")
# 包含:股票持仓、债券持仓、行业分布

# 基金业绩排名
df = ak.fund_performance_open_fund_em(symbol="110022")

# 基金经理
df = ak.fund_manager_em(fund="110022")

基金分析维度

分析师基金分析维度
宏观经济市场环境、利率走势
行业研究基金持仓行业分布
基本面基金业绩、持仓股票质量
技术面净值走势、MA趋势
风险控制波动率、最大回撤
量化分析夏普比率、Alpha/Beta
情绪分析基金规模变化、申购赎回
估值分析基金估值、持仓股票PE

基金评分标准

指标优秀良好一般较差
年化收益>15%10-15%5-10%<5%
夏普比率>1.51.0-1.50.5-1.0<0.5
最大回撤<10%10-20%20-30%>30%
基金规模适中偏大/偏小过大/过小极端

📈 ETF分析

ETF数据接口

import akshare as ak

# ETF列表
df = ak.fund_etf_spot_em()

# ETF实时行情
df = ak.fund_etf_fund_daily_em(symbol="510300")

# ETF历史净值
df = ak.fund_etf_fund_info_em(fund="510300", indicator="单位净值")

# ETF持仓(指数ETF)
# 查询指数成分股
df = ak.index_stock_cons_weight_csindex(symbol="000300")  # 沪深300成分股

ETF分析维度

分析师ETF分析维度
宏观经济市场环境、政策导向
行业研究ETF跟踪指数/行业
基本面指数成分股质量
技术面ETF价格走势、MA趋势
风险控制波动率、跟踪误差
量化分析指数估值、PE分位
情绪分析ETF成交量、资金流向
估值分析指数PE/PB分位

ETF类型分类

ETF类型代码示例特点
宽基ETF510300(沪深300)跟踪宽基指数
行业ETF512690(酒ETF)跟踪行业指数
主题ETF515790(新能源)跟踪主题指数
跨境ETF513100(纳指ETF)跟踪海外指数
债券ETF511010(国债ETF)跟踪债券指数

💰 可转债分析

可转债数据接口

import akshare as ak

# 可转债列表
df = ak.bond_cb_jsl()  # 集思录数据

# 可转债实时行情
df = ak.bond_zh_hs_cov_spot()

# 可转债详情
df = ak.bond_cb_jsl_detail(symbol="113050")

# 可转债历史行情
df = ak.bond_zh_hs_cov_hist(symbol="113050")

可转债核心指标

指标说明计算公式
转股价转换为股票的价格固定值
转股价值100/转股价×正股价格动态变化
转股溢价率(转债价格-转股价值)/转股价值衡量估值
纯债价值债券部分价值到期收益率计算
纯债溢价率(转债价格-纯债价值)/纯债价值衡量股性
双低指标转股溢价率+纯债溢价率选债参考

可转债分析维度

分析师可转债分析维度
宏观经济利率环境、信用环境
行业研究正股所属行业
基本面正股财务质量、信用评级
技术面转债价格走势、正股走势
风险控制信用风险、赎回风险
量化分析双低指标、套利空间
情绪分析转债成交量、正股情绪
估值分析转股溢价率、纯债溢价率

可转债评分标准

指标优秀良好一般较差
转股溢价率<5%5-15%15-30%>30%
纯债溢价率<20%20-40%40-60%>60%
双低指标<120120-150150-180>180
信用评级AAAAA+AAAA-及以下
正股ROE>15%10-15%5-10%<5%


📚 参考资源


📜 版本变更历史

v1.1.1 (2026-04-29)

安全修复

  • 🔒 统一数据源为腾讯财经API(qt.gtimg.cn)
  • 🔒 移除所有其他域名
  • 🔒 移除 AKShare 依赖
  • 🔒 声明 background_tasks: false

数据说明

  • ⚠️ 部分财务指标为估算值(毛利率、净利率等)
  • ⚠️ 基金净值数据为估算值
  • ⚠️ 可转债转股溢价率为估算值

v1.1.0 (2026-04-29)

新增功能

  • ✅ 新增基金分析支持(analyze_fund.py
  • ✅ 新增ETF分析支持(analyze_etf.py
  • ✅ 新增可转债分析支持(analyze_bond.py
  • ✅ 基金净值、持仓、业绩分析
  • ✅ ETF指数跟踪、估值分析
  • ✅ 可转债转股价值、溢价率分析

文档更新

  • 📝 新增基金分析数据接口说明
  • 📝 新增ETF分析数据接口说明
  • 📝 新增可转债分析数据接口说明
  • 📝 新增各标的分析维度说明
  • 📝 新增评分标准说明

v1.0.3 (2026-04-29)

安全修复

  • 🔒 移除所有非白名单域名(雪球、百度、东方财富)
  • 🔒 仅使用腾讯财经域名:qt.gtimg.cn, web.ifzq.gtimg.cn
  • 🔒 所有网络请求使用 HTTPS
  • 🔒 SKILL.md 添加 https_only: true 声明

v1.0.2 (2026-04-29)

安全修复

  • 🔒 统一数据目录为 ~/.openclaw/workspace/investment/
  • 🔒 添加域名白名单
  • 🔒 安装脚本添加错误处理和虚拟环境提示

v1.0.1 (2026-04-29)

修复

  • 🐛 更新技能名称为英文

v1.0.0 (2026-04-29)

首发版本

  • ✅ 8位专业分析师并行研究机制
  • ✅ 加权投票决策系统
  • ✅ 多数据源行情监控
  • ✅ 真实财务数据获取
  • ✅ 完整投资报告生成
  • ✅ A股股票分析支持

<div align="center"> <strong>Boheng Investment Workflow</strong><br> 让投资决策更理性、更全面 📊🤖 </div>

Version tags

latestvk97cwf4ztr3ax6e4sa39ek1wxx85s0jf