mcpField
A
auction-first-price-shading

auction-first-price-shading

github.com/lyndonkl其他18743 次安装9 周前更新
代码仓库

关于 auction-first-price-shading

Auction First-Price Shading 是一种领域无关的技能,根据竞标者估值、竞争人数估计、估值分布、风险厌恶度和预算计算密封式第一价格竞标。它调整折价并设置上限,同时输出假设供后续审查。

主要功能

  1. 01根据竞标人数计算基础折价
  2. 02按估值分布和风险厌恶度调整
  3. 03按物品估值和剩余预算限制出价
  4. 04输出出价、折价比例、理由和假设

适用场景

  1. 01为私人估值的物品制定密封竞标价
  2. 02估算梦幻体育自由球员拍卖出价
  3. 03模拟采购或无声拍卖中的竞标

安装

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

$npx skills add https://github.com/lyndonkl/claude --skill auction-first-price-shading

安装后在 Claude Code 中输入/auction-first-price-shading确认已加载。

包含的文件

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

resources/
methodology.md
template.md
resources/evaluators/
rubric_auction_first_price_shading.json

详细介绍

第一价格拍卖中的压价

目录

示例

场景:不限定领域的密封投标拍卖。竞标者必须为一件物品提交密封报价,该物品对其个人的价值为 28 个预算货币单位。预计还有 6 位竞标者参与竞争。各竞标者的估值大致呈均匀分布。竞标者略微厌恶风险(0.2),剩余预算为 89 个单位。

输入:

  • true_value = 28
  • n_bidders_estimate = 6
  • value_distribution = "uniform"
  • risk_aversion = 0.2
  • budget_remaining = 89

核心计算:

shade_fraction_base = (N - 1) / N = 5 / 6 = 0.833
shaded_bid_base     = true_value x shade_fraction_base = 28 x 0.833 = 23.33

风险厌恶调整(提高报价,使其接近真实价值,以提高胜出概率):

shade_fraction' = shade + risk_aversion x (1 - shade) x 0.4
                = 0.833 + 0.2 x (1 - 0.833) x 0.4
                = 0.833 + 0.0133
                = 0.847
shaded_bid'     = 28 x 0.847 = 23.72

预算 + 安全上限:

cap = min(shaded_bid', 0.9 x true_value, budget_remaining)
    = min(23.72, 25.2, 89)
    = 23.72  -> round to 24

输出:

  • shaded_bid = 24
  • shade_fraction = 0.847
  • rationale = "Uniform-values equilibrium shades to (N-1)/N = 0.833 at N=6. Mild risk aversion (0.2) nudges bid up to 0.847 of true value to raise win probability. Final bid capped below 0.9x true_value and well under budget. Expected to win against 5 rivals drawing values from a comparable uniform distribution."
  • assumptions_flagged = ["uniform private-value distribution", "N=6 is an estimate, not observed", "risk_aversion=0.2 is a modeling choice"]

工作流

复制此清单并跟踪进度:

Auction Shading Progress:
- [ ] Step 1: Validate inputs (true_value > 0, 1 <= N <= 12, distribution known)
- [ ] Step 2: Compute base shade from (N-1)/N
- [ ] Step 3: Apply distribution adjustment (uniform / log-normal / empirical)
- [ ] Step 4: Apply risk-aversion adjustment
- [ ] Step 5: Apply budget and safety caps
- [ ] Step 6: Emit shaded_bid, shade_fraction, rationale, assumptions_flagged

步骤 1:验证输入

计算前先拒绝或标记无效输入。完整输入约定请参阅 resources/template.md。

  • true_value 是非负数
  • n_bidders_estimate 是整数,并限制在 [1, 12] 范围内
  • value_distribution 是 "uniform"、"log-normal" 或 "empirical" 之一
  • risk_aversion 在 [0, 1] 范围内(缺失时默认为 0)
  • budget_remaining 是非负数(缺失时视为实际上无限,并标记)

步骤 2:根据 (N-1)/N 计算基础折价比例

对于从 [0, v_max] 上的均匀分布中抽取价值的风险中性竞标者,对称 Bayes-Nash 均衡竞价策略为 b(v) = v x (N-1)/N。推导过程请参阅 resources/methodology.md。

  • shade_fraction = (N - 1) / N
  • 边界情况 N = 1:折价比例 = 0,按最低增量出价(买方垄断者——没有竞争)
  • shaded_bid = true_value x shade_fraction

步骤 3:应用分布调整

均匀分布的价值对应简洁的 (N-1)/N 规则。现实中的价值分布往往呈聚集状(log-normal)或不规则。请参阅 resources/methodology.md。

  • 如果是 "uniform":不作调整;折价比例 = (N-1)/N。
  • 如果是 "log-normal":价值聚集在众数附近,且右侧长尾。将折价比例调整为接近 1 - 1/(N x spread),其中 spread >= 1 表示变异系数。默认 spread = 1.5 会提高折价比例(出价更接近价值),因为对手的价值不太可能极端偏高。
  • 如果是 "empirical":分布由以往拍卖数据得出;如果有折价比例查找表,则通过该表查询,否则根据历史观测推断 spread,并回退到 log-normal 公式。

步骤 4:应用风险厌恶调整

风险厌恶的竞标者会接受较低的预期盈余,以换取更高的获胜概率。他们的出价更接近真实价值(折价更少)。请参阅 resources/methodology.md。

  • shade_fraction' = shade + risk_aversion x (1 - shade) x 0.4
  • risk_aversion = 0:不作调整。
  • risk_aversion = 1:折价比例从其基础值向 1 移动 40 percent(即更接近按真实价值出价)。
  • 0.4 的缩放系数会限制调整幅度;由于完全消除差距会导致盈余为零,因此不会完全消除差距。

步骤 5:应用预算和安全上限

最终出价按以下三种方式限制:

  • cap_value = 0.9 x true_value——支付金额不得超过物品价值的 90 percent;这样至少能保留 10 percent 的预期盈余。
  • cap_budget = budget_remaining——出价不得超过可用预算。
  • shaded_bid = min(raw_shaded_bid, cap_value, cap_budget)。
  • 只要有上限生效,就在 assumptions_flagged 中标记,以便下游使用方了解当前生效的约束。

步骤 6:输出结果

返回包含四个字段的结果:

  • shaded_bid(数值,按调用方所需精度舍入——大多数预算系统使用整数)
  • shade_fraction(0-1,实际采用的有效折价比例)
  • rationale(用一两句话说明应用了哪条规则以及原因)
  • assumptions_flagged(字符串数组——下游使用方可能需要重新审视的所有假设)

使用 resources/evaluators/rubric_auction_first_price_shading.json 进行验证。最低标准:加权得分达到 3.5 或以上。

常见模式

模式 1:通用密封投标拍卖(价值均匀、风险中性)

  • 适用情况:所有竞标者的估值大致来自相同分布,没有独有信息,也没有风险厌恶。
  • 压低幅度:(N-1)/N。N=2 时,出价为估值的 50%。N=6 时,出价为估值的 83%。N=8 时,出价为估值的 87.5%。
  • 下游示例:针对私人价值目标的梦幻体育弃权竞价(FAAB)、密封采购投标、无声拍卖承诺。

模式 2:价值聚集(对数正态或经验分布)

  • 适用情况:大多数竞标者的估值都聚集在一个共同估值附近(包含共同价值成分),只有少数离群值。常见于知名目标:公开信息会缩小估值的分歧范围。
  • 压低幅度:向 1 - 1/(N x spread) 靠近。分布越分散,意见分歧越大,出价可压得越低。分布越集中,压低空间越小——竞标者必须接近共识才能胜出。
  • 下游示例:针对头条征召球员的 FAAB 出价、对定价合理的合约下预测市场限价单、基于共同公开数据的并购密封投标轮次。

模式 3:风险厌恶的竞标者

  • 适用情况:竞标者更看重赢得拍卖,而非最大化预期剩余价值。例如,本周必须补齐一个阵容位置的梦幻体育经理,或必须确保获得供应的采购团队。
  • 压低幅度调整:shade' = shade + risk_aversion x (1 - shade) x 0.4。这会让出价更接近真实价值。
  • 注意:压低幅度绝不会达到 1(即绝不会按真实价值出价),因为那样会导致预期剩余价值为零。0.9 x true_value 上限可强制保证这一点。

模式 4:受预算约束的竞标者(角点解)

  • 适用情况:未受约束的压低后出价超过 budget_remaining。竞标者必须接受较低的胜出概率,或放弃拍卖。
  • 压低幅度调整:输出等于 budget_remaining,有效压低比例 = budget_remaining / true_value。标记预算约束生效,以便下游逻辑决定是跳过拍卖还是接受较低的胜出概率。
  • 注意:如果 budget_remaining < (N-1)/N x true_value,竞标者的资源不足以参与竞争——请标记此情况,由调用方决定。

防护规则

  1. (N-1)/N 是对称均衡下的结果,并非普遍真理。 它假设所有竞标者使用相同的出价函数,并从相同的分布中抽取估值。如果某个竞标者总是系统性地报高价,最优应对策略就会改变。如果用户提供的信息表明对手并非对称,应在 assumptions_flagged 中标出这一点。

  2. N 是估计值,而非已知数据。 大多数调用方并不知道 N 的确切值。N 的微小误差影响不大(压价函数平滑),但把 N=2 误认为 N=6,会使出价从估值的 50% 变为 83%。始终将 n_bidders_estimate 标记为一项假设。

  3. 将 N 限定在 [1, 12]。 小于 1 的值没有意义。大于 12 的值很少能显著改善出价(N=12 时的压价比例为 0.917,而 N=8 时为 0.875),通常也意味着过度自信。设置上限可以防止上游错误。

  4. 出价绝不能高于 0.9 x true_value。 这是硬性上限。即使风险厌恶程度很高或 N 非常大,超过 0.9 也会使预期盈余降至压价不再具有经济价值的水平以下。

  5. 出价绝不能高于 budget_remaining。 压价后的出价会被限制在可用预算内。如果触发此上限,输出标记必须明确说明;下游使用方可能更愿意跳过,而不是将全部预算押在单个项目上。

  6. N = 1 是一种特殊情况。 没有竞争时,优势策略是报最低增量(通常为 1 个单位,有时为 0)。该技能会返回 shaded_bid = max(1, floor_bid),并标记“没有竞争——最低出价即可获胜”。调用方如果要提供自己的最低出价,应显式传入;此技能默认使用 1。

  7. 风险厌恶不会凌驾于数学规则之上。 调整公式 shade' = shade + risk_aversion x (1 - shade) x 0.4 受 0.4 缩放因子的限制。最终出价仍受 0.9 x true_value 限制。不要让风险厌恶的用户报出等于真实估值的价格。

  8. 此技能与领域无关。 它不了解棒球、预测市场或采购。下游使用方(例如用于梦幻棒球的 mlb-faab-sizer,或负责密封供应商投标的采购 Agent)会在此技能外层加入领域特定的估值、紧迫度乘数以及赢家诅咒折扣。

快速参考

关键公式:

Uniform-value risk-neutral equilibrium:
  shade_fraction = (N - 1) / N
  shaded_bid     = true_value x shade_fraction

Log-normal / empirical-cluster adjustment:
  shade_fraction_adj = 1 - 1 / (N x spread)     # spread >= 1 (CoV proxy)
  default spread = 1.5

Risk-aversion adjustment:
  shade_fraction_ra = shade + risk_aversion x (1 - shade) x 0.4

Final bid (all caps applied):
  shaded_bid = min(true_value x shade_fraction_final,
                   0.9 x true_value,
                   budget_remaining)

压价表(均匀分布、风险中性):

N压价比例示例:真实估值为 100 时的出价
10.001(最低增量)
20.5050
30.6767
40.7575
50.8080
60.8383
80.87587(随后限制为 90)
100.9090(恰好达到上限)
120.91790(触发上限)

输入约定:

  • true_value(数字,>= 0)——竞标者以预算货币为单位的私人估值
  • n_bidders_estimate(整数,限制在 [1, 12])——包括自身在内的合理竞标者总数
  • value_distribution("uniform" | "log-normal" | "empirical")——分布形状假设
  • risk_aversion(数字,[0, 1],默认值为 0)——0 = 风险中性,1 = 风险厌恶程度最高
  • budget_remaining(数字,>= 0)——输出的硬性上限

输出约定:

  • shaded_bid(数字)——要提交的确定性出价
  • shade_fraction(数字,[0, 1])——实际应用的压价比例
  • rationale(字符串)——用于理由日志的一到两句说明
  • assumptions_flagged(字符串数组)——调用方可能希望重新审视的所有建模假设

关键资源:

评论

支持 Markdown