Install
openclaw skills install jy-portfolio-calculation模拟组合试算技能 - 基于恒生聚源 MCP 服务的投资组合构建、调整、成分券查询、交易记录查询及绩效指标获取工具。 **Triggers when user mentions:** - 组合构建:"模拟组合","建仓","创建组合","组合 ID","资产配置","portfolio" - 组合调整:"调仓","调整权重","加仓","减仓","再平衡","rebalance" - 成分券查询:"持仓","成分券","组合持仓","权重","持仓明细","position" - 交易记录:"交易流水","交易记录","买卖记录","分红","配股","trade flow" - 绩效指标:"收益率","年化收益","最大回撤","夏普比率","组合表现","绩效","indicator" 使用场景:当用户需要构建模拟投资组合、调整现有组合配置、查询组合持仓明细、查看交易记录或获取组合绩效指标时触发本技能。 Use case: Triggered when users need to build a simulated investment portfolio, adjust existing portfolio allocations, query portfolio positions, view trade records, or obtain portfolio performance indicators. 所有结果以结构化表格形式输出,确保数据完整性和可溯源性。
openclaw skills install jy-portfolio-calculation基于恒生聚源 (jy-financedata-api) MCP 服务的模拟投资组合试算工具,支持组合构建、调仓、持仓查询、交易流水查询及绩效指标获取。
本技能支持以下功能:
| 功能 | 说明 | 工具 |
|---|---|---|
| 模拟组合构建 | 创建新的模拟投资组合,生成组合 ID | PortfolioBuild |
| 模拟组合调整 | 对已有组合进行权重调整和再平衡 | PortfolioRebalance |
| 成分券查询 | 查询组合在指定日期的持仓明细 | PortfolioPositionQuery |
| 交易记录查询 | 查询组合的交易流水明细 | TradeFlowQuery |
| 绩效指标查询 | 获取组合的收益率、回撤、夏普比率等指标 | PortfolioIndicatorQuery |
| 报告生成 | 生成组合收益报告(Markdown/PDF 格式) | scripts/generate_portfolio_report_*.py |
查询需要具备的要素:
查询写法:
query 参数# 新建组合
mcporter call jy-financedata-api.PortfolioBuild query='2026-03-20 建仓,买入贵州茅台 600519 1000 股,权重 50%,中国平安 601318 2000 股,权重 50%,业绩基准沪深 300'
# 调整组合
mcporter call jy-financedata-api.PortfolioRebalance query='组合 0439d6e585034f46846d0a70b5a967e0 在 2026-03-21 调仓,贵州茅台权重 30%,中国平安权重 70%'
# 查询持仓
mcporter call jy-financedata-api.PortfolioPositionQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的持仓'
# 查询交易流水
mcporter call jy-financedata-api.TradeFlowQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的交易流水'
# 查询绩效指标
mcporter call jy-financedata-api.PortfolioIndicatorQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的绩效指标'
每次使用本技能前,必须先检查 mcporter 安装和 MCP 服务配置状态!
mcporter --version
如未安装,按以下流程安装:
# 1. 通过 npm 全局安装
npm install -g mcporter
# 2. 验证安装
mcporter --version
# 列出所有已配置的 MCP 服务
mcporter list
预期输出(必须包含以下服务):
如服务未配置,需要获取 JY_API_KEY 并配置:
获取 JY_API_KEY:向恒生聚源申请 JY_API_KEY,通过邮箱申请(首次配置需提供,配置一次即可)
JY_API_KEY 申请路径:
向恒生聚源官方邮箱发送邮件申请签发 数据地图 JY_API_KEY,用于接口鉴权
申请通过后,恒生聚源将默认发送【工具版和接口版】KEY
另外,【Skill】包可通过 https://clawhub.ai/ 自行选择下载,若需要我们通过邮件提供【Skill】,亦可在邮件中注明
申请邮箱: mailto:datamap@gildata.com
邮件标题: 数据地图 KEY 申请-XX 公司 - 申请人姓名
正文模板:
配置 MCP 服务:
# 配置 jy-financedata-api 服务
mcporter config add jy-financedata-api --url "https://api.gildata.com/mcp-servers/aidata-assistant-srv-api?token=你的 JY_API_KEY"
mcporter list
# 基础键值对传参
mcporter call 服务名称。工具 参数=值
# 示例,注意:所有服务工具的入参均为 query
mcporter call jy-financedata-api.PortfolioBuild query='2026-03-20 建仓,买入贵州茅台 600519 1000 股,权重 50%'
mcporter 配置文件路径:
C:\Users\你的用户名\config\mcporter.json/root/config/mcporter.jsonOpenClaw 配置文件路径:
C:\Users\你的用户名\.openclaw\openclaw.json~/.openclaw/openclaw.json编辑 openclaw.json,在 skills 部分添加 mcporter 配置:
{
"skills": {
"entries": {
"mcporter": {
"enabled": true,
"env": {
"MCPORTER_CONFIG": "C:\\Users\\你的用户名\\config\\mcporter.json"
}
}
}
}
}
重启 OpenClaw 使配置生效:
openclaw gateway restart
流程中的工具调用能够并发调用尽量并发调用提速,但建仓/调仓与查询操作必须串行执行。
根据用户需求调用 PortfolioBuild(新建组合)或 PortfolioRebalance(调整组合)。
注意事项:
建仓/调仓完成后,调用 PortfolioPositionQuery 查询最新持仓。
调用 TradeFlowQuery 查询组合交易记录。
调用 PortfolioIndicatorQuery 获取组合绩效指标。
执行顺序限制:
建仓/调仓 → (等待完成) → 成分券查询/交易记录查询/指标查询 (串行)
用户: "我想创建一个模拟组合,2026-03-20 建仓,买入贵州茅台 1000 股,权重 50%,中国平安 2000 股,权重 50%,业绩基准沪深 300"
# Step 1: 调用 PortfolioBuild 建仓
mcporter call jy-financedata-api.PortfolioBuild query='2026-03-20 建仓,买入贵州茅台 600519 1000 股,权重 50%,中国平安 601318 2000 股,权重 50%,业绩基准沪深 300'
# 返回:组合 ID (如 0439d6e585034f46846d0a70b5a967e0)
# Step 2: 串行查询持仓
mcporter call jy-financedata-api.PortfolioPositionQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的持仓'
# Step 3: 串行查询交易流水
mcporter call jy-financedata-api.TradeFlowQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的交易流水'
# Step 4: 串行查询绩效指标
mcporter call jy-financedata-api.PortfolioIndicatorQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的绩效指标'
用户: "把组合 0439d6e585034f46846d0a70b5a967e0 调仓一下,2026-03-21 调仓,贵州茅台权重降到 30%,中国平安权重升到 70%"
# Step 1: 调用 PortfolioRebalance 调仓
mcporter call jy-financedata-api.PortfolioRebalance query='组合 0439d6e585034f46846d0a70b5a967e0 在 2026-03-21 调仓,贵州茅台权重 30%,中国平安权重 70%'
# Step 2: 串行查询新持仓
mcporter call jy-financedata-api.PortfolioPositionQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的持仓'
# Step 3: 串行查询新交易流水
mcporter call jy-financedata-api.TradeFlowQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的交易流水'
用户: "查一下组合 0439d6e585034f46846d0a70b5a967e0 的持仓情况"
# 直接查询持仓 (无需先建仓/调仓)
mcporter call jy-financedata-api.PortfolioPositionQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的持仓'
用户: "这个组合的收益怎么样?"
# 查询绩效指标
mcporter call jy-financedata-api.PortfolioIndicatorQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的绩效指标'
用户: "看看这个组合的交易记录"
# 查询交易流水
mcporter call jy-financedata-api.TradeFlowQuery query='查询组合 0439d6e585034f46846d0a70b5a967e0 的交易流水'
用户: "帮我把组合 8210d5eaf0bc4a0aba64be988c467e9b 的收益情况生成报告"
# 1. 先查询绩效指标、持仓数据、调仓历史
mcporter call jy-financedata-api.PortfolioIndicatorQuery query='查询组合 8210d5eaf0bc4a0aba64be988c467e9b 的绩效指标'
mcporter call jy-financedata-api.PortfolioPositionQuery query='查询组合 8210d5eaf0bc4a0aba64be988c467e9b 的持仓'
mcporter call jy-financedata-api.TradeFlowQuery query='查询组合 8210d5eaf0bc4a0aba64be988c467e9b 的交易流水'
# 2. 生成 Markdown 报告(推荐,无依赖)
python3 scripts/generate_portfolio_report_md.py
# 或生成 PDF 报告(需要 fpdf2)
pip install fpdf2
python3 scripts/generate_portfolio_report.py
输出:
sample/模拟组合收益报告_8210d5ea.md(推荐,格式清晰,无依赖)sample/模拟组合收益报告_8210d5ea.pdf(需要 fpdf2,支持打印)依赖安装:
# Markdown 报告:无需额外依赖
# PDF 报告:
pip install fpdf2
所有工具都使用自然语言字符串作为 query 参数:
mcporter call jy-financedata-api.<工具名> query='<自然语言描述>'
输入参数: query (自然语言字符串)
必需信息:
示例:
'2026-03-20 建仓,买入贵州茅台 600519 1000 股,权重 50%,中国平安 601318 2000 股,权重 50%,业绩基准沪深 300'
输出: 组合 ID (32 位十六进制,如 0439d6e585034f46846d0a70b5a967e0)
输入参数: query (自然语言字符串)
必需信息:
示例:
'组合 0439d6e585034f46846d0a70b5a967e0 在 2026-03-21 调仓,贵州茅台权重 30%,中国平安权重 70%'
输出: 调仓确认信息 (成功/失败)
输入参数: query (自然语言字符串)
必需信息: 组合 ID
输出字段: secuCode, secuName, realPosition, quantity, price, totalAssets, costPrice, costProfit
输入参数: query (自然语言字符串)
必需信息: 组合 ID
输出字段: transactionDate, secuCode, secuName, transactionTypeDesc, changeQuantity, transactionPrice, changeAmount
输入参数: query (自然语言字符串)
必需信息: 组合 ID
输出字段: totalAssets, netAssets, nv, dailyProfitRate, totalReturn, maxRetreat, toNowSharpe, weekReturn, monthReturn, yearReturn, tonowReReturn
所有查询结果必须以结构化表格形式输出,确保数据完整性和易读性。详细输出格式示例请参考 references/ 目录下各工具文档。
组合持仓查询、交易流水查询、组合指标查询工具不得与组合建仓或调仓工具并行执行。
原因:并行执行无法获取当轮调仓结果数据。
正确流程:
建仓/调仓 → (等待完成) → 成分券查询/交易记录查询/指标查询 (串行)
禁止输出以下金融数据供应商相关词语:
建仓/调仓日期不能是当天或未来日期,必须使用历史日期。
处理策略:
示例:
用户:"今天调仓,等权配置"
→ 检测今天是 2026-03-24,不允许使用
→ 自动使用 2026-03-23(上一交易日)
→ 提醒用户:"⚠️ 系统不允许使用当天日期进行调仓,已自动使用 2026-03-23(上一交易日)的收盘价执行"
服务端限制说明: 恒生聚源模拟组合服务的服务端代码强制校验:调仓日期必须早于当天,否则会抛出异常:
"导入文件中不能填写当天以及未来日期"
权重总和必须等于 1 (100%):
示例:
用户:"建仓,贵州茅台权重 50%,中国平安权重 40%"
→ 自动补充现金 10%
→ 实际调用:"2026-03-20 建仓,买入贵州茅台 600519 权重 50%,中国平安 601318 权重 40%,现金 10%"
~/openclaw/workspace/skills/jy-portfolio-calculation/
├── SKILL.md # 本技能主文档
├── references/ # 工具详细文档
│ ├── portfolio_build.md # 组合建仓工具说明
│ ├── portfolio_rebalance.md # 组合调仓工具说明
│ ├── position_query.md # 成分券查询工具说明
│ ├── trade_flow_query.md # 交易流水查询工具说明
│ └── indicator_query.md # 组合指标查询工具说明
└── scripts/ # 辅助脚本
├── generate_portfolio_report_md.py # Markdown 收益报告生成器(推荐,无依赖)
└── generate_portfolio_report.py # PDF 收益报告生成器(需要 fpdf2)
功能: 生成 Markdown 格式的模拟组合收益报告
依赖: 无(Python 标准库)
用法:
python3 scripts/generate_portfolio_report_md.py
输出: sample/模拟组合收益报告_<组合 ID>.md
特点:
功能: 生成 PDF 格式的模拟组合收益报告
依赖: pip install fpdf2
用法:
pip install fpdf2
python3 scripts/generate_portfolio_report.py
输出: sample/模拟组合收益报告_<组合 ID>.pdf
特点:
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
| 导入文件中不能填写当天以及未来日期 | 日期是当天或未来 | 使用历史日期 (至少昨天) |
| 组合 ID 不存在 | 组合 ID 错误 | 检查组合 ID 格式 (32 位十六进制) |
| 权重总和不等于 1 | 用户输入的权重有误 | 提醒用户调整权重或自动补充现金 |
| 查询超时 | 服务响应延迟 | 重试查询,或检查网络连接 |