Portfolio 是一个投资组合管理器,用于管理持仓、分析配置、计算收益并生成再平衡建议。所有数据存储在本地 JSON 文件中,无需外部 API 调用。
用途
Portfolio 用于跟踪股票、ETF 或加密货币的买卖记录,查看当前持仓快照,分析组合在各资产上的权重分布,生成达到目标配置权重的买卖建议,以及计算指定时间段内的组合收益。
主要能力
- 添加持仓:
add <ticker> <qty> <price>买入股票,加入持仓并记录买入交易,支持--date YYYY-MM-DD指定日期(默认今天)。重复标的会自动按加权平均价合并。 - 移除持仓:
remove <ticker>卖出股票,从持仓中移除并记录卖出交易,支持--quantity N部分卖出(省略则全部卖出)。 - 列出持仓:
list以格式化表格显示所有当前持仓,支持--format table|json|csv。 - 配置分析:
analyze分析组合配置,显示价值和权重百分比,支持--by ticker|sector和--format table|json。 - 再平衡:
rebalance生成买卖建议以达到目标配置权重,支持--target TICKER:PCT,...和--threshold PCT(默认 5)。未指定目标时默认等权重。 - 收益计算:
performance计算组合收益(投入、卖出、当前价值、盈亏),支持--period 1d|1w|1m|3m|1y|all和--format table|json。 - 帮助:
help显示内置帮助信息及所有命令示例。
使用方式
通过 bash 脚本调用,命令格式为 bash scripts/script.sh <command> [flags]。
示例:
# 添加 100 股 AAPL,价格 $150.50,日期 2024-01-15
bash scripts/script.sh add AAPL 100 150.50 --date 2024-01-15
# 添加 0.5 BTC,价格 $42,000(自动使用今天日期)
bash scripts/script.sh add BTC 0.5 42000
# 卖出 50 股 AAPL(部分卖出)
bash scripts/script.sh remove AAPL --quantity 50
# 移除整个 GOOG 持仓
bash scripts/script.sh remove GOOG
# 以表格列出持仓
bash scripts/script.sh list
# 以 JSON 列出持仓
bash scripts/script.sh list --format json
# 以 CSV 列出持仓
bash scripts/script.sh list --format csv
# 按标的分析配置,带可视化权重条
bash scripts/script.sh analyze --format table
# 以 JSON 获取配置分析
bash scripts/script.sh analyze --format json
# 生成再平衡建议,自定义目标与 3% 阈值
bash scripts/script.sh rebalance --target AAPL:40,GOOG:30,BTC:30 --threshold 3
# 等权重再平衡(无 --target 时默认等权重)
bash scripts/script.sh rebalance
# 查看最近一个月收益
bash scripts/script.sh performance --period 1m
# 全时段收益,JSON 格式
bash scripts/script.sh performance --period all --format json
输出到 stdout,支持 --format json 的机器可读输出,可用 shell 重定向:
bash scripts/script.sh list --format csv > portfolio.csv
bash scripts/script.sh performance --format json | jq .
数据存储
所有数据存储在本地 ~/.portfolio/:
holdings.json:当前持仓数组,每项包含 ticker、quantity、avg_price、date_added。transactions.json:所有买卖交易数组,包含 type、ticker、quantity、price、date。
两个文件在首次使用时自动创建为空 JSON 数组([])。
适用场景
- 记录买入股票、ETF 或加密货币,自动计算成本均价。
- 快速查看当前组合快照(表格、JSON 或 CSV)。
- 查看组合在各资产上的权重分布及百分比。
- 获取达到目标配置权重的买卖建议,可配置偏离阈值。
- 计算指定时间段(1 天到全时段)的总投入、总卖出、当前价值和盈亏百分比。
限制
- 需要 bash 4.0+ 和 python3(仅标准库:json、os、sys、datetime)。
- 无外部 API、无 pip 包、无需网络访问。
- 数据仅存储在本地 JSON 文件,暂未提供云端同步或多人协作功能。
- 暂未提供实时行情获取,价格需手动输入。