关于 trader-risk
trader-risk 是交易流程中的订单规则检查技能,供 trader-budget、trader-rebalance 等提案流程使用。它逐笔检查订单,并记录可追溯到具体订单指纹的通过或拦截结果;不下单也不修改限额。
主要功能
- 01检查订单格式、资产与金额限制
- 02评估持仓、现金和卖空规则
- 03检测重复订单及每日上限
- 04逐笔模拟批次成交后的状态
- 05保存带订单指纹的检查结果
适用场景
- 01下单前筛查预算生成的订单
- 02检查批次是否触发仓位或现金限制
- 03订单编辑后重新验证是否通过
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jakeschincariol/ trader-skill --skill trader-risk安装后在 Claude Code 中输入/trader-risk确认已加载。
附带文件check.py
详细介绍
trader-risk
Risk Manager 是提案与经纪商之间的关卡。trader-budget、trader-rebalance 或 trader-tax 写入的每笔订单都会经过它。 某笔订单一旦被 BLOCK,该结果就是最终的:不会询问用户是否同意,也不会将订单发送给经纪商。
下文中的 ${CLAUDE_SKILL_DIR} 是此技能所在的文件夹(即 SKILL.md 所在位置)。
python3 "${CLAUDE_SKILL_DIR}/check.py" # trader/ files; writes trader/state/risk.json
python3 "${CLAUDE_SKILL_DIR}/check.py" --json
python3 "${CLAUDE_SKILL_DIR}/check.py" --no-write # look without recording
读写内容
| 文件 | 内容 |
|---|---|
trader/orders.json | 提议的订单 |
trader/config.json | 限额(trader-budget 附带 config.example.json) |
trader/portfolio.json | 现金和持仓;如果文件缺失,则创建一个以预算注资的新账户 |
trader/prices.json | 计算股数订单数量和持仓估值所需的数据 |
trader/state/broker.json | 当天已下单的记录,用于检查重复订单和每日限额 |
trader/state/risk.json | 写入的判定结果,包含每笔确切订单的指纹 |
检查项
按文件中的顺序检查订单,并假设每笔通过检查的订单都已成交,因此可以发现单笔订单都符合规则、但合在一起会违反规则的情况。
| 检查项 | 会阻止订单的情况 |
|---|---|
| 格式 | 没有代码;side 不是 buy 或 sell;qty 和 notional 同时存在或都不存在;notional 订单不是 market + day(Alpaca 的规则);limit 订单没有限价 |
| 资产 | allow_options 为 false 时,订单包含期权代码;属于加密货币或不是美国股票或 ETF 代码 |
| 屏蔽列表 | 代码在 blocked 列表中 |
| 规模 | 低于 min_order_usd 或高于 max_order_usd |
| 持仓 | 成交后该股票将占账户的比例超过 max_position_pct |
| 现金 | 买入后现金将低于现金缓冲,或需要保证金(allow_margin 为 false) |
| 卖空 | 卖出的数量超过持有量(allow_short 为 false) |
| 重复订单 | 同一批次中两次出现相同的代码和 side,或当天已下过该订单 |
| 每日限额 | 当天已下单数量超过 max_orders_per_day |
警告不会阻止订单,但要告知用户:账户为 LIVE、以数字而非字符串形式传入数字、使用高级(括号)订单。
步骤
- 如果有任何订单按股数下单,或任何持仓需要估值,请确保
trader/prices.json是最新的(trader-alerts:alerts.py quote --holdings --write)。 - 运行
check.py。退出代码 0 表示所有订单均已通过检查,1 表示至少有一笔订单被阻止。 - 用通俗易懂的语言逐笔告知用户结果。对于 BLOCK,请说明原因和解决方法(减少金额、换一只股票,或由用户自行决定是否更改规则)。绝不要自行更改限额。
- 如果订单有任何改动,都要重新运行检查。trader-broker 会根据指纹将每笔订单与其判定结果匹配,因此编辑过的订单必须重新通过检查才能下单;昨天的判定今天不算数。
示例:完整流程
来自 trader-budget 的五笔买入(AAPL $1,250、AXP $1,119、GOOGL $823、KO $708、BAC $600),在一个新建的 $5,000 模拟账户上使用示例配置:
PASS #1 buy AAPL $1,250
PASS #2 buy AXP $1,119
PASS #3 buy GOOGL $823
PASS #4 buy KO $708
PASS #5 buy BAC $600
5 passed, 0 blocked. Cash after the passed orders: $500 (paper account).
AAPL 恰好达到 25% 的上限($5,000 中的 $1,250),因此允许下单。第六笔订单若再买入 $100 的 AAPL,则会因三项原因被阻止:会动用 $500 的现金缓冲,使 AAPL 超过 25% 的上限,并且在同一批次中重复买入 AAPL。
它绝不会做的事
它绝不会下单、修改订单以使其通过检查、放宽限额,也绝不会将 PASS 视为用户的同意。PASS 只表示允许将订单展示给用户。
安全
- 仅用于教育和提供工具,不构成财务建议。PASS 只是规则检查结果,并非推荐。
- 默认使用模拟交易(
"paper": true)。是否开始实盘交易由用户自行决定,并在自己的配置中设置。 - 除 trader-broker 外,本套件中的任何内容都不会下单;只有同时满足以下三个条件时,trader-broker 才会下单:trader-risk 今日已通过对该订单的检查;用户在聊天中明确输入了针对该笔订单的肯定答复;用户在 Claude 自己的卡片上点击了一次 Allow,因为订单工具设置为「Needs approval」(Customize > Connectors > tool permissions)。切勿将订单工具设为「Always allow」。
- 除非配置允许且用户确认,否则不进行期权、保证金、卖空或杠杆交易。
- 经纪商密钥应保存在环境变量或 Claude Desktop 配置中,绝不可放在聊天中。