中文投资组合管理技能:同步持仓,基于持仓重新计算组合结果,生成当日快照/历史记录。适用于用户提供截图、CSV、券商导出或类似持仓的JSON,需要更新持仓、刷新组合结果、检查警告并落盘快照的场景。
fin-ai是一项面向实际任务的技能,主要用于当用户要做下面这些事时使用这个 skill:;同步或更新持仓;
第一次为用户初始化投资组合数据目录;首次使用引导;如果这是用户第一次使用这个 skill,优先用自然语言确认一件事:;使用默认数据目录;或者使用用户提供的自定义目录;默认情况下,优先推荐默认数。
它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
当用户要做下面这些事时使用这个 skill:
如果这是用户第一次使用这个 skill,优先用自然语言确认一件事:
默认情况下,优先推荐默认数据目录。 只有用户已经有现成的数据目录,或者明确希望自己管理路径时,再使用自定义目录。
如果用户没有可用数据目录,就先初始化目录,再继续后续 workflow。
凡是会改动真实数据目录的操作,默认都先预演:
holdings / snapshots / history.csv 的动作预演时:
正式写入:
第一次使用时,先确认用户希望:
默认数据目录在:
~/.agents/data/portfolio-workflows/
这个默认路径会记录在用户配置文件里:
~/.agents/data/portfolio-workflows/settings.json
后续如果用户没有显式提供路径,就直接用配置文件里的默认目录。
除非用户明确要求,否则不要主动向用户解释脚本路径、repo 结构或内部文件布局。 对用户只需要表达:
同步持仓时,默认按“账户组替换”理解。 只有用户明确说“整份覆盖今天持仓”时,才应该走整份覆盖模式。
holdings 是真源snapshot 是派生结果,不是真源Agent 可主动调用外部 CLI(如 ticker)获取行情,再注入到分析流程:
ticker --config print --format json portfolio_analysis.py --market-context /path/to/market_context.jsonmarket_context.json 格式:
{
"prices": {"NASDAQ:AMZN": 262.59, "OTC:002963": 3.20},
"currencies": {"NASDAQ:AMZN": "USD", "OTC:002963": "CNY"},
"fx_rates": {"CNY": 1.0, "USD": 6.8, "HKD": 0.87},
"warnings": [],
"meta": {}
}
ticker config 示例(/tmp/ticker.yaml):
watchlist:
- AMZN
- BIL
- DIA
- QQQ
- QQQM
- SCHD
- SGOV
- SOXX
- VOO
- VXUS
- NIO
lots:
- symbol: AMZN
quantity: 1
unit_cost: 1
# ... 每个 symbol 都需要一个 synthetic lot
merge 规则:
调用示例:
# 1. 获取 ticker 价格并生成 market_context.json
ticker --config /tmp/ticker.yaml print --format json |
jq '{prices: (map({key: ("NASDAQ:" + .symbol), value: (.price | tonumber)}) | from_entries),
currencies: (map({key: ("NASDAQ:" + .symbol), value: "USD"}) | from_entries),
fx_rates: {"CNY": 1.0, "USD": 6.8},
warnings: [], meta: {}}' > /tmp/market-context.json
# 2. 注入到分析流程
python3 scripts/portfolio_analysis.py
--date 2026-05-16
--portfolio-dir ~/.agents/data/portfolio-workflows/default/portfolio
--market-context /tmp/market-context.json
python3 scripts/refresh_portfolio.py --date 2026-05-16 --portfolio-dir ~/.agents/data/portfolio-workflows/default/portfolio [--confirm-write] [--skip-history] [--output-format summary|debug]
| 参数 | 说明 |
|---|---|
--date |
目标日期,格式 YYYY-MM-DD |
--portfolio-dir |
数据目录,不提供则使用默认或 profile 目录 |
--profile |
用户数据 profile 名,默认 default |
--confirm-write |
确认写入真实目录;未提供则默认预演(不写真实文件) |
--skip-history |
跳过 history.csv 更新 |
--output-format |
summary=用户可读摘要;debug=完整 JSON |
python3 scripts/portfolio_analysis.py --date 2026-05-16 --portfolio-dir ~/.agents/data/portfolio-workflows/default/portfolio [--market-context /path/to/market_context.json] [--output /path/to/output.json]
| 参数 | 说明 |
|---|---|
--date |
目标日期,格式 YYYY-MM-DD |
--portfolio-dir |
数据目录 |
--profile |
用户数据 profile 名,默认 default |
--market-context |
外部 market_context JSON;提供后跳过内置 HTTP 获取 |
--output |
可选输出路径 |
python3 scripts/holdings_sync.py
--input '{"groups": {...}}'
--portfolio-dir ~/.agents/data/portfolio-workflows/default/portfolio
--date 2026-05-16
| 参数 | 说明 |
|---|---|
--input |
holdings-like JSON payload |
--portfolio-dir |
数据目录 |
--date |
目标日期 |
python3 scripts/persist_snapshot.py --analysis-result /path/to/analysis.json --date 2026-05-16 --portfolio-dir ~/.agents/data/portfolio-workflows/default/portfolio
| 参数 | 说明 |
|---|---|
--analysis-result |
portfolio_analysis 输出 JSON |
--date |
目标日期 |
--portfolio-dir |
数据目录 |
系统会产生以下类型的 warning:
| Warning | 含义 | 处理方式 |
|---|---|---|
XXX 当日估值不可用,已回退为最近披露净值 |
OTC 基金当天净值获取失败,使用历史数据 | 正常,可接受 |
XXX Yahoo 价格获取失败,已回退为 stooq 报价 |
Yahoo 获取失败,stooq 回退成功 | 正常,可接受 |
XXX 当前价格获取失败,已回退为 0 |
所有数据源都失败,回退到 0 | 需要关注,可能数据有问题 |
| Warning | 含义 | 处理方式 |
|---|---|---|
HKD 汇率获取失败,已回退为 0.88 |
无法获取 HKD/CNY,使用默认汇率 | 正常,可接受 |
USD 汇率获取失败,已回退为 6.90 |
无法获取 USD/CNY,使用默认汇率 | 正常,可接受 |
| Warning | 含义 | 处理方式 |
|---|---|---|
XXX 的 cost_price 为 0,收益率可能失真 |
持仓成本为 0 | 需要用户确认是否正常 |
XXX 使用未知币种 XXX,汇率已回退为 1.0 |
币种无法识别 | 需要检查 ticker 配置 |
| Warning | 含义 | 处理方式 |
|---|---|---|
外部 market_context 缺少 N 个标的,已使用内置 source 补齐 |
外部 context 未覆盖全部标的 | 正常,缺失部分由内置补齐 |
market_context 仍缺少 N 个标的 |
即使内置补齐后仍有缺失 | 需要关注 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习