讲师中心 微信公众号
AI工具推荐 视频效率加速

Fin Ai

Polar Sponsor
爱发电 赞助
.NET 9.0

中文投资组合管理技能:同步持仓,基于持仓重新计算组合结果,生成当日快照/历史记录。适用于用户提供截图、CSV、券商导出或类似持仓的JSON,需要更新持仓、刷新组合结果、检查警告并落盘快照的场景。

fin-ai

功能概述

fin-ai是一项面向实际任务的技能,主要用于当用户要做下面这些事时使用这个 skill:;同步或更新持仓;

核心要点

  • 基于当前 holdings 重算组合结果;
  • 生成或刷新某一天的 snapshot / history;
  • 检查本次运行的 warnings;

使用与执行

第一次为用户初始化投资组合数据目录;首次使用引导;如果这是用户第一次使用这个 skill,优先用自然语言确认一件事:;使用默认数据目录;或者使用用户提供的自定义目录;默认情况下,优先推荐默认数。

结果检查与注意事项

它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

fin-ai

当用户要做下面这些事时使用这个 skill:

  • 同步或更新持仓
  • 基于当前 holdings 重算组合结果
  • 生成或刷新某一天的 snapshot / history
  • 检查本次运行的 warnings
  • 第一次为用户初始化投资组合数据目录

首次使用引导

如果这是用户第一次使用这个 skill,优先用自然语言确认一件事:

  • 使用默认数据目录
  • 或者使用用户提供的自定义目录

默认情况下,优先推荐默认数据目录。 只有用户已经有现成的数据目录,或者明确希望自己管理路径时,再使用自定义目录。

如果用户没有可用数据目录,就先初始化目录,再继续后续 workflow。

写操作确认规则

凡是会改动真实数据目录的操作,默认都先预演:

  • 导入或更新持仓
  • 刷新并落盘当日 snapshot / history
  • 任何会改动 holdings / snapshots / history.csv 的动作

预演时:

  • 结果直接展示在对话里(用户可读的摘要:总资产、盈亏、账户组、warnings)
  • 不写临时文件,不生成临时文件路径
  • 用户确认后再写入真实持久目录

正式写入:

  • 用户在对话里明确确认后,执行真实写入
  • 写入结果再次展示给用户确认

默认使用方式

  • 如果用户给了新的持仓数据: 先同步 holdings,再重算结果,再落 snapshot
  • 如果用户没有给新持仓: 直接基于现有 holdings 重算并落 snapshot

第一次使用时,先确认用户希望:

  • 使用默认数据目录
  • 还是提供一个自定义数据目录

默认数据目录在: ~/.agents/data/portfolio-workflows//portfolio

这个默认路径会记录在用户配置文件里: ~/.agents/data/portfolio-workflows/settings.json

后续如果用户没有显式提供路径,就直接用配置文件里的默认目录。

除非用户明确要求,否则不要主动向用户解释脚本路径、repo 结构或内部文件布局。 对用户只需要表达:

  • 当前使用哪个数据目录
  • 是否会改真实数据
  • 本次会执行哪类动作(同步持仓 / 重算 / 落快照)
  • 默认优先返回用户摘要,不主动暴露完整内部 JSON

同步持仓时,默认按“账户组替换”理解。 只有用户明确说“整份覆盖今天持仓”时,才应该走整份覆盖模式。

关键规则

  • holdings 是真源
  • snapshot 是派生结果,不是真源
  • 默认不要直接改真实数据,预演结果直接展示给用户确认后再写入
  • 正式发布态的数据目录应放在 repo 外
  • 用户可以提供自定义路径;如果没提供,就用默认目录或配置文件里的目录
  • 只有在用户明确要整份覆盖当天持仓时,才使用整份覆盖模式

外部行情源注入(可选)

Agent 可主动调用外部 CLI(如 ticker)获取行情,再注入到分析流程:

  1. 调用 ticker CLI:ticker --config print --format json
  2. 转换为 market_context.json(格式见下)
  3. 调用 portfolio_analysis.py --market-context /path/to/market_context.json
  4. 缺失标的由内置 HTTP source 补齐

market_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 规则:

  • 外部 prices/currencies/fx_rates 优先
  • 缺失标的由内置 source 补齐并写入 warning
  • OTC 基金始终由内置 source 处理(ticker 不支持 OTC)

调用示例:

# 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

CLI 调用语法

refresh_portfolio.py(主入口)

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

portfolio_analysis.py(分析)

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 可选输出路径

holdings_sync.py(同步)

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 目标日期

persist_snapshot.py(落盘)

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:

数据获取类

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 个标的 即使内置补齐后仍有缺失 需要关注

何时读参考资料

  • 涉及 lot 明细: 读 references/schema-lots.md
  • 改分析输出或 snapshot 落盘: 读 references/schema-snapshot.md
  • 改 workflow 边界或输入输出 contract: 读 references/workflow-contracts.md
目录

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

0

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

0

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

0

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

0

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

0

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

0

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn