5D Library › 机制设计、激励相容与谈判博弈的数学模型 · English
第八章 实践与预注册试验
注
本章的核查表是准备谈判的思考工具,不是法律意见。 合同条款、违约金与罚则的效力因法律管辖而异,签署前请咨询具备当地执业资格的律师。核查表的目的是帮助你看清自己与对方的处境,不是帮助你欺骗对方:第五章说明,只有真实、可核查的承诺才可能稳定地起作用。
第一部分 四步机制与议价核查表
这份核查表供一个人或一个团队在一场重要谈判、或在设计一套考核与合约之前使用。四步分别对应前面几章的四个模型。
- 双方 BATNA 的量化。 把自己的最佳替代方案写成一个数字(而不是「我们还有别的选择」);对对方的 BATNA 给出一个区间而不是一个点;由此算出可能达成协议的区间(ZOPA)。同时记住第四章的区分:BATNA 决定底线,但一个不够好的退路未必能提高你的份额。(第四章)
- 等待成本与现金流的耐心审计。 每拖延一个月,自己与对方各损失多少(资金成本、闲置产能、错过的季节)?谁更急?有没有办法在谈判开始前降低自己的等待成本(例如安排过桥资金)?(第四章)
- 从口头保证切换为高成本、可核查的信号。 列出自己想让对方相信的每一个说法,问:这个说法有没有一个对「说假话的人」更昂贵、对「说真话的人」较便宜、违背时可以核查和执行的承诺形式?(第五章)
- 核心 KPI 的古德哈特漏洞红队测试。 对合同或考核中的每一个关键指标,问:不创造任何真实价值的情况下,把它推高一点最便宜的办法是什么?这个办法比真实改进便宜吗?指标是否由不受它奖惩的人独立核查?(第六章)
推导
把核查表用在一场虚构的谈判上:一家小型家具工坊(A)与一家酒店集团(B)商谈一年期的供货合同。所有数字都是编造的,以千元计;达成协议共创造 500 的联合剩余。
# Four-step checklist on a FICTIONAL negotiation: a furniture workshop (A) and a hotel
# group (B), one-year supply contract; invented figures in thousands; joint surplus 500.
SURPLUS, bA = 500, 120 # A's BATNA: sell the capacity elsewhere
print("step 1 BATNAs and the zone of possible agreement (A estimates B's BATNA)")
for bB in (200, 250, 300):
zopa = SURPLUS - bA - bB
print(f" B's BATNA {bB}: ZOPA {zopa}; split the difference: A gets"
f" {bA + zopa / 2:.0f}")
# Step 2: monthly cost of delay r. With frequent alternating offers A's share of
# the whole surplus tends to rB / (rA + rB); the BATNA binds only if it is larger.
print("step 2 patience audit (B's BATNA 250)")
for label, rA, rB in (("A short of cash", 0.04, 0.01),
("A with bridge loan", 0.01, 0.01)):
inner = SURPLUS * rB / (rA + rB)
print(f" {label:18s}: rA {rA:.2f}, rB {rB:.2f} -> patience share {inner:.0f};"
f" A gets {max(inner, bA):.0f}")
# Step 3: penalty P if deliveries fail; failure probability 0.05 (reliable) or 0.40
# (unreliable); the contract margin is worth 150 to either type.
MARGIN, p_rel, p_unrel = 150, 0.05, 0.40
print("step 3 penalty clause as a separating signal")
print(f" unreliable declines if P > {MARGIN / p_unrel:.0f}; reliable signs if"
f" P < {MARGIN / p_rel:.0f}")
print(f" P = 400: expected cost reliable {p_rel * 400:.0f},"
f" unreliable {p_unrel * 400:.0f}")
# Step 4: cost per point to move each KPI honestly vs by gaming; independent check?
kpis = [("on-time, supplier-reported", 5.0, 0.5, False),
("on-time, hotel receiving log", 5.0, 6.0, True),
("guest complaints about furniture", 8.0, 2.0, False),
("defects in random 5 % inspection", 4.0, 9.0, True)]
print("step 4 KPI red team: honest | gaming | independent check")
for name, honest, game, checked in kpis:
flag = "LEAK" if game < honest and not checked else "ok"
chk = "yes" if checked else "no"
print(f" {name:33s} {honest:4.1f} | {game:4.1f} | {chk:3s} -> {flag}")
# step 1 BATNAs and the zone of possible agreement (A estimates B's BATNA)
# B's BATNA 200: ZOPA 180; split the difference: A gets 210
# B's BATNA 250: ZOPA 130; split the difference: A gets 185
# B's BATNA 300: ZOPA 80; split the difference: A gets 160
# step 2 patience audit (B's BATNA 250)
# A short of cash : rA 0.04, rB 0.01 -> patience share 100; A gets 120
# A with bridge loan: rA 0.01, rB 0.01 -> patience share 250; A gets 250
# step 3 penalty clause as a separating signal
# unreliable declines if P > 375; reliable signs if P < 3000
# P = 400: expected cost reliable 20, unreliable 160
# step 4 KPI red team: honest | gaming | independent check
# on-time, supplier-reported 5.0 | 0.5 | no -> LEAK
# on-time, hotel receiving log 5.0 | 6.0 | yes -> ok
# guest complaints about furniture 8.0 | 2.0 | no -> LEAK
# defects in random 5 % inspection 4.0 | 9.0 | yes -> ok第一步显示,A 对 B 的退路估计得越高,可达成协议的区间越窄:B 的 BATNA 若为 250,区间是 130,「各让一半」意味着 A 得到 185。第二步改用轮流出价的思路:A 现金紧张、每月等待成本是 B 的四倍时,单凭耐心 A 只能分到 100,低于自己的退路 120,于是外部选择「激活」,A 得到的恰好是 120——比第一步「各让一半」的 185 少得多。如果 A 在谈判前安排了过桥贷款、使双方等待成本相同,A 的份额升到 250。这说明,对 A 而言,改善耐心比改善退路更值钱;也说明第一步与第二步用的是两种不同的模型,哪一个更贴近这场谈判,需要 A 自己判断。
第三步把「我们一定按时交货」换成违约罚金:罚金高于 375 时,不可靠的供应商(违约概率 40%)签约就不划算;只要低于 3,000,可靠的供应商(违约概率 5%)仍愿意签。罚金为 400 时,可靠供应商的期望成本只有 20,不可靠供应商却是 160:这正是第五章的单交叉条件。第四步的红队测试标出了两个漏洞:由供应商自己报告的按时交货率与「客人对家具的投诉数」,推高它们的「操纵成本」都低于真实改进,而且没有独立核查;改由酒店收货记录与随机抽检来计量后,漏洞消失。
注
一次虚构的谈判不是证据。 上面的数字只用来展示核查表的计算方式。现实谈判中,对方的 BATNA 与等待成本只能估计,估计本身就有误差;核查表的价值在于迫使你把这些判断写下来、事后可以对照,而不在于算出一个「正确」的答案。
第二部分 预注册双人随机对照试验方案
问题
谈判前花 10 分钟填写一张结构化表格——写下己方 BATNA 与底线、估计对方的 BATNA、列出可能的联合收益交换——与花同样时间阅读一份常规的谈判技巧材料相比,能否提高双方在一场多议题模拟谈判中的联合收益?
证据
为什么联合收益常常被留在桌上。 汤普森与黑斯蒂发现,多数谈判者在开始时假定对方的利益与自己完全相反(「固定馅饼」的知觉),并且常常没有发现双方利益完全一致的议题;越早准确了解对方利益的人,结果越好 (L. Thompson and Hastie 1990)。汤普森与赫雷贝克对 32 项实验的元分析把这种在利益一致的议题上仍然达成对双方都更差的协议的现象称为「双输协议」,并讨论了它的成因 (L. Thompson and Hrebec 1996)。汤普森 1991 年的实验发现,主动提供或询问对方利益方面的信息,都能提高判断的准确性并带来更有整合性的协议,即使只有一方这样做也有帮助,而且分享信息的一方并没有因此吃亏 (L. L. Thompson 1991)。加林斯基等人发现,站在对方角度思考(观点采择)有助于发现隐藏的协议、提高联合收益 (Galinsky et al. 2008)。德德勒、魏因加特与权对 28 项研究的元分析发现,亲社会动机的谈判者在不轻易让步时获得更高的联合收益,并指出各研究对「未达成协议的组」的处理方式会影响结论 (De Dreu, Weingart, and Kwon 2000)。整合性谈判的经典实验范式可以追溯到普鲁伊特与刘易斯 (Pruitt and Lewis 1975) 与雷法的论著 (Raiffa 1982)。
这些研究提示,结构化的准备可能有用,但没有一项研究直接检验过本方案中的 10 分钟表格。本试验因此预先设定一个「值得采取行动」的最小效应,而不是从已有研究中借用效应量。
谈判案例
试验使用一个为本书设计的五议题供货合同案例,结构参照已发表研究中常用的多议题练习:两个分配性议题(价格、交货期:一方之得即另一方之失)、两个整合性议题(保修期与付款条件:双方的重视程度不同,可以交换)与一个一致性议题(包装标准:双方偏好相同)。每个议题有 5 个选项,每个角色只看到自己的点数表;两个角色未达成协议时各得 1,400 点(BATNA)。
推导
# Five-issue supply-contract case for the Chapter 8 trial (designed for this book): two
# distributive, two integrative and one compatible issue; 5 options each; BATNA 1,400.
from itertools import product
ISSUES = { # points for role A (buyer side), points for role B (supplier)
"price": ([0, 300, 600, 900, 1200], [1200, 900, 600, 300, 0]),
"delivery date": ([0, 200, 400, 600, 800], [800, 600, 400, 200, 0]),
"warranty": ([0, 100, 200, 300, 400], [1600, 1200, 800, 400, 0]),
"payment terms": ([1600, 1200, 800, 400, 0], [0, 100, 200, 300, 400]),
"packaging": ([0, 150, 300, 450, 600], [0, 150, 300, 450, 600]),
}
BATNA = 1400
deals = []
for combo in product(range(5), repeat=5):
a = sum(ISSUES[n][0][k] for n, k in zip(ISSUES, combo))
b = sum(ISSUES[n][1][k] for n, k in zip(ISSUES, combo))
deals.append((a + b, a, b, combo))
ok = [d for d in deals if d[1] >= BATNA and d[2] >= BATNA]
best = max(deals)[0]
joint = {d[3]: d[0] for d in deals}
print(f"{len(deals)} possible agreements; {len(ok)} beat both BATNAs")
print(f"maximum joint points {best}: warranty 0, payment terms 0, packaging 4;")
print(" price and delivery only move points between the roles")
print(f"split every issue (2,2,2,2,2): joint {joint[(2, 2, 2, 2, 2)]}")
print(f"trade warranty for payment, split packaging: joint {joint[(2, 2, 0, 0, 2)]}")
top = [d for d in ok if d[0] == best]
print(f"feasible agreements at {best}: {len(top)}; A's points among them "
f"{min(d[1] for d in top)}-{max(d[1] for d in top)}")
print(f"impasse: joint {2 * BATNA} (sum of BATNAs); outcome range {2 * BATNA}-{best}")
# 3125 possible agreements; 2295 beat both BATNAs
# maximum joint points 6400: warranty 0, payment terms 0, packaging 4;
# price and delivery only move points between the roles
# split every issue (2,2,2,2,2): joint 4600
# trade warranty for payment, split packaging: joint 5800
# feasible agreements at 6400: 25; A's points among them 2200-4200
# impasse: joint 2800 (sum of BATNAs); outcome range 2800-64003,125 种可能的协议中有 2,295 种对双方都好于 BATNA。联合点数最高为 6,400:保修期取对 B 最有利的选项、付款条件取对 A 最有利的选项,包装取双方都喜欢的选项;价格与交货期只在两个角色之间转移点数。每个议题都「各让一半」只得到 4,600;做到了整合性交换、却在一致性议题上仍然折中,得到 5,800——这正是「双输」的一种形态。未达成协议时联合点数为两人 BATNA 之和 2,800。
设计
| 要素 | 规定 |
|---|---|
| 参与者 | 年满 18 岁的成年人,通过大学被试库与社区及在线广告招募;以当地通用语言流利阅读;不从作者的社群、学员、客户或牌卡用户中招募,也不从作者创办的 Asia Influencer X 与 Yafu Global 的客户中招募 |
| 排除 | 以前做过本案例或高度相似的案例;同一场次中彼此认识;职业为专职谈判或采购代理且受过系统谈判训练(不入组;如需研究这一人群,另设探索性研究) |
| 配对与随机化单位 | 同一场次到场的参与者随机配成互不相识的两人组;以两人组为单位按 1:1 随机分配,按场次区组分层;配对之后才由计算机生成的隐蔽序列揭示分组;组内角色(A 或 B)再随机分配 |
| 两人接受同一条件 | 两人组中的两个人都接受同一条件。理由:主要结局是两人组层面的联合收益;如果只给一方干预,结果会混入「只有一方准备」的不对称效应,那是另一个问题(汤普森 1991 年的发现提示它值得单独检验,可作为后续的析因试验) |
| A 组 | 谈判前 10 分钟,各自独立填写结构化表格:己方 BATNA 与底线;对方 BATNA 的估计区间;每个议题对己方的重要性排序、对对方重要性的猜测;可能的交换与可能双方一致的议题 |
| B 组(积极对照) | 同样 10 分钟,各自阅读一份篇幅相同的常规谈判技巧材料(自信、倾听、先开价、不要过早让步等通用建议),不含结构化表格 |
| 谈判 | 两组相同:每人私下阅读角色材料与点数表 10 分钟,面对面谈判最多 25 分钟,在统一的协议表上记录每个议题的选项;报酬为固定出场费加与自己点数成正比的奖金 |
| 盲法 | 参与者知道有「两种准备材料」,但不知道假设;主持场次的研究助理只分发密封材料、不参与分析;主要结局由协议表自动计算,分析者在揭盲前不知道分组 |
| 主要结局(唯一) | 两人组联合点数:达成协议时为 A 与 B 点数之和;未达成协议时为两人 BATNA 之和(2,800)。可能范围 2,800–6,400 |
| 次要结局 | 达成协议的比例;每个角色各自的点数;是否达到最大联合点数 6,400;一致性议题上是否出现「双输」;谈判用时;主观价值量表(SVI)(Curhan, Elfenbein, and Xu 2006) |
| 分析 | 意向性分析:所有随机化后开始谈判的两人组;线性模型,自变量为分组,协变量为场次区组;双侧 ;预先设定的敏感性分析:基于秩的检验、排除未达成协议组的分析(只作参考,不作判定) |
注
为什么把未达成协议计为 BATNA 之和。 如果只分析达成协议的两人组,干预一旦同时提高了联合收益和僵局率,结果就会被高估;德德勒等人的元分析也发现,各研究对未达成协议组的处理方式会影响结论 (De Dreu, Weingart, and Kwon 2000)。把僵局计为 2,800,既符合模型(未达成协议时双方确实各得 BATNA),又让主要结局同时反映「做大蛋糕」与「谈崩」两种结果。达成率作为次要结局单独报告。
样本量
推导
# Sample size, dyad-randomised trial; unit = dyad, both members in the same arm.
# A: 10-minute structured preparation form; B: 10 minutes of standard negotiation tips.
# Primary outcome: joint points (impasse = sum of BATNAs), effect in SD units.
# Two-sided alpha 0.05; normal approximation, + 1 per arm.
import math
from statistics import NormalDist
z = NormalDist().inv_cdf
def per_arm(d, power=0.90, alpha=0.05):
return math.ceil(2 * (z(1 - alpha / 2) + z(power)) ** 2 / d ** 2) + 1
print(" effect (SD) | dyads per arm, 80 % power | 90 % power")
for d in (0.25, 0.30, 0.35, 0.40, 0.50):
print(f" {d:.2f} | {per_arm(d, 0.80):4d} |"
f" {per_arm(d):4d}")
n = per_arm(0.35)
recruit = math.ceil(n / 0.90)
print(f"chosen: 0.35 SD, 90 % power -> {n} analysable dyads per arm")
print(f"allowing 10 % unusable dyads: randomise {recruit} per arm, {2 * recruit} dyads,"
f" {4 * recruit} people")
# effect (SD) | dyads per arm, 80 % power | 90 % power
# 0.25 | 253 | 338
# 0.30 | 176 | 235
# 0.35 | 130 | 173
# 0.40 | 100 | 133
# 0.50 | 64 | 86
# chosen: 0.35 SD, 90 % power -> 173 analysable dyads per arm
# allowing 10 % unusable dyads: randomise 193 per arm, 386 dyads, 772 people以 0.35 个标准差为最小关注效应、90% 把握度计算,每组需要 173 个可分析的两人组;考虑约 10% 的两人组因一方缺席或违反程序而无法使用,每组随机化 193 组,共 386 组、772 人。如果真实效应只有 0.25 个标准差,每组需要 338 组;本试验不打算检测那么小的效应。
判定规则
推导
# Decision rule, fixed in advance. d = arm A minus arm B in mean joint points (impasse =
# 2,800) / pooled SD; 95 % CI from the linear model (arm + session block). SESOI 0.35.
SESOI = 0.35
def verdict(d, lo, hi, fidelity_ok, breach):
if breach:
return f"d = {d:+.2f}: NOT INTERPRETABLE - concealment or blinding breached"
if not fidelity_ok:
return f"d = {d:+.2f}: NOT INTERPRETABLE - < 80 % of arm-A forms as specified"
if lo >= SESOI: v = "raises joint gains by at least the smallest effect of interest"
elif lo > 0: v = "raises joint gains; size not shown to reach 0.35 SD"
elif hi < 0: v = "LOWERS joint gains"
elif lo >= -SESOI and hi <= SESOI: v = "no difference worth acting on"
else: v = "unclear: the interval is too wide to decide"
return f"d = {d:+.2f} ({lo:+.2f} to {hi:+.2f}): {v}"
for case in ((0.62, 0.41, 0.83, True, False), (0.25, 0.04, 0.46, True, False),
(0.05, -0.16, 0.26, True, False), (-0.30, -0.51, -0.09, True, False),
(0.10, -0.25, 0.45, True, False), (0.70, 0.49, 0.91, False, False),
(0.40, 0.19, 0.61, True, True)):
print(verdict(*case))
print("secondary (agreement rate, each role's points, SVI): reported with intervals,")
print("never decisive; a rise in impasses is reported prominently whatever d shows")
# d = +0.62 (+0.41 to +0.83): raises joint gains by at least the smallest effect of interest
# d = +0.25 (+0.04 to +0.46): raises joint gains; size not shown to reach 0.35 SD
# d = +0.05 (-0.16 to +0.26): no difference worth acting on
# d = -0.30 (-0.51 to -0.09): LOWERS joint gains
# d = +0.10 (-0.25 to +0.45): unclear: the interval is too wide to decide
# d = +0.70: NOT INTERPRETABLE - < 80 % of arm-A forms as specified
# d = +0.40: NOT INTERPRETABLE - concealment or blinding breached
# secondary (agreement rate, each role's points, SVI): reported with intervals,
# never decisive; a rise in impasses is reported prominently whatever d shows示例结果是编造的。如果 A 组中按规定完成表格的比例低于 80%,或者分组隐蔽与盲法被破坏,无论结果如何都写「不可解释」。只有当效应的置信区间下限不低于 0.35 个标准差时,报告才写「结构化表格使联合收益提高了至少最小关注的幅度」。如果联合收益上升但僵局增多,报告必须同时突出说明。
这项试验不能说明什么
第一,这是一个有固定点数表的实验室谈判,真实的商务谈判有长期关系、法律约束与真实的金钱和声誉,效果未必能外推。第二,A 组的表格同时包含三个成分(BATNA 量化、对方 BATNA 估计、交换清单),即使结果为阳性,也不能说明是哪一个起了作用。第三,被试库中的参与者与职业谈判者可能很不一样。第四,试验只检验了「两人都准备」的情形,不能说明只有一方准备时会怎样,也不能说明准备会不会让一方以牺牲另一方为代价获益(每个角色的点数作为次要结局报告)。第五,案例中整合性与一致性议题的比例是设计出来的;现实谈判中可交换的价值可能更多,也可能少得多。
伦理与利益冲突
试验须经独立伦理委员会批准,参与者签署知情同意,并在第一组参与者入组之前登记方案和分析计划 (Nosek et al. 2018)。谈判中不使用欺骗,参与者知道自己的报酬取决于自己的点数;任何人可以随时退出而不需要说明理由,退出者仍获得出场费。
利益披露
作者以 5D Library 的著作(包括本书)作为其社群课程、升维牌卡(5D Ascension Cards,Dimensional Shift Card Decks)与 Yafu AI 知识库的方法论基础,因此与本书主题有商业利益关系。此外,作者创办并经营 Asia Influencer X 与 Yafu Global,日常业务涉及与品牌方及合作伙伴的商务谈判与合约设计,因此与本书主题有直接的商业利益关系;书中不使用其客户数据,第八章的试验不从其客户中招募。本书不推销任何课程、牌卡或服务;第八章的试验设计为由独立于作者企业的研究人员实施和分析,不从作者的社群、学员或客户中招募;书中所有代码与研究方案均公开,供任何人检验。为限制利益的影响:案例材料、表格与分析代码在入组前公开;无论结果如何,结果、数据和代码都将公开。
参考文献
Fan, Y. (2026). Mechanism Design, Incentive Compatibility and the Game Theory of Negotiation: From Vickrey Auctions and the Myerson-Satterthwaite Theorem to Nash Bargaining, Read Beside Classical Chinese Legalist and Confucian Institutional Thought [机制设计、激励相容与谈判博弈的数学模型] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23765012 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).