关于 mlb-trade-evaluator
mlb-trade-evaluator 是用于评估幻想棒球交易的技能,面向需要结合球员预测、球队类别需求和阵容位置判断报价的管理者。它计算加权类别差异、交易价值与名额影响,并按规则给出接受、还价或拒绝建议。
主要功能
- 01比较交易双方的剩余赛季预测
- 02计算加权类别差异与交易价值
- 03纳入空出阵容名额的价值
- 04调用逆向选择技能调整估值
- 05评估位置灵活性与季后赛影响
- 06按阈值生成接受、还价或拒绝结论
适用场景
- 01评估收到的球员交换报价
- 02根据类别需求设计具体还价方案
- 03判断交易对争冠周阵容的影响
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lyndonkl/ claude --skill mlb-trade-evaluator安装后在 Claude Code 中输入/mlb-trade-evaluator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
resources/methodology.mdtemplate.mdresources/evaluators/rubric_mlb_trade_evaluator.json详细介绍
MLB 交易评估器
目录
示例
场景:对手提出用 Aaron Judge(OF)交换 Bobby Witt Jr.(SS)+ Spencer Strider(SP)。今天是 2026-06-10。用户在 12 支球队的联盟中排名第 4。mlb-category-state-analyzer 提供的 cat_pressure 信号:SB 压力 85、HR 压力 55、K 压力 70、QS 压力 80、OBP 压力 60;其他指标为 40-50。用户有富余的 OF 深度,但 SS 阵容较薄弱。mlb-opponent-profiler 给出的对手类型为:active。
赛季剩余时间的 ATC 预测(第 11-23 周,约剩余 105 场比赛):
| 球员 | R | HR | RBI | SB | OBP | K | QS | SV | $ 价值 |
|---|---|---|---|---|---|---|---|---|---|
| Judge(转入) | 75 | 28 | 78 | 2 | .405 | — | — | — | $34 |
| Witt(转出) | 70 | 20 | 65 | 25 | .355 | — | — | — | $32 |
| Strider(转出) | — | — | — | — | — | 165 | 12 | 0 | $26 |
各类别差值(我方减对方,按 cat_pressure 加权):
| 类别 | 差值(原始) | 压力 | 加权 Δ |
|---|---|---|---|
| R | +5 | 45 | +2.3 |
| HR | +8 | 55 | +4.4 |
| RBI | +13 | 45 | +5.9 |
| SB | −25 | 85 | −21.3 |
| OBP | +.050 (×PA) | 60 | +3.0 |
| K | −165 | 70 | −115.5 |
| QS | −12 | 80 | −96.0 |
| SV | 0 | 45 | 0 |
| ERA/WHIP | 持平 | 50 | 0 |
| 合计 | −217.2 |
交易原始价值差 = $34 − ($32 + $26) = −$24。
阵容位置价值加成(原则 #9):转出 2 名球员,转入 1 名球员 → 我方腾出 +1 个净阵容名额;对方腾出 0 个。slot_value_delta = (1 − 0) × $2.50 = +$2.50。
逆向选择流程(委托给 @skills/adverse-selection-prior/):
- 输入:
offer_type=trade、proposer_archetype=active、offer_symmetry_score=20(调整前价值比 −37%,明显对我方不利)、proposer_info_asymmetry=55。 - 技能输出:
prior_ev_probability=0.30、recommended_adjustment=0.85;理由指出,活跃交易者从众多可能方案中选出这笔交易,尽管表面上看对我方不利。
调整后的交易价值差:
trade_value_delta_raw = −$24.00
+ slot_value_delta = +$2.50
= trade_value_delta_pre_adj = −$21.50
× recommended_adjustment = × 0.85
= trade_value_delta_adjusted= −$18.28
以转出球员的美元价值百分比表示:−$18.28 / $58 = −31.5% → 低于 −20% 的拒绝阈值。
位置灵活度差值:−30(失去稀缺的 SS,获得过剩的 OF)。 季后赛影响(第 21-23 周):Judge 的赛程有 19 场比赛,而 Witt 有 18 场比赛,Strider 有 4 次先发 → −35(冠军赛期间少了 4 次先发所能带来的 K/QS)。
判定阶梯(原则 #8):
delta_pct = −31.5%,明显低于−20%。- 逆向选择先验为 0.34(有力证据表明这笔交易对我方来说是负期望值)。
- 支持方和批评方意见一致:SB、K、QS 在高压力下都受到严重影响。
- 符合狭义的 拒绝 情形:
delta < −20%且存在明确的逆向选择证据。
判定:拒绝。即使始终遵循还价规则,提出的还价也会是“Judge + Webb + Ruiz 换 Witt + Strider”,作为最后通牒;但我们会预先承诺拒绝,因为折价后这笔交易仍然不划算。
工作流
复制此清单并跟踪进度:
Trade Evaluation Progress:
- [ ] Step 1: Parse the offer (players in, players out, both sides)
- [ ] Step 2: Pull rest-of-season ATC projections for every player
- [ ] Step 3: Compute per-category deltas (counting + ratio)
- [ ] Step 4: Apply cat_pressure weights from category-state-analyzer
- [ ] Step 5: Compute raw trade_value_delta in dollars
- [ ] Step 6: Compute slot_value_delta (optionality bonus)
- [ ] Step 7: Invoke @skills/adverse-selection-prior/ and apply the haircut
- [ ] Step 8: Assess positional_flex_delta
- [ ] Step 9: Compute playoff_impact (weeks 21-23 only, July+)
- [ ] Step 10: Render verdict + counter via the +15% / -20% ladder
步骤 1:解析报价
准确记录双方各自交出和接收的球员。联盟内的交易是零和的。输入格式请参阅 resources/template.md。
- 列出所有转入我方阵容的球员(转入)
- 列出所有离开我方阵容的球员(转出)
- 记录每位球员在 Yahoo 的位置资格(C/1B/2B/3B/SS/OF/Util/SP/RP)
- 记录 IL 状态、交易保护条款或正在进行的双先发周
- 记录对手球队的标识,以便读取
context/opponents/<team>.md获取其类型
步骤 2:获取赛季剩余时间的预测
权威来源是 FanGraphs ATC(综合预测)。备用来源:FanGraphs Depth Charts,其次是 Razzball Player Rater。获取所有涉及球员本赛季剩余时间的预测总量。
- 对击球手:赛季剩余时间的 R、HR、RBI、SB、OBP 和打席数(PA)
- 对投手:赛季剩余时间的 K、IP、ERA、WHIP、QS、SV
- 在信号文件的 frontmatter 中引用每个来源 URL
- 如果缺少预测数据,将置信度降至 0.5 并标记
详细的来源顺序请参阅 resources/methodology.md#projection-sourcing。
第 3 步:计算各类别的差值
对于计数统计(R、HR、RBI、SB、K、QS、SV):用转入数据减去转出数据,简单求和。
对于比率统计(OBP、ERA、WHIP):按预计打席数(击球手)或投球局数(投手)加权。加权公式请参阅 resources/methodology.md#ratio-category-math。
- 逐类别计算计数统计差值
- 比率类别差值表示为按数据量加权后的球队平均值变动
- 在逐类别差值表中记录每项数据(并列展示两支球队)
第 4 步:应用 cat_pressure 权重
读取 mlb-category-state-analyzer 最新的 signals/YYYY-MM-DD-cat-state.md。对于 10 个类别中的每一个,将原始差值乘以 cat_pressure / 50。
- 加权差值 = raw_delta × (cat_pressure / 50)
- 将加权差值求和 →
cat_pressure_weighted_delta
第 5 步:计算原始 trade_value_delta
使用 FanGraphs Auction Calculator 的赛季剩余美元价值(若不可用,则使用 Razzball)。
trade_value_delta_raw = Sum($ of players IN) − Sum($ of players OUT)
这是起始值——尚未计入阵容位置价值加成或逆向选择折减。
第 6 步:计算 slot_value_delta(可选性加成)
每个空闲替补席位的可选性价值约为 $2-3:可用于安排临时上场球员、保留伤病名单(IL)球员,或投机性地储备替补球员。2 换 1 的交易会让其中一方腾出一个阵容位置。
slot_value_delta = (N_slots_cleared_for_us − N_slots_cleared_for_them) × $2.50
其中:
N_slots_cleared_for_us= 我方转出球员数 − 我方转入球员数,结果限制为 ≥ 0N_slots_cleared_for_them= 对方一侧按相同方式计算
示例:
- 1 换 1:双方均未腾出位置 →
slot_value_delta = $0 - 2 换 1(我方送出 2 人,得到 1 人):我方腾出 1 个位置,对方腾出 0 个 → +$2.50
- 1 换 2(我方送出 1 人,得到 2 人):我方腾出 0 个位置,对方腾出 1 个 → −$2.50
- 3 换 1(我方送出 3 人,得到 1 人):我方腾出 2 个位置,对方腾出 0 个 → +$5.00
将其加到 trade_value_delta_raw,得到 trade_value_delta_pre_adj。
有关原因(game-theory-principles.md #9),请参阅 resources/methodology.md#slot-value-optionality。
第 7 步:调用 @skills/adverse-selection-prior/ 并应用折减
此步骤将原则 #4(针对收到的报价进行逆向选择评估)付诸实践。评估器不会自行计算先验值,而是委托专用技能计算并使用其输出。
- 准备
@skills/adverse-selection-prior/的输入:offer_type:trade(如果这是针对先前提议的还价,则用counter_offer)proposer_archetype:从context/opponents/<opponent-team>.md读取(取值之一:active、expert、dormant、frustrated、unknown)。如果文件不存在,则使用unknown。offer_symmetry_score:基于我们自己的表面估值计算的 0-100 整数。按以下方式映射:trade_value_delta_pre_adj / Σ($_OUT)≥ 0 → 72(报价看起来公平或对我们有利)- 0 > 比率 ≥ −10% → 60
- −10% > 比率 ≥ −25% → 40
- 比率 < −25% → 20
proposer_info_asymmetry:0-100 的整数。默认值为 50。若存在以下任一情况,则提高至 80 以上:近期伤病消息尚未由我们核实、closer 角色变动尚待确定、阵容构建发生变化、交易截止日期临近。评分指南见 resources/methodology.md#adverse-selection-delegation。
- 使用这四项输入调用
@skills/adverse-selection-prior/。 - 使用该技能的输出契约:
prior_ev_probability— 在信号文件中原样保存。recommended_adjustment(浮点数,通常为 0.80-1.00)— 这是乘法折减系数。bayesian_rationale— 嵌入 verdict 块的理由中。override_hints— 将每条提示作为red_team_finding添加到信号文件中。
- 计算:
trade_value_delta_adjusted = trade_value_delta_pre_adj × recommended_adjustment - 在输出信号块中记录
adverse_selection_adjustment=1 − recommended_adjustment(以百分比折减表示,例如,0.88 → “折减 12%”)。
符号说明: 折减系数乘在差值上,会缩小估算值的绝对值,不论方向如何——正差值会趋近于零(我们高估了收益),负差值也会趋近于零(我们高估了损失)。这在数学上符合 Akerlof 式先验:该技能告诉我们模型的可靠性低于预期,因此我们应更多地以零为基准。verdict 梯度通过对折减后的百分比设定严格阈值(+15% / −20%)进行补偿,因此,折减幅度较大的中度负原始差值会落入中间区间(COUNTER),而折减幅度无论多大,极负的原始差值仍会低于 −20% 的 REJECT 阈值。如果折减后数值恰好落在梯度边界上,则按“始终还价”规则处理为 COUNTER。
步骤 8:评估 positional_flex_delta
根据交易对阵容灵活性的影响,评分范围为 −100 至 +100。参见 resources/methodology.md#positional-flex-scoring。
- 从富余位置补入稀缺位置(C、SS、2B)= 正值
- 失去稀缺位置 = 负值
- 获得多位置资格 = 正值
- 将两名板凳球员合并为一名首发球员 = 正值(释放板凳名额)
步骤 9:计算 playoff_impact(仅限 7 月 1 日及以后)
对于在 7 月 1 日或之后进行的交易,专门评估第 21、22、23 周的冠军争夺赛周。读取 mlb-playoff-scheduler 信号文件,获取每位球员的 playoff_games 和 playoff_matchup_quality。
playoff_impact = Sum(playoff_games × matchup_quality of IN)
− Sum(playoff_games × matchup_quality of OUT)
归一化至 0-100,其中 50 表示中性。
步骤 10:通过 +15% / −20% 梯度给出 verdict
将 trade_value_delta_adjusted 表示为转出金额的百分比:
delta_pct = trade_value_delta_adjusted / Σ($_OUT)
应用原则 #8 的 verdict 梯度:
delta_pct | Verdict | 条件 |
|---|---|---|
| ≥ +15% | ACCEPT | 且 advocate/critic 变体达成一致,且没有压力 ≥80 的类别具有负的加权差值 |
| −20% < delta_pct < +15% | COUNTER(附具体方案) | 必须给出具体还价;绝不能直接拒绝 |
| ≤ −20% | REJECT | 且 prior_ev_probability ≤ 0.35(有明确的逆向选择证据) |
始终还价规则:在中间区间,即使我们的直觉是拒绝,也要按照原则 #8 给出具体还价方案(维护重复博弈中的声誉)。轻率地拒绝会让未来报价断绝;给出经过权衡的还价则能保持交易渠道畅通。
如果 REJECT 条件只部分满足(例如,delta_pct ≤ −20%,但 prior_ev_probability > 0.35):降级为 COUNTER,并要求对方提供更有诚意的方案。
每个判定都以单个动词建议结尾:ACCEPT、COUNTER (with specific proposal) 或 REJECT。不要使用“考虑”。
请参阅 resources/template.md#verdict-block 获取输出架构。使用 resources/evaluators/rubric_mlb_trade_evaluator.json 进行验证。发布所需的最低平均分:3.5。
常见模式
模式 1:用明星球员换阵容深度
- 对方用一名明星球员换我们两到三名中游球员。对方得到一个头条级名字;我们则因 2 换 1 腾出一个替补席位,获得名额价值加成。
- 常见陷阱:美元价值看起来接近,但考虑到对方主动提出这笔交易,我们仍应预期受到逆向选择折价。
- 规则:
slot_value_delta有利于我们(+$2.50 或 +$5);但仍要应用逆向选择折价——检查trade_value_delta_adjusted是否高于 +15%,以及我们送出的球员是否不属于可弃用级别。如有疑虑,选择 COUNTER(而不是 REJECT)。
模式 2:针对类别的互换
- 双方价值对等的交易,双方都瞄准各自的弱项(例如,对方用 K/QS 换我们的 HR/RBI)。
- 诊断:这笔互换符合我们的
cat_pressure,还是对方的?如果符合对方的,折价幅度会很大(对我们而言,对称性反而不利)。 - 规则:只有在我们获得的类别压力 ≥70、放弃的类别压力 ≤40,且折价后的
delta_pct ≥ +15%时,才选择 ACCEPT。否则选择 COUNTER。
模式 3:低买高卖的回归交易
- 交易涉及一名目前表现高于或低于其基础指标的球员。交叉参考
mlb-regression-flagger的信号。 - 规则:如果对方球员的
regression_index显著为正(运气不佳,理应反弹),而我们的球员显著为负(运气好,回归即将到来),则将此情况作为proposer_info_asymmetry(30-40)传递给@skills/adverse-selection-prior/(我们可能比对方掌握更好的回归信息)。由此产生的轻微折价可能让delta_pct超过 +15%。
模式 4:与伤病相关的绝望报价
- 对方球员已进入伤病名单,或正在养轻伤。报价以折扣为诱饵。
- 规则:将
proposer_info_asymmetry设为 80+(他们对伤病了解更多)。该技能会返回recommended_adjustment≈ 0.80。通常选择 COUNTER 或 REJECT,具体取决于折价后的delta_pct是否低于 −20%。
模式 5:季后赛周赛程套利(7 月起)
- 接手的球员在第 21-23 周有 20 场比赛;送出的球员有 14 场。即使剩余赛季美元价值持平,季后赛价值也会有所不同。
- 规则:对于 7 月 15 日或之后提出的任何交易,将
playoff_impact的权重加倍。利用playoff_impact的正向变化,让接近门槛的 COUNTER 案例转为 ACCEPT。
护栏
-
始终提出还价——直接 REJECT 的适用范围很窄。 根据 game-theory-principles.md #8(重复博弈中的声誉),给出合理还价并拒绝,可以让报价渠道保持畅通;轻率拒绝则会让渠道断绝。只有在
delta_pct ≤ −20%且有明确的逆向选择证据(prior_ev_probability ≤ 0.35)时,才使用 REJECT。其他所有处于中间区间的报价 → 都应给出具体方案并 COUNTER。 -
交由专用技能计算逆向选择先验——不要在此处重新计算。 第 7 步调用
@skills/adverse-selection-prior/。不要在这里重复其逻辑。该技能会用于交易、弃掉豁免球员,以及未来的 M&A/谈判技能;保持单一数据源可以避免逻辑偏差。 -
对
trade_value_delta_pre_adj应用折减,不要折减各类别的 delta。 先验会调整我们的净美元估值,而不是各类别的单项贡献。类别 delta 表不应用折减,并按模板原样显示。 -
阵容席位价值加成是对称的。 如果对方送来两名球员,而我们只送出一名,那么从我们的角度看,
slot_value_delta为负数——对方获得了替补席位的灵活性。收到 2 换 1 报价时,别忘了加上负号。 -
使用赛季剩余时间的预测值,绝不要使用全赛季或赛季至今的数据。 规则同前;用 atcr,不用 atc。
-
比例类类别需要按数量加权。 OBP、ERA、WHIP 的 delta 必须按 PA 或 IP 加权。
-
先读取
cat_pressure信号。 如果mlb-category-state-analyzer今天尚未生成数据,先运行它。 -
明确量化还价——不要只说“再多要一些”。 提出包含具体球员姓名的替代方案。
-
检查是否临近交易截止日期。 Yahoo 的截止日期是 August 6。若在截止日期前一周内提出交易,标记出来。
-
考虑对双方的影响。 如果对方是直接争夺季后赛席位的竞争者,帮助对方的交易会造成双重损失。在输出块中注明对手身份及其与我们的排名差距。
-
使用适合初学者的表达。 用户完全不了解棒球。至少要用通俗语言解释每项统计数据一次。每条面向用户的建议都必须以
ACCEPT、COUNTER (with specific package)或REJECT结尾。 -
记录决策。 通过
mlb-decision-logger将记录写入tracker/decisions-log.md,并附上完整的信号值,包括prior_ev_probability、recommended_adjustment、slot_value_delta、trade_value_delta_adjusted、裁决结果、置信度,以及will_verify_on日期(4 周后)。
快速参考
关键公式:
Counting-cat delta (cat C):
raw_delta_C = Σ(projected_C of IN) − Σ(projected_C of OUT)
Ratio-cat delta (OBP example):
PA-weighted OBP_IN and OBP_OUT, then team-level shift
Weighted cat delta:
weighted_delta_C = raw_delta_C × (cat_pressure_C / 50)
Total cat delta:
trade_cat_delta = Σ weighted_delta_C
Raw trade value:
trade_value_delta_raw = Σ($_IN) − Σ($_OUT)
Slot-value bonus:
slot_value_delta = (slots_cleared_us − slots_cleared_them) × $2.50
Pre-adjustment delta:
trade_value_delta_pre_adj = trade_value_delta_raw + slot_value_delta
Adverse-selection haircut (via @skills/adverse-selection-prior/):
trade_value_delta_adjusted = trade_value_delta_pre_adj × recommended_adjustment
Percent expression:
delta_pct = trade_value_delta_adjusted / Σ($_OUT)
Playoff impact (July+):
playoff_impact = Σ(games_21_23 × matchup_q of IN)
− Σ(games_21_23 × matchup_q of OUT)
结论判定阶梯(原则 #8):
delta_pct | 结论 | 额外门槛 |
|---|---|---|
| ≥ +15% | 接受 | 且倡导方/批评方意见一致,且没有压力值 ≥80 的类别呈负面 |
| −20% < d < +15% | 还价(附具体方案) | 始终如此——此区间内绝不直接拒绝 |
| ≤ −20% | 拒绝 | 且 prior_ev_probability ≤ 0.35 |
逆向选择先验摘要(来自 @skills/adverse-selection-prior/):
recommended_adjustment | 典型原因 | 对 delta_pct 的影响 |
|---|---|---|
| 1.00 | 对手不活跃,信息差距小 | 不变 |
| 0.95 | 对手活跃,报价对等 | 幅度降低 5% |
| 0.90 | 对手通常较活跃 | 幅度降低 10% |
| 0.85 | 对手是专家,存在一定信息差距 | 幅度降低 15% |
| 0.80 | 对手是专家,存在显著信息不对称 | 幅度降低 20% |
关键资源:
- resources/template.md:报价输入架构、逐类别 delta 表(两支球队)、价值/阵容位置/逆向选择/灵活性/季后赛区块、含理由和还价方案的结论区块,以及三个示例(接受、还价、拒绝)
- resources/methodology.md:预测来源、计数类与比率类类别的计算方法、cat_pressure 加权、价值金额、阵容位置价值的可选性、委派给 adverse-selection-prior、灵活性评分、季后赛影响,以及新增的结论判定阶梯和始终还价规则
- resources/evaluators/rubric_mlb_trade_evaluator.json:质量标准,包括逆向选择整合、阵容位置价值加成的应用,以及结论判定阶梯的正确性
所需输入:
- 交易报价(转入球员、转出球员、发起交易的对手)
- 赛季剩余时间 ATC 预测(FanGraphs)
- 当前
cat_pressure信号(来自mlb-category-state-analyzer) - 拍卖计算器的美元价值(FanGraphs)
- 每位球员的位置资格(Yahoo)
- 来自
context/opponents/<team>.md的对手类型(由mlb-opponent-profiler编写) regression_index信号(来自mlb-regression-flagger),用于低买高卖检查和信息不对称评分- 伤病状态(RotoWire)
- 如果是 7 月或之后:每位球员的
playoff_games和playoff_matchup_quality - 来自
@skills/adverse-selection-prior/的逆向选择输出(步骤 7)
生成的输出:
- 10 个类别各自的
trade_cat_delta(原始值 + 压力加权值) trade_value_delta_raw($)slot_value_delta($)trade_value_delta_pre_adj($)prior_ev_probability(来自委派的技能)recommended_adjustment(来自委派的技能)adverse_selection_adjustment(= 1 − recommended_adjustment)trade_value_delta_adjusted($)delta_pct(trade_value_delta_adjusted / Σ$_OUT)positional_flex_delta(±100)playoff_impact(0-100,7 月及之后)verdict(接受 / 还价 / 拒绝)及理由(包括来自逆向选择技能的bayesian_rationale)- 还价方案:除非结论为 ACCEPT,否则始终明确指定(即使结论为 REJECT,也要附上我们本会提出的还价方案作为背景信息)
- 写入
signals/YYYY-MM-DD-trade-<opponent>.md的信号文件 - 通过
mlb-decision-logger记录决策日志