关于 trader-rebalance
trader-rebalance 是一款 Python 技能,用于比较持仓与目标权重,并在偏离超过设定区间时提出交易方案。它只生成方案,不会下单;后续风险检查和用户确认由相关工作流负责。
主要功能
- 01计算投资组合偏离
- 02应用目标权重与持仓上限
- 03设定再平衡阈值区间
- 04先卖后买生成交易方案
- 05遵守现金缓冲与订单限额
适用场景
- 01检查偏离目标的持仓
- 02评估追加现金的影响
- 03生成待风险审核的方案
- 04标出未跟踪持仓但不卖出
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jakeschincariol/ trader-skill --skill trader-rebalance安装后在 Claude Code 中输入/trader-rebalance确认已加载。
附带文件rebalance.py
详细介绍
trader-rebalance
Rebalancer 让投资组合始终贴合计划。价格会波动,新增资金会到账,新的 13F 会改变权重;此技能会找出偏离过大的股票,并提出让它们回归目标的交易方案。它只会写入方案:trader-risk 会检查方案,而 trader-broker 会针对每笔方案询问用户是否同意。
下文中的 ${CLAUDE_SKILL_DIR} 是此技能所在的文件夹(即 SKILL.md 所在目录)。
python3 "${CLAUDE_SKILL_DIR}/rebalance.py" # the drift table, no files written
python3 "${CLAUDE_SKILL_DIR}/rebalance.py" --band 5 --write # proposals -> trader/orders.json
python3 "${CLAUDE_SKILL_DIR}/rebalance.py" --sell-untracked # also sell holdings not in the targets
python3 "${CLAUDE_SKILL_DIR}/rebalance.py" --json
读取和写入的内容
| 文件 | 内容 |
|---|---|
trader/portfolio.json | 现金和持仓(股数);格式与 trader-tax 的 portfolio.example.json 相同 |
trader/prices.json | 每个持仓和每个目标的价格(由 trader-alerts 写入) |
trader/targets.json | 目标权重(由 trader-copycat 写入) |
trader/config.json | 现金缓冲、上限、订单最小和最大金额、rebalance_band_pct |
trader/orders.json | 使用 --write 写入的方案,先卖出 |
决策方式
- 账户价值 = 现金 + 按价格计算的所有持仓价值。
- 目标:在股票配置部分(账户价值减去现金缓冲)内对权重重新归一化,且任何股票在账户中的占比都不得超过
max_position_pct。超出部分会像 trader-budget 一样分配给其他股票,因此达到上限的股票不会每个月都被买到超过上限。 - 偏离 = 当前账户占比减去目标占比。
- 偏离区间:只有偏离超过区间的股票才会触发交易(默认 5 个百分点)。交易会将股票持仓完全调回目标。区间越小,交易越多;区间越大,交易越少。
- 先卖出,再买入。买入只会使用超出现金缓冲的现金;如果资金不足,所有买入金额都会按相同比例缩减。
- 低于
min_order_usd的交易会跳过。超过max_order_usd的交易会缩减至上限,并附注提示待订单成交后重新运行。 - 未跟踪的持仓(不在目标中)会保持不变并列出,除非用户使用
--sell-untracked要求卖出。
步骤
- 刷新价格:运行 trader-alerts
alerts.py quote --holdings --write。 - 运行
rebalance.py,并用通俗语言展示偏离表:哪些股票超配或低配、偏离多少个百分点,以及将进行哪些交易。 - 卖出前,运行 trader-tax(
lots.py sell TICKER SHARES),并说明卖出将产生多少收益。卖出盈利持仓可能需要缴税。 - 如果用户想进行这些交易:运行
rebalance.py --write,然后运行/trader-risk,再运行/trader-broker,每笔订单都需单独确认。
示例:Reel 中的投资组合
2026-10-13 买入的复制投资组合(AAPL $1,250,已达上限;AXP $1,119、GOOGL $823、KO $708、BAC $600、现金 $500),按当日收盘价估值后正好符合目标:所有偏离都小于 0.1 个百分点,因此 rebalance.py 会提示“没有股票超出偏离区间”并以状态码 1 退出。如果用户再增加 $2,000 现金,账户价值将达到 $7,000,上限变为 $1,750。此时 AAPL 低于目标 7.1 个百分点,AXP 低于目标 6.4 个百分点,二者都超出 5 个百分点的区间,因此建议买入 $499 的 AAPL 和 $446 的 AXP。GOOGL、KO 和 BAC 也低于目标,但仍在区间内,因此暂不调整。如果改为增加 $5,000,五只股票都会超出区间:建议买入这五只股票,并保留 $1,000 现金缓冲。
它绝不会做什么
它绝不会下单,不会为了追逐小幅差异而在偏离区间内交易,不会在未经请求的情况下卖出目标之外的持仓,也不会声称再平衡能够提高收益。
安全
- 本项目用于教育和提供工具,不构成金融建议。再平衡依据的是用户自己的目标,而非预测。
- 默认使用模拟交易(
"paper": true)。是否进行实盘交易由用户自行决定,并在自己的配置中设置。 - 除 trader-broker 外,本工具包中的所有内容都不会下单;只有同时满足以下三项时才会下单:trader-risk 已在当天审核通过该笔确切订单;用户在聊天中针对这笔订单明确输入了「是」;并且由于订单工具设置为「需要批准」(Customize > Connectors > tool permissions),用户已在 Claude 自己的卡片上单击一次「允许」。切勿将订单工具设为「始终允许」。
- 除非配置允许且用户确认,否则不进行期权、保证金交易、卖空或杠杆交易。
- 券商密钥应保存在环境变量或 Claude Desktop 配置中,绝不能放在聊天中。