用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/cyhzzz/ficc-analysis-skill --skill ficc-analysis-report命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | ficc-analysis-report |
| description | 招商银行FICC经营分析报告生成器,LLM驱动报告生成,支持18个业务团队,多维度分析(损益归因、RAROC/EVA、风险监控),引导式数据收集与数据库采集双模式,交互式确认与H5可视化 |
| dependency | {"python":["jinja2>=3.1.0","cx_Oracle>=8.3.0","pymysql>=1.0.0","psycopg2-binary>=2.9.0"]} |
jinja2>=3.1.0 # 模板引擎(报告生成)
cx_Oracle>=8.3.0 # Oracle数据库连接(模式B可选)
pymysql>=1.0.0 # MySQL数据库连接(模式B可选)
psycopg2-binary>=2.9.0 # PostgreSQL数据库连接(模式B可选)
由LLM处理:
识别业务团队
团队关键词对照表:
| 一级团队 | 二级团队 | 关键词 | 参考模板文件 |
|---|---|---|---|
| 自营投资 | 本币投资 | 本币投资、利率债投资、信用债投资 | proprietary/rmb_investment_reference.md |
| 自营投资 | 外币债券 | 外币债券、美元债、欧元债 | proprietary/rmb_investment_reference.md |
| 自营投资 | 信用与基金 | 信用与基金、基金投资 | proprietary/rmb_investment_reference.md |
| 债券交易 | 本币交易 | 本币交易、利率债交易、信用债交易 | fixed_income/rmb_trading_reference.md |
| 外汇交易 | OTC交易 | OTC交易、外汇OTC、代客外汇 | fx/otc_trading_reference.md |
| 外汇交易 | CFETS做市 | CFETS做市、做市、外汇做市 | fx/cfets_market_making_reference.md |
| 商品交易 | 贵金属 | 贵金属、黄金、白银 | commodities/precious_metal_reference.md |
| 销售交易 | 代客衍生 | 代客衍生、利率衍生、外汇衍生 | sales/derivatives_reference.md |
| 香港交易中心 | - | 香港交易中心、香港、跨境 | hk_center/hk_trading_reference.md |
确定分析周期
支持两种数据准备模式,根据用户实际情况自动选择:
触发条件:用户未提供任何原始数据文件,或数据不完整
执行流程:
确定业务团队和分析周期
LLM询问:
1. 请问需要分析哪个业务团队?
[可选:贵金属、外汇OTC、外汇做市、本币交易、本币投资、代客衍生...]
2. 请问分析周期是什么?
[格式:2025年Q1 / 2025年3月 / 2024年度]
按优先级收集必需数据
参考:references/data_collection_guide.md
第一优先级:核心指标(必需)
请提供以下核心指标:
1. 当期总收入是多少亿元?(如:0.8亿元)
2. 同比增长是多少?(如:15.2%)
3. 预算完成率是多少?(如:89%)
第二优先级:收入分解(必需)
根据业务类型,按references/data_collection_guide.md中对应业务的收入分解字段引导用户:
第三优先级:策略复盘(必需)
请描述本期主要交易策略的复盘情况:
策略1:
1. 策略名称:___(如:黄金第一波上涨行情)
2. 时间段:___(如:2025年1月-4月)
3. 市场背景:___
4. 价格走势:起始价格___,结束价格___
5. 持仓操作:最大持仓___,主要操作时点___
6. 收益对比:实际收益___亿元,若持续持有可获利___亿元
7. 主要问题:___
第四优先级:风险指标(推荐)
请提供以下风险指标:
1. VaR(95%置信度):___亿元
2. 最大回撤:___%
3. 对冲有效性:___%
第五优先级:历史数据(可选)
如需生成历史趋势对比,请提供近5年的数据:
年份 收入(亿元) 预算(亿元)
2020 ___ ___
2021 ___ ___
...
数据验证与确认
触发条件:用户具备内网数据库访问权限,需要批量采集数据
执行流程:
配置数据库连接凭证
首次使用时,调用skill_credentials工具配置凭证:
LLM询问:
检测到您需要使用数据库采集模式,请提供数据库连接信息:
- 数据库类型:Oracle / MySQL / PostgreSQL
- 主机地址:___
- 端口:___
- 数据库名/服务名:___
- 用户名:___
- 密码:___
凭证配置说明:
ficc_dbusername:passwordCOZE_FICC_DB_7599667191994351650执行数据采集脚本
# 调用 scripts/db_connector.py
python scripts/db_connector.py \
--db-type oracle \
--business-line 贵金属 \
--period "2025年Q1" \
--host 10.10.10.100 \
--port 1521 \
--service-name FICCDB \
--output data.json
数据格式转换
数据质量检查
用户发起请求
│
├─ 用户已提供完整数据?
│ │
│ ├─ 是 → 直接使用数据,进入Phase 3
│ │
│ └─ 否 → 询问数据来源
│ │
│ ├─ 用户有数据库权限?
│ │ │
│ │ ├─ 是 → 使用模式B(数据库采集)
│ │ │
│ │ └─ 否 → 使用模式A(引导式收集)
│ │
│ └─ 部分数据?
│ │
│ └─ 引导补充缺失字段
无论使用哪种模式,最终数据需符合references/data_schema.md的格式要求:
{
"business_line": "贵金属",
"period": "2025年Q1",
"current": {
"total_revenue": 0.8,
"yoy_growth": 15.2,
"budget_completion_rate": 89.0,
"revenue_breakdown": {
"单边": 0.5,
"价差": 0.2,
"错币种": 0.1
}
},
"trading_strategies": [...],
"risk_metrics": {...},
"historical": {...}
}
仅当需要复杂数学计算时调用Python脚本:
RAROC计算
# 调用 scripts/calculate_metrics.py
from calculate_metrics import MetricsCalculator
calculator = MetricsCalculator()
result = calculator.calculate_raroc({
'net_pnl': 1.2,
'tax': 0.1,
'personnel_cost': 0.05,
'business_cost': 0.03,
'provision': 0.02,
'capital': 0.8
})
# 返回:{'raroc': 12.5, 'risk_adjusted_pnl': 1.0, ...}
EVA计算
result = calculator.calculate_eva({
'revenue': 1.5,
'funding_cost': 0.3,
'operating_cost': 0.1,
'tax_rate': 0.25,
'capital': 0.8,
'wacc': 0.15
})
损益归因计算
# 债券损益归因(5维模型)
result = calculator.calculate_pnl_attribution({
'principal': 100,
'coupon_rate': 0.035,
'holding_days': 90,
'cost': 98,
'maturity': 3650,
'buy_price': 98,
'sell_price': 99,
'position': ,
: ,
: ,
: ,
: ,
:
})
RAROC分层目标参考:
由LLM根据模板生成完整报告,并提供用户确认:
读取业务参考模板
*_reference.md 模板文件templates/commodities/precious_metal_reference.md填充数据与撰写内容
关键内容撰写要点
数据展示要求
⭐输出Markdown报告供用户确认
必须执行的操作:
报告已生成,请确认内容是否符合预期:
[展示完整的Markdown报告内容]
---
请选择:
1. 确认满意,继续生成H5可视化页面
2. 需要调整,请说明修改要求
⭐交互式调整循环
如果用户选择"需要调整":
常见调整类型:
只有用户明确确认满意后,才能进入Phase 5!
用户确认满意后,由LLM生成H5可视化页面:
读取H5模板与规范
LLM生成H5页面
生成原则:
必须包含的元素:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ 业务线 }}{{ 分析周期 }}经营分析报告</title>
<style>
/* 招商银行品牌样式 */
:root {
--primary-color: #C7162E;
--secondary-color: ;
: ;
: ;
: ;
}
Step 1: 用户发起请求
用户:帮我生成贵金属团队2025年Q1的经营分析报告
Step 2: LLM检测无数据,启动引导式收集
LLM:好的,贵金属业务分析。请问分析周期是什么?
用户:2025年Q1
LLM:明白了。请提供以下核心指标:
1. 当期总收入是多少亿元?(如:0.8亿元)
2. 同比增长是多少?(如:15.2%)
3. 预算完成率是多少?(如:89%)
用户:总收入0.8亿,同比增长15.2%,预算完成率89%
LLM:收到。请提供收入来源分解:
- 黄金单边交易收入:___亿元
- 境内外价差收入:___亿元
- 其他收入:___亿元
用户:单边0.5亿,价差0.2亿,其他0.1亿
LLM:数据已记录。请描述本期主要交易策略的复盘情况:
1. 策略名称:___
2. 时间段:___
3. 市场背景:___
4. 价格走势:起始价格___,结束价格___
5. 收益对比:实际收益___亿元,若持续持有可获利___亿元
6. 主要问题:___
用户:策略是黄金第一波上涨,1月-4月,从2650涨到3500,
实际获利1.2亿,持续持有可获利2.8亿,减仓过早
LLM:数据收集完成,正在生成报告...
[生成Markdown报告]
Step 3: 展示报告并询问确认
LLM:报告已生成,请确认内容是否符合预期:
[完整Markdown报告]
---
请选择:
1. 确认满意,继续生成H5可视化页面
2. 需要调整,请说明修改要求
Step 1: 用户发起请求
用户:从数据库采集贵金属团队2025年Q1的经营数据,生成分析报告
Step 2: LLM检测需要数据库连接,配置凭证
LLM:检测到需要数据库连接,请提供数据库连接信息:
- 数据库类型:Oracle / MySQL / PostgreSQL
- 主机地址:___
- 端口:___
- 服务名/数据库名:___
- 用户名:___
- 密码:___
用户:Oracle,10.10.10.100,1521,FICCDB,ficc_user,xxx
LLM:正在配置数据库凭证...
[调用skill_credentials工具配置凭证]
凭证配置成功!
Step 3: 执行数据库采集
LLM:正在连接数据库并采集数据...
[执行 scripts/db_connector.py]
连接Oracle数据库成功!
正在采集贵金属业务2025年Q1数据...
数据采集完成,已保存到data.json
Step 4: 生成报告
LLM:数据采集完成,正在生成报告...
[生成Markdown报告]
Step 1: 用户提供部分数据
用户:帮我生成贵金属团队2025年Q1的经营分析报告
- 总收入:0.8亿元
- 同比增长:15.2%
Step 2: LLM检测数据不完整,引导补充
LLM:已记录核心指标。还需要以下数据:
1. 预算完成率是多少?
2. 收入来源分解:
- 黄金单边交易收入:___亿元
- 境内外价差收入:___亿元
- 其他收入:___亿元
3. 交易策略复盘(至少1个)
用户:预算完成率89%,单边0.5亿,价差0.2亿,其他0.1亿
策略是黄金上涨行情,实际1.2亿,模拟2.8亿
LLM:数据已收集完整,正在生成报告...
Step 1: 用户发起请求
用户:帮我生成贵金属团队2025年Q1的经营分析报告,数据如下:
- 总收入:0.8亿元
- 同比增长:15.2%
- 预算完成率:89%
- 黄金单边收入:0.5亿元
- 境内外价差收入:0.2亿元
- 黄金第一波上涨行情:1月-4月,从2650涨到3500美元/盎司,
实际获利1.2亿元,但减仓过早,若持续持有可获利2.8亿元
Step 2: LLM识别业务团队
LLM:识别业务团队:贵金属 → 选择模板:commodities/precious_metal.md.jinja2
数据已完整,正在生成报告...
本技能已进行V2.0优化,主要改进:
以下指标由LLM自动计算,无需用户输入:
| 指标 | 计算公式 | 示例 |
|---|---|---|
| 价格涨幅 | (结束价格 - 起始价格) / 起始价格 | (3500-2650)/2650 = 32.1% |
| 收益差距金额 | 持续持有收益 - 实际收益 | 2.8-1.2 = 1.6亿元 |
| 收益差距占比 | 收益差距金额 / 持续持有收益 | 1.6/2.8 = 57.1% |
| 收入占比 | 单项收入 / 总收入 | 0.5/0.8 = 62.5% |
实现方式: LLM在数据收集过程中实时计算并展示,自动填充到报告中。
位置:templates/position_timeline_template.md
功能: 引导用户提供详细的持仓操作时间线,包含至少3-5个关键时间点。
使用方式:
LLM引导:
收到策略信息。为了进行深度复盘,请补充以下详细信息:
1. 市场背景是什么?(如:美联储降息预期、地缘政治风险等)
2. 请提供持仓操作时间线(至少3个关键时间点):
| 时间点 | 持仓变化 | 价格 | 说明 |
|-------|---------|------|------|
| 1月初 | 建仓___万盎司 | 2650 | |
| 2月 | ___ | ___ | |
| 4月初 | ___ | 3500 | |
3. 主要问题有哪些?(如:减仓过早、持仓过小等)
模板特点:
在生成报告前,LLM会进行以下验证:
| 验证点 | 验证规则 | 处理方式 |
|---|---|---|
| 收入分解合计 | 单边+价差+其他 = 总收入 | 如误差>±5%,要求重新输入 |
| 收益对比合理性 | 持续持有收益 > 实际收益 | 如不满足,提醒用户确认 |
| 价格走势合理性 | 起始价格 < 结束价格(上涨行情) | 如不符,提醒用户确认 |
| 历史数据完整性 | 年份、收入、预算列表长度一致 | 如不一致,提醒补充 |
效果: 在生成报告前确保数据质量,避免生成不准确的报告。
| 维度 | 优化前(V1.0) | 优化后(V2.0) | 提升幅度 |
|---|---|---|---|
| 数据收集方式 | 一次性要求所有数据 | 分阶段逐个收集 | ✓ |
| 数据完整性依赖度 | 60%依赖用户提供 | 80%可自动推断/计算 | +33% |
| 策略复盘深度 | 基础信息(名称、时间段) | 详细时间线+关键问题 | ✓✓✓ |
| 数据验证 | 事后验证,标注缺失 | 事前验证,主动询问补充 | ✓✓ |
| 用户体验 | 信息过载,压力大 | 循序渐进,轻松提供 | ✓✓✓ |
| 报告质量 | 受数据限制较大 | 数据完整度大幅提升 | ✓✓ |
详细的优化内容、测试用例和后续优化方向请参考: OPTIMIZATION_LOG.md
templates/*_reference.md 作为报告结构参考对冲有效性计算
result = calculator.calculate_hedge_effectiveness({
'hedged_pnl': 0.5,
'unhedged_pnl': 2.8
})
# 返回:{'hedge_effectiveness': 82.14, 'meets_requirement': True}
H5页面结构与报告章节对应
H5页面结构必须与Phase 4的Markdown报告章节一一对应:
| Markdown章节 | H5页面结构 | 组件类型 | 数据来源 |
|---|---|---|---|
| 封面标题 | slide--cover | 封面组件 | business_line, period |
| 一、历史业务情况回顾 | slide--content | bar-chart + card-grid | historical |
| 二、当期经营情况分析 | slide--content | data-grid + card-grid | current |
| 三、交易策略复盘 | slide--content | timeline | trading_strategies |
| 四、收益评估 | slide--content | comparison-card | profit_data |
| 五、风险管理情况 | slide--content | risk-grid | risk_metrics |
| 六、核心观点提炼 | slide--content | conclusions-list | 核心观点 |
完整H5页面结构模板:
<body>
<!-- ===== 封面页 ===== -->
<!-- 对应:报告标题 -->
<section class="slide slide--cover">
<h1>{{ 业务线 }}经营分析报告</h1>
<h2>{{ 分析周期 }} | 经营情况评估</h2>
<div class="divider"></div>
<div class="meta">
报告部门:招商银行资金营运中心<br>
报告时间:{{ 报告日期 }}
</div>
</section>
<!-- ===== 章节一:历史业务情况回顾 ===== -->
<!-- 对应Markdown:## 一、历史业务情况回顾 -->
<section class="slide slide--content">
<h1 class="title">一、历史业务情况回顾</h1>
<div class="section-desc">{{ 历史情况概述 }}</div>
<!-- 历年收入对比柱状图 -->
<div class="bar-chart">
<!-- 数据来源:historical.years, historical.revenues -->
<div class="bar-item">
<div class="bar" style="height: {{ 高度 }}%"></div>
<div class="year">{{ 年份 }}</div>
<div class="value">{{ 收入 }}亿</div>
</div>
</div>
<!-- 预算完成情况卡片 -->
<div class="card-grid">
<div class="content-card">
<h3>历年收入趋势</h3>
<p>{{ 收入趋势描述 }}</p>
</div>
<div class="content-card">
<h3>预算执行情况</h3>
<p>{{ 预算完成描述 }}</p>
</div>
</div>
</section>
<!-- ===== 章节二:当期经营情况分析 ===== -->
<!-- 对应Markdown:## 二、当期经营情况分析 -->
<section class="slide slide--content">
<h1 class="title">二、{{ 分析周期 }}经营情况分析</h1>
<div class="section-desc">{{ 当期情况概述 }}</div>
<!-- 核心指标卡片 -->
<div class="data-grid">
<!-- 数据来源:current.total_revenue, current.yoy_growth, current.budget_completion_rate -->
<div class="data-card">
<div class="value">{{ 总收入 }}</div>
<div class="label">营业收入(亿元)</div>
<div class="trend up">↑ {{ 同比增长 }}%</div>
</div>
<div class="data-card">
<div class="value">{{ 预算完成率 }}%</div>
<div class="label">预算完成率</div>
</div>
<div class="data-card">
<div class="value">{{ RAROC }}%</div>
<div class="label">RAROC</div>
</div>
</div>
<!-- 收入构成分析 -->
<div class="card-grid">
<div class="content-card">
<h3>收入构成</h3>
<!-- 数据来源:current.revenue_breakdown -->
<ul>
<li>{{ 品种1 }}:{{ 金额1 }}亿元({{ 占比1 }}%)</li>
<li>{{ 品种2 }}:{{ 金额2 }}亿元({{ 占比2 }}%)</li>
</ul>
</div>
<div class="content-card">
<h3>市场基准对比</h3>
<ul>
<li>本行收益率:{{ 本行收益率 }}%</li>
<li>市场基准收益率:{{ 市场基准 }}%</li>
</ul>
</div>
</div>
</section>
<!-- ===== 章节三:交易策略复盘 ===== -->
<!-- 对应Markdown:## 三、交易策略复盘 -->
<section class="slide slide--content">
<h1 class="title">三、交易策略复盘</h1>
<div class="section-desc">{{ 策略整体概述 }}</div>
<!-- 策略时间轴 -->
<!-- 数据来源:trading_strategies数组 -->
<div class="timeline">
<div class="timeline-item">
<div class="timeline-date">{{ 策略时间段 }}</div>
<div class="timeline-title">{{ 策略名称 }}</div>
<div class="timeline-content">
<p><strong>市场背景:</strong>{{ 市场背景 }}</p>
<p><strong>价格走势:</strong>从{{ 起始价格 }}涨到{{ 结束价格 }}</p>
<p><strong>持仓操作:</strong>{{ 持仓操作描述 }}</p>
</div>
</div>
</div>
</section>
<!-- ===== 章节四:收益评估 ===== -->
<!-- 对应Markdown:## 四、收益评估 -->
<section class="slide slide--content">
<h1 class="title">四、收益评估</h1>
<div class="section-desc">{{ 收益评估概述 }}</div>
<!-- 实际vs模拟对比卡片 -->
<!-- 数据来源:trading_strategies[].profit_data -->
<div class="comparison-grid">
<div class="comparison-card">
<h3>{{ 策略名称 }} - 收益对比</h3>
<div class="comparison-row">
<div class="label">实际收益</div>
<div class="value actual">{{ 实际收益 }}亿元</div>
</div>
<div class="comparison-row">
<div class="label">模拟收益(持续持有)</div>
<div class="value simulated">{{ 模拟收益 }}亿元</div>
</div>
<div class="comparison-row highlight">
<div class="label">收益差距</div>
<div class="value gap">{{ 收益差距 }}亿元({{ 收益差距占比 }}%)</div>
</div>
<div class="issues">
<strong>关键问题:</strong>
<ul>
<li>✗ {{ 问题1 }}</li>
<li>✗ {{ 问题2 }}</li>
</ul>
</div>
</div>
</div>
</section>
<!-- ===== 章节五:风险管理情况 ===== -->
<!-- 对应Markdown:## 五、风险管理情况 -->
<section class="slide slide--content">
<h1 class="title">五、风险管理情况</h1>
<div class="section-desc">{{ 风险管理概述 }}</div>
<!-- 风险指标网格 -->
<!-- 数据来源:risk_metrics -->
<div class="risk-grid">
<div class="risk-card">
<div class="label">VaR(95%置信度)</div>
<div class="value">{{ VaR }}亿</div>
<div class="status normal">风险可控</div>
</div>
<div class="risk-card">
<div class="label">最大回撤</div>
<div class="value">{{ 最大回撤 }}%</div>
<div class="status normal">正常范围</div>
</div>
<div class="risk-card">
<div class="label">对冲有效性</div>
<div class="value">{{ 对冲有效性 }}%</div>
<div class="status normal">达标(≥80%)</div>
</div>
<div class="risk-card">
<div class="label">敞口使用率</div>
<div class="value">{{ 敞口使用率 }}%</div>
<div class="status normal">合理水平</div>
</div>
</div>
</section>
<!-- ===== 章节六:核心观点提炼 ===== -->
<!-- 对应Markdown:## 六、核心观点提炼 -->
<section class="slide slide--content">
<h1 class="title">六、核心观点与建议</h1>
<div class="section-desc">{{ 核心观点概述 }}</div>
<!-- 核心观点列表 -->
<ul class="conclusions-list">
<li data-index="1">{{ 核心观点1 }}</li>
<li data-index="2">{{ 核心观点2 }}</li>
<li data-index="3">{{ 核心观点3 }}</li>
</ul>
<!-- 改进建议 -->
<div class="suggestions">
<h3>改进建议</h3>
<ul>
<li>{{ 改进建议1 }}</li>
<li>{{ 改进建议2 }}</li>
</ul>
</div>
</section>
</body>
<!-- 核心观点页 - 使用conclusions-list组件 -->
<section class="slide slide--content">
<h1 class="title">核心观点与建议</h1>
<ul class="conclusions-list">
<li data-index="1">{{ 核心观点1 }}</li>
<li data-index="2">{{ 核心观点2 }}</li>
</ul>
</section>
```
图表生成方式
使用纯CSS/SVG实现图表,不依赖第三方库:
输出H5文件
{{ 业务线 }}_{{ 分析周期 }}_经营分析报告.html