关于 auction-first-price-shading
Auction First-Price Shading 是一种领域无关的技能,根据竞标者估值、竞争人数估计、估值分布、风险厌恶度和预算计算密封式第一价格竞标。它调整折价并设置上限,同时输出假设供后续审查。
主要功能
- 01根据竞标人数计算基础折价
- 02按估值分布和风险厌恶度调整
- 03按物品估值和剩余预算限制出价
- 04输出出价、折价比例、理由和假设
适用场景
- 01为私人估值的物品制定密封竞标价
- 02估算梦幻体育自由球员拍卖出价
- 03模拟采购或无声拍卖中的竞标
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lyndonkl/ claude --skill auction-first-price-shading安装后在 Claude Code 中输入/auction-first-price-shading确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
resources/methodology.mdtemplate.mdresources/evaluators/rubric_auction_first_price_shading.json详细介绍
第一价格拍卖中的压价
目录
示例
场景:不限定领域的密封投标拍卖。竞标者必须为一件物品提交密封报价,该物品对其个人的价值为 28 个预算货币单位。预计还有 6 位竞标者参与竞争。各竞标者的估值大致呈均匀分布。竞标者略微厌恶风险(0.2),剩余预算为 89 个单位。
输入:
true_value = 28n_bidders_estimate = 6value_distribution = "uniform"risk_aversion = 0.2budget_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 = 24shade_fraction = 0.847rationale = "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,竞标者的资源不足以参与竞争——请标记此情况,由调用方决定。
防护规则
-
(N-1)/N是对称均衡下的结果,并非普遍真理。 它假设所有竞标者使用相同的出价函数,并从相同的分布中抽取估值。如果某个竞标者总是系统性地报高价,最优应对策略就会改变。如果用户提供的信息表明对手并非对称,应在assumptions_flagged中标出这一点。 -
N 是估计值,而非已知数据。 大多数调用方并不知道 N 的确切值。N 的微小误差影响不大(压价函数平滑),但把 N=2 误认为 N=6,会使出价从估值的 50% 变为 83%。始终将
n_bidders_estimate标记为一项假设。 -
将 N 限定在
[1, 12]。 小于 1 的值没有意义。大于 12 的值很少能显著改善出价(N=12 时的压价比例为 0.917,而 N=8 时为 0.875),通常也意味着过度自信。设置上限可以防止上游错误。 -
出价绝不能高于
0.9 x true_value。 这是硬性上限。即使风险厌恶程度很高或 N 非常大,超过 0.9 也会使预期盈余降至压价不再具有经济价值的水平以下。 -
出价绝不能高于
budget_remaining。 压价后的出价会被限制在可用预算内。如果触发此上限,输出标记必须明确说明;下游使用方可能更愿意跳过,而不是将全部预算押在单个项目上。 -
N = 1是一种特殊情况。 没有竞争时,优势策略是报最低增量(通常为 1 个单位,有时为 0)。该技能会返回shaded_bid = max(1, floor_bid),并标记“没有竞争——最低出价即可获胜”。调用方如果要提供自己的最低出价,应显式传入;此技能默认使用 1。 -
风险厌恶不会凌驾于数学规则之上。 调整公式
shade' = shade + risk_aversion x (1 - shade) x 0.4受 0.4 缩放因子的限制。最终出价仍受0.9 x true_value限制。不要让风险厌恶的用户报出等于真实估值的价格。 -
此技能与领域无关。 它不了解棒球、预测市场或采购。下游使用方(例如用于梦幻棒球的
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 时的出价 |
|---|---|---|
| 1 | 0.00 | 1(最低增量) |
| 2 | 0.50 | 50 |
| 3 | 0.67 | 67 |
| 4 | 0.75 | 75 |
| 5 | 0.80 | 80 |
| 6 | 0.83 | 83 |
| 8 | 0.875 | 87(随后限制为 90) |
| 10 | 0.90 | 90(恰好达到上限) |
| 12 | 0.917 | 90(触发上限) |
输入约定:
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(字符串数组)——调用方可能希望重新审视的所有建模假设
关键资源:
- resources/template.md:完整的输入/输出约定和一个完整示例
- resources/methodology.md:
(N-1)/N的正式推导、对数正态调整、风险厌恶调整、收益等价定理,以及 N=2、N=6、N=8 时的三个完整示例 - resources/evaluators/rubric_auction_first_price_shading.json:包含八项标准和加权评分的评分细则