trader-rebalance 用于投资组合再平衡:当价格变动、新增资金或新的 13F 文件导致持仓权重偏离目标时,它会找出漂移过大的股票,并生成把权重拉回目标的交易建议。
主要能力
- 按当前价格计算账户价值(现金加所有持仓市值)。
- 对目标权重在股票部分内重新归一化(账户减去现金缓冲),并确保没有股票超过账户的 max_position_pct,超额部分按 trader-budget 的方式分摊。
- 计算漂移:当前占账户百分比减去目标百分比。
- 只交易漂移超过再平衡带(默认5个百分点)的股票,并把该股票一次拉回目标。
- 先卖后买;买入只花费现金缓冲以上的部分,现金不足时所有买入按相同比例缩减。
- 低于 min_order_usd 的交易跳过;超过 max_order_usd 的交易被削减到上限,并提示成交后重跑。
- 不在目标中的持仓默认保留并列出,除非使用 --sell-untracked 要求卖出。
使用方式 命令示例: python3 "${CLAUDE_SKILL_DIR}/rebalance.py" # 输出漂移表,不写文件 python3 "${CLAUDE_SKILL_DIR}/rebalance.py" --band 5 --write # 生成建议 -> trader/orders.json python3 "${CLAUDE_SKILL_DIR}/rebalance.py" --sell-untracked # 同时卖出不在目标中的持仓 python3 "${CLAUDE_SKILL_DIR}/rebalance.py" --json
读取与写入的文件
- trader/portfolio.json:现金与持仓股数。
- trader/prices.json:每个持仓和每个目标的价格,由 trader-alerts 写入。
- trader/targets.json:目标权重,由 trader-copycat 写入。
- trader/config.json:现金缓冲、上限、最小与最大订单金额、rebalance_band_pct。
- trader/orders.json:使用 --write 写入的建议,卖出在前。
典型步骤
- 刷新价格:trader-alerts alerts.py quote --holdings --write。
- 运行 rebalance.py,用通俗语言展示漂移表:哪些股票超配或低配、相差多少点、会做什么交易。
- 卖出前先运行 trader-tax(lots.py sell TICKER SHARES),展示卖出可能实现的税务结果,因为卖出盈利持仓可能产生税单。
- 如果用户想执行交易:rebalance.py --write,然后运行 /trader-risk,再运行 /trader-broker,每笔订单逐次确认。
限制与安全
- 只写建议,从不下单;下单只能由 trader-broker 执行,且必须同时满足:trader-risk 当天通过了该笔订单、用户在聊天中对该笔订单明确输入 yes、用户对订单工具点击一次 Allow(订单工具设为 Needs approval,绝不设为 Always allow)。
- 不会在再平衡带内追逐微小差异,不会未经要求卖出目标外持仓,也不会声称再平衡能提高收益。
- 默认模拟交易("paper": true),转为实盘由用户在自己的配置中决定。
- 除非配置允许且用户确认,否则不涉及期权、保证金、卖空或杠杆。
- 券商密钥存放在环境变量或 Claude Desktop 配置中,不放在聊天里。
- 属于教育与工具性质,不构成财务建议;再平衡遵循用户自己的目标,而不是预测。
适用场景 适合需要按既定目标权重定期检查并调整股票组合、希望在交易前看到漂移和建议、并需要税务与风险前置检查的用户。