Install
openclaw skills install portfolio-daily-trackerTrack and report multi-group stock portfolios with daily snapshots, live Yahoo Finance prices, P&L analytics, and push notifications (Feishu/Telegram). Suppo...
openclaw skills install portfolio-daily-trackerThis skill requires the engine scripts from the main repository. Run setup first:
bash scripts/setup.sh [target_dir]
This clones the repo, creates data directories, copies config templates, and installs Python dependencies. The Python engine scripts (portfolio_manager.py, portfolio_snapshot.py, portfolio_report.py, portfolio_daily_update.py) are located in engine/scripts/ after setup.
当用户提到以下内容时使用此技能:
投资组合跟踪系统采用每日快照模式:
portfolio/holdings/YYYY-MM-DD.json — 每天独立的持仓记录portfolio/snapshots/YYYY-MM-DD.json — 每日计算后的完整数据(含价格、市值、盈亏)portfolio/config.json — 组别定义、API配置portfolio/history.csv — 时序数据汇总数据目录: $PROJECT_ROOT/engine/portfolio/(可通过环境变量 PORTFOLIO_DIR 覆盖)
系统支持多个投资组合分组,每组有独立的成本基数和持仓。例如:
注意:同一只股票可以同时出现在不同组中(分别持有不同数量),更新时需要指定组别。
当用户说"卖了500股某股"、"加了200股某股"等,执行以下步骤:
cd $PROJECT_ROOT/engine
python3 scripts/portfolio_manager.py update <ticker> --qty <new_total> [--cost <price>] [--group <组名>]
常用命令:
# 查看当前持仓
python3 scripts/portfolio_manager.py show
# 更新持仓数量(设置为新的总量)
python3 scripts/portfolio_manager.py update SHA:603259 --qty 4000 --group Growth
# 添加新持仓
python3 scripts/portfolio_manager.py add NASDAQ:NVDA NVIDIA Growth --qty 10 --cost 120.0 --market us
# 删除持仓
python3 scripts/portfolio_manager.py remove NASDAQ:META --group Growth
# 显示分组信息
python3 scripts/portfolio_manager.py groups
当用户说"今天基金涨了500块"、"基金现在值16万了"、"现金变成-50万"等:
# 设置某组基金市值(单位:元)
python3 scripts/portfolio_manager.py set-fund --group Growth --value 160000
# 设置另一组基金市值
python3 scripts/portfolio_manager.py set-fund --group Income --value 5000
# 设置某组现金(可为负数,表示融资/杠杆)
python3 scripts/portfolio_manager.py set-cash --group Growth --value -500000
# 设置另一组现金
python3 scripts/portfolio_manager.py set-cash --group Income --value 3300
变更后读取并展示当天持仓文件,确认更新正确。
# 查看最新快照
ls -t engine/portfolio/snapshots/*.json | head -1 | xargs cat | python3 -m json.tool
# 生成今日快照(需取价)
python3 engine/scripts/portfolio_snapshot.py --date $(date +%Y-%m-%d)
# 生成报告
python3 engine/scripts/portfolio_report.py --date $(date +%Y-%m-%d)
# 查看历史CSV
cat engine/portfolio/history.csv
# 查看特定日期快照
cat engine/portfolio/snapshots/2026-03-08.json | python3 -m json.tool
| 市场 | 格式 | 示例 | Yahoo代码 |
|---|---|---|---|
| 上交所A股 | SHA:XXXXXX | SHA:603259 | 603259.SS |
| 深交所A股 | SHE:XXXXXX | SHE:002050 | 002050.SZ |
| 上交所ETF | SHA:XXXXXX | SHA:513050 | 513050.SS |
| 港股 | HKG:XXXX | HKG:0700 | 0700.HK |
| 纳斯达克 | NASDAQ:XXXX | NASDAQ:GOOGL | GOOGL |
| 纽交所 | NYSE:XXXX | NYSE:BRK.B | BRK-B |
用户通常用中文名或简称,需要你映射为 Ticker 格式。 如果不确定某只股票的 Ticker,先用
portfolio_manager.py show查看已有持仓中的命名。
用户可能使用的中文表达:
当用户要求生成日报时,运行完整管道:
cd $PROJECT_ROOT/engine
# 1. 获取最新价格并生成快照
python3 scripts/portfolio_snapshot.py --date $(date +%Y-%m-%d)
# 2. 生成 Markdown 报告
python3 scripts/portfolio_report.py --date $(date +%Y-%m-%d)
# 3.(可选)推送到飞书/Telegram
# 在 scripts/portfolio-daily.sh 中可用 openclaw message send 推送
User: 今日持仓有变化吗?
Agent: [calls get_tracker_snapshot to show current holdings]
User: 卖了500股某股票,现金变为-48万
Agent: [calls update_holdings with changes, then run_portfolio_pipeline]
User: 帮我生成今天的日报
Agent: [calls run_portfolio_pipeline]
User: Growth 组的基金现在值16万了
Agent: [runs: portfolio_manager.py set-fund --group Growth --value 160000]
set-fund 和 set-cash 命令更新capital_change,日盈亏 market_daily_change 自动排除资金变动date,total_value,total_cost,total_profit,return_pct,daily_change,daily_change_pct,max_drawdown_pct,capital_change,market_daily_change,market_daily_change_pctmarket_daily_change = daily_change - capital_change)capital_change/market_daily_change/market_daily_change_pct成本增加/减少 解析模式