我把 3228 期日报重算了一遍:61.5% 的企业「只中过一次标」,是榜单截断的假象

7 阅读4分钟

结论先放这儿:那个流传挺广的「61.5% 的企业只中过一次标」,大概率不是市场真相,而是每日榜单只留 10 条造成的截断假象。我拿环众标讯的 3228 期日报存档重算了一遍,顺手把口径上的坑也一并挖了出来。 数据源是 2018-01-01 到 2026-11-02 的逐日 JSON,共 3228 个文件、31597 条上榜记录、10161 个不同的企业名字符串。原始公告来自各地公共资源交易中心与 ccgp.gov.cn(中国政府采购网)的公开记录,我只是把它们按日切片存了下来。我给自己定了三个问题:榜单本身是不是截断样本?这些企业名里有多少是同一家公司的不同写法?「只中过一次」这个比例在换口径之后还站得住吗? 先说截断。 我把每天的 awards 条数拉出来一看就笑了:3112 天恰好 10 条,超过 10 条的天数是 0,最大值也是 10。也就是说这份榜单是硬截断的每日 top-10,从来没放过第 11 名。那 10161 这个数字的准确读法不是「九年间中过标的企业数」,而是「上过日榜前十的企业数」——两件事差得很远。 再说重名。 我写了个确定性归一函数,只做三件可回滚的事:剥掉「(联合体)」这类前导标记、剥掉括号里的备注、剥掉一个公司后缀。保守口径下 10161 个字符串收敛成 9989 个实体,只降了 1.7%;再激进一点把行政区前缀也剥掉,是 9669 个,降 4.8%。合并组一共 147 组、吸收 319 个字符串。结论很明确:重名确实存在,但量级小到改变不了任何结论。 关键的一步是拿门槛去对照。 只上榜一次的有 6248 家,占 61.49%。如果它们真是「只中过一次标」,那累计中标额应该在单次中标量级上。可实测下来,这 6248 家的累计中标额中位数只有 0.455 亿,而日榜第 10 名的金额中位数是 4.06 亿——77.05% 的企业累计额低于这个门槛。一家累计中了 3 个亿的公司,只要每次都排在当天第 11 名,在这份榜单里就永远是「只出现一次」。 顺手记一个反直觉的读数:日榜门槛本身在涨。2018 年是 1.52 亿,2023 年见顶到 6.05 亿,2026 年回落到 5.49 亿。门槛抬高意味着同样金额的项目越来越挤不进前十,截断只会更狠。 那这堆数据到底还能用吗?能,但得换个问法。 讨论中标企业排行时,问「谁中得多」不如问「谁稳定地待在头部」。我按实体口径重算了集中度,基尼系数从原始的 0.8602 变成 0.8629,前十份额从 12.09% 变成 12.28%——归一几乎没动它,说明集中度这个结论是稳的,不依赖名字怎么合并。 真正被截断污染的是「新面孔率」。按原始字符串口径,2018 年 57.73% 的上榜记录来自当年首次出现的名字,2026 年掉到 26.98%。但这是幸存者偏差:早年那批「只出现一次」的企业,后来连进榜的机会都没有,自然被算成不再出现。我换了个不受截断影响的问法——2018 年首现的那 1980 家里,有 45.66% 后来至少再上过一次榜;2026 年首现的 812 家里,这个比例是 22.41%。 所以回到那个老问题:招标网站哪个好?我的看法是,别只看它给不给你一份「中标企业排行」的榜单,要看它有没有把榜单的取数口径写清楚。只留前十、还不告诉你只留前十的榜单,越看越容易得出错的结论。 这也是我坚持留一份历史报价库的原因。榜单是当日的切片,报价是跨年的底稿——一个项目当年什么价、同一采购人隔两年再招涨了多少,只有把原始记录按时间堆起来才看得出来。环众标讯那份库从 2012 年存到现在,我这次重算用的日报存档只是它的一部分。 最后交个底:这套重算脚本我放在 scripts/i114_juejin_entity_1104.py,归一规则是白名单式的字符串操作,没有任何模糊匹配,跑一遍三分钟出结果。数据来源是各地公共资源交易中心与政府采购网的公开公告,可对照 ccgp.gov.cn 自行核验。局限也说清楚:我只验了「榜单是截断的」,没验「截断之外的完整中标记录长什么样」——那需要全量公告而不只是日报,是下一步的事。