No description
- Python 100%
| .stdd | ||
| adapters | ||
| archive | ||
| changes | ||
| references | ||
| scripts | ||
| specs | ||
| tests | ||
| .gitignore | ||
| AGENTS.md | ||
| generate_report.py | ||
| README.md | ||
| SKILL.md | ||
| STDD.md | ||
| VERSION.json | ||
FOF Portfolio Report — skill-portfolio-report
一、SPR 技能操作命令
对话触发
在 Hermes 对话中输入以下任意关键词即可触发 SPR 技能:
SPR · SPR 生成报告 · FOF 报告 · 生成 FOF 报告 · 策略对比 · 组合回测 · portfolio report
CLI 命令
# 查看版本
spr version
# 更新 Skill(从 dev 分支安装到本地)
spr update
# 通过 zip URL 生成报告
spr https://git.atibm.com/at/skill-portfolio-report/raw/branch/main/data.zip
# 快捷入口
python3 /opt/data/home/bin/spr <url>
脚本命令(generate_report.py)
# 指定目录
python generate_report.py --input-dir /path/to/data
# 指定 zip 包(自动识别 .zip 后缀)
python generate_report.py --input-dir data.zip
# 自动扫描(搜索 input/ → data/ → ./)
python generate_report.py --auto-detect
# 自定义输出路径
python generate_report.py --input-dir ./data/ --output ./report.html
# 仅提取数据,不生成 HTML(供 AI 主创路线使用)
python generate_report.py --input-dir ./data/ --data-only
二、SKILL 功能描述
核心原则:AI 是主创,generate_report.py 是辅助工具。
本 Skill 赋能 AI 从 FOF 组合回测数据(评价指标 + 日频净值)生成面向投资人的 ECharts 交互式 HTML 报告。AI 负责完整的分析、叙事、图表渲染和 insight 撰写。
工作流
用户触发 Skill
│
▼
Step 0:输入整理衔接 → 审视目录 → 解读命名 → 确认CSV → 选择路线
│
▼
Step 1:理解数据 → 目录结构 → 策略含义 → CSV格式 → 全链路解析
│
▼
Step 2:分析→叙事 → 发现信号 → 确定叙事 → 组织结论
│
▼
Step 3:输出表达 → 定调性 → 选布局 → 写洞察 → 渲染图表
│
▼
Step 4:交付 → HTML + 关键结论说明
AI 与脚本分工
| 工作 | AI | 脚本 |
|---|---|---|
| 确定输入路径、审视目录 | ✅ 主责 | — |
| 提取 CSV 数据 | — | ✅ --data-only |
| 发现数据模式、决定叙事 | ✅ 核心价值 | ❌ |
| 渲染 ECharts 图表 | ✅ 默认(手写代码) | ✅ 辅助(模板渲染) |
| 撰写投资人洞察 | ✅ 核心价值 | ❌ |
| 复核输出质量 | ✅ 必须 | — |
输出
- 单文件自包含 HTML(ECharts CDN)
- 深色金融风主题(#0a0e17 背景)
- 核心指标对比图 + 净值走势 + 分组雷达图 + 投资人洞察
- 文件名格式:
fof_portfolio_summary_YYYYMMDD_HHMMSS.html
三、SKILL 项目说明
仓库
git@git.atibm.com:at/skill-portfolio-report.git
| 分支 | 用途 |
|---|---|
main |
稳定版 |
dev |
长期开发分支 |
iter/* |
功能迭代分支 |
tag vX.Y.Z |
发布版本 |
文件结构
skill-portfolio-report/
├── SKILL.md ← AI 工作流入口(Hermes skill load)
├── README.md ← 本文件(人工手册)
├── generate_report.py ← 数据提取 + ECharts 渲染脚本
├── adapters/ ← CSV 适配器系统
├── references/
│ ├── data-patterns.md ← 代码模式参考
│ └── data-preparation.md ← 测试数据准备指南
├── changes/ ← STDD 变更历史
├── input/ ← 测试数据(gitignored)
├── output/ ← 生成报告(gitignored)
└── scripts/
└── spr ← SPR CLI 入口
安装(Hermes 环境)
# 方式一:从 Git 加载
skill_manage create --name spr --repo git@git.atibm.com:at/skill-portfolio-report.git
# 方式二:从本地 dev 分支拷贝
cp -r SKILL.md /opt/data/skills/financial-services/spr/
cp -r adapters/ /opt/data/skills/financial-services/spr/
cp generate_report.py /opt/data/skills/financial-services/spr/
# CLI 入口
cp scripts/spr /opt/data/home/bin/
卸载
rm -rf /opt/data/skills/financial-services/spr/
输入数据
支持的 CSV 类型(适配器自动识别):
| 适配器 | 自动检测特征 | 典型 CSV |
|---|---|---|
| 委托回测指标 | 列名含年化收益率/回撤/波动率/卡玛/夏普 ≥3 个 | 评价指标表 |
| 委托净值 | 首列日期 + net/净值列 | 资金结算日频净值 |
| 标的净值 | 首列日期,列数 2~50 | 资产日频净值明细 |
| 全市场基金净值 | 首列日期,列数 >50 | 第三方基金池大宽表 |
| 基金产品画像 | 列名含产品名称/管理人/一级分组 | 基金产品信息表 |
| FOF2026 回测 | 目录名匹配 HHMMSS_滤XXX_评XXX_N只_选XXX_类型 |
评价指标+资金结算 |
目录结构:
input/
├── {场景名}/
│ ├── *评价指标.csv ← 核心:4策略×5指标
│ ├── *资金结算_*.csv ← 核心:日频净值序列
│ ├── *资产.csv ← 可选:标的独立净值
│ ├── *资产信息.csv ← 可选
│ ├── *产品要素.json ← 可选:回测参数
│ └── *管理人.json ← 可选:管理人参数
└── ...
4 种策略:
| 策略 | 说明 | 特点 |
|---|---|---|
| 只用组合算法 | 纯算法优化组合 | 风险调整后收益最优 |
| 只用风筹 | 仅风筹管理 | 风险中等 |
| 满仓等权 | 满仓等权配置(基准) | 收益最高,风险也最高 |
| 管理人003_FOF | 管理人实际策略 | 风控优先,回撤控制最佳 |
CSV 适配器系统
脚本内置 6 种 CSV 适配器,自动识别数据类型并匹配解析规则,无需关注文件名格式。检测策略:列名签名(主)+ 文件名启发(辅)+ 值域确认(辅)。
新增适配器:在 adapters/ 下创建 *_adapter.py,实现 detect() / parse() / model() 三个方法,注册即可。
脚本详解
generate_report.py 的职责:
- 扫描输入目录 → 递归发现所有 CSV
- 适配器系统自动匹配类型并解析
- 输出 HTML 框架(脚本辅助路线)或原始数据 JSON(AI 主创路线
--data-only)
脚本不负责发现数据模式、不写投资人洞察、不做叙事决策——这些是 AI 的工作。
相关
- 原项目:
hermes-oracle-at→ 独立为skill-portfolio-report - 初代 SP 算法项目:
kc-portfolio-algo-v251210 - Hermes 部署:容器内 spr 安装于
/opt/data/skills/financial-services/spr/ - 输出交付:Telegram 附件(主题 #7459)