mcpField
T
trader-budget

trader-budget

github.com/jakeschincariol其他2.6k110 次安装1 周前更新
代码仓库

关于 trader-budget

trader-budget 是交易规模计算 Skill,可依据交易计划和用户设定的规则生成拟议订单。它按风险、仓位、订单及现金限制计算整股数量,不会联系经纪商。

主要功能

  1. 01根据入场价和止损价计算股数
  2. 02按亏损、仓位、订单和现金限制规模
  3. 03有新鲜报价时纳入计算
  4. 04支持按权重分配预算
  5. 05生成拟议订单但不下单

适用场景

  1. 01将交易计划转换为括号订单提案
  2. 02止损距离增大时减少股数
  3. 03按权重将预算分配至股票目标

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jakeschincariol/day-trader-skill --skill trader-budget

安装后在 Claude Code 中输入/trader-budget确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

config.example.json
size.py
targets.example.json

详细介绍

trader-budget

预算管理器会将计划(“以 364.18 买入 TSLA,止损价 358.32”)转换为精确的订单(“买入 8 股”),并遵循用户一次性设定的规则。止损价决定仓位大小:止损价越远,买入的股数越少。它只会写入提案。trader-risk 会进行检查,trader-broker 会询问用户是否确认。日内交易会让大多数人亏钱。根据最大亏损额确定仓位,可以让每次亏损都保持较小,但无法确保交易盈利。

下文中的 ${CLAUDE_SKILL_DIR} 是此技能所在的文件夹(即 SKILL.md 所在位置)。

python3 "${CLAUDE_SKILL_DIR}/size.py"                        # trader/plan.json + trader/config.json
python3 "${CLAUDE_SKILL_DIR}/size.py" --write                # write trader/orders.json
python3 "${CLAUDE_SKILL_DIR}/size.py" --limit --write        # a limit order at the plan's entry
python3 "${CLAUDE_SKILL_DIR}/size.py" --limit 364.00 --json  # a limit order at 364.00
python3 "${CLAUDE_SKILL_DIR}/size.py" --weights AAPL=40,KO=60 --config split.json   # weights mode, below

--now "2026-10-19 10:15" 会固定时钟(纽约时间)。若计划日期为其他日期,则会被拒绝:使用 trader-exit 创建新计划。

读取和写入的内容

文件用途
trader/config.json规则(从此文件夹中的 config.example.json 开始)
trader/plan.json交易计划:入场价、止损价、目标价、交易策略、平仓时间(由 trader-exit 写入)
trader/prices.json可选:高于计划入场价的最新价格意味着风险更高(由 trader-alerts 写入)
trader/portfolio.json可选:其中的现金会限制仓位大小(由 trader-broker 维护)
trader/orders.json使用 --write 写入的一笔拟议括号订单

第 1 步:一次性设置规则

如果 trader/config.json 不存在,请将 config.example.json 复制到 trader/config.json,并用通俗的语言询问用户每项设置的值:

  • budget:这笔交易使用的资金。只能使用他们能够承受损失的资金。
  • cash_buffer_pct:始终保留为现金的比例(默认值为 10)。
  • max_loss_per_trade_usd:如果止损单以止损价成交,单笔交易最多允许亏损的金额(默认值为 50)。
  • max_position_pct、max_order_usd、min_order_usd:最大仓位(预算的 75%)、最大订单金额($4,000)和最小订单金额($5)。
  • trader-risk 强制执行的每日限制:max_daily_loss_usd(150)、max_trades_per_day(3)、min_reward_risk(1.0)、require_stop(true)、no_entries_before / no_entries_after("09:45" / "15:30")以及 flat_by("15:55"),以上时间均为纽约时间。
  • blocked:他们永远不想交易的股票代码。
  • 在用户观察过模拟账户中的运行效果之前,保持 paper 为 true。

第 2 步:确定交易仓位

python3 "${CLAUDE_SKILL_DIR}/size.py" --write

仅限整数股:Alpaca 的括号订单不接受零碎股。仓位大小取以下四项限制中的最小值:

限制股数
最大亏损额max_loss_per_trade_usd / 每股风险(入场价减去止损价)
仓位上限预算 x max_position_pct / 入场价
最大订单金额max_order_usd / 入场价
现金(预算减去现金缓冲)/ 入场价,且不得超过 trader/portfolio.json 中的现金

用于确定仓位的入场价:使用 --limit 指定的限价。对于市价单,使用计划中的入场价;如果 trader/prices.json 中的价格是最新的(不到 15 分钟),且高于计划入场价,则使用该价格。价格较计划时上涨意味着在相同止损价下亏损会更大,因此买入股数会更少。价格下跌绝不会降低风险。

出现以下情况时会拒绝交易且不写入订单:仓位为 0 股、订单金额低于最低金额、风险回报比低于 min_reward_risk、止损价不低于入场价、目标价不高于入场价(意味着行情已走完)、计划日期为其他日期、股票代码已被列入屏蔽清单,或计划是做空。用一行话向用户说明原因。

第 3 步:向用户展示

展示四项限制、决定仓位大小的限制、股数、金额以及止损价处的最大亏损额。明确说明止损是一种订单,而非保证:在快速波动的市场中,止损单可能以低于止损价的价格成交。然后交由 /trader-risk 处理。

示例:计算过程

TSLA 于 2026-10-19 星期一。开盘区间突破:上午 10:15 以 364.18 入场, 止损位为 358.32(开盘区间中点),目标价为 370.04(1R)。每股风险为 5.86。 示例配置:预算 $5,000,现金缓冲 10%,最大亏损 $50。

限额计算股数
最大亏损$50 / 5.868(以此为准)
持仓上限$5,000 的 75% = $3,750 / 364.1810
最大订单$4,000 / 364.1810
现金$5,000 减去 $500 = $4,500 / 364.1812

8 股 = $2,913.44。止损时的最大亏损:8 x 5.86 = $46.88。它会写入:

{"symbol": "TSLA", "side": "buy", "qty": "8", "type": "market", "time_in_force": "day",
 "order_class": "bracket", "take_profit_limit_price": "370.04", "stop_loss_stop_price": "358.32",
 "why": "opening-range breakout on TSLA: 8 shares, bound by your $50 max loss per trade (8 x 5.86 = $46.88 at the stop)",
 "plan": {"entry": 364.18, "stop": 358.32, "target": 370.04, "risk_per_share": 5.86, "max_loss": 46.88,
          "setup": "orb", "entry_time": "10:15 AM", "flat_by": "15:55"}}

why 和 plan 是供 trader-risk 和 trader-broker 使用的备注,不会发送给 Alpaca。若止损位改为 300.00,每股风险将达到 64.18,超过 $50 的最大亏损:不下单。上午 10:52,实际报价为 366.48,因此同一计划按每股 8.16 的风险计算,只能买入 6 股,且收益风险比降至 0.44:拒绝,因为等待的行情大部分已经出现。

权重模式(沿用自 v1)

--weights AAPL=22.04,KO=10.86 或 --targets FILE(此处为 targets.example.json)会按权重将预算分配给列表中的股票:先扣除现金缓冲,将权重重新归一化至 100;超过 max_position_pct 的股票会被限制在上限,超出部分再分配给其他股票;低于最低订单金额的份额会被舍弃;金额会四舍五入到整美元,避免意外留下闲置资金。设置 "max_position_pct": 25 和 "fractional": true 后,示例文件会为 AAPL 分配 $1,250(达到上限)、为 AXP 分配 $1,119、为 GOOGL 分配 $823、为 KO 分配 $708、为 BAC 分配 $600。设置 "fractional": false(示例配置)后,会买入整数股,并需要价格(--prices trader/prices.json)。这些是没有止损的普通买入:只要 require_stop 为 true,trader-risk 就会拦截这些买入,并将每笔计入 max_trades_per_day。长期配置应使用单独的配置(--config)。

规则

  • 仅提供方案。本技能绝不会调用经纪商工具。
  • 绝不为用户擅自认定资金用途。询问预算和最大亏损。
  • 每个数字都来自配置、计划或价格,不做任何猜测。
  • 不做预测:绝不声称交易会带来多少收益。目标价是计划,不是预测。
  • Yahoo 免费价格未经官方确认,且可能滞后。实际成交价格以经纪商提供的价格为准。

绝不会做的事

绝不下单、批准或安排订单,绝不擅自提高限额,绝不为了买入更多股而缩小止损范围,也绝不为期权、保证金或空头头寸计算仓位。

安全

  • 用于教育和工具支持,不构成财务建议。PASS 仅表示通过规则检查,不是投资建议。
  • 默认使用模拟交易("paper": true)。是否进行实盘交易由用户自行决定,并在自己的配置中设置。
  • 此工具包中只有 trader-broker 会下单,且必须同时满足以下三项:trader-risk 当天已通过该笔确切订单;用户在聊天中明确输入了该笔订单的确认语;用户在 Claude 自己的卡片上点击一次 Allow,因为订单工具设置为“Needs approval”(Customize > Connectors > tool permissions)。绝不要将订单工具设为“Always allow”。
  • 除非配置允许且用户确认,否则不进行期权交易、保证金交易、卖空或杠杆交易。
  • 经纪商密钥应存放在环境变量或 Claude Desktop 配置中,绝不要放在聊天中。

评论

支持 Markdown