Anthropic 的工程文化:六条可以迁移到交易所的工程纪律
一篇学习记录。起点是一篇领英文章,终点是一份能直接落到我自己交易所上的工程实践清单。
缘起:一篇拆简历的文章
事情从一篇领英(LinkedIn)文章开始——招聘从业者塞巴斯蒂安·夸德罗斯(Sebastian Cuadros)写的《我看了 1680 份 Anthropic 简历》。
他的做法挺硬核:把所有在领英上把 Anthropic 列为现任雇主的人全捞出来,一共 5306 人,再筛出 1680 个真正做工程岗的,然后去分析这些人加入前留下的 7986 段过往工作经历。
结论有点反直觉:这支团队的画像不像外界想象的「研究员密集型 AI 实验室」,反而更像一家在快速扩张的基础设施公司(infrastructure company)。一个佐证数据是,只有约 13.7% 的工程师有博士学位——差不多七个人里才一个博士,跟「实验室」的刻板印象正好相反。
第一个概念澄清:这里的 infra 指什么
我一开始卡在「infra」这个词上。它在这篇文章里不是机房、服务器那种狭义的硬件设施,而是指大规模分布式系统工程这一整类能力:
支撑模型训练的工程:把成千上万张 GPU 编排起来、做数据管道(data pipeline)、调度与容错;
把模型对外提供服务的部分:推理服务(inference serving)、流量调度、稳定性保障,也就是站点可靠性工程(SRE)那一块;
支撑这一切运转的内部平台、数据仓库、监控体系。
换句话说,Anthropic 招的是「能把复杂系统稳稳跑起来、扩上去」的资深工程师,而不是清一色的论文型研究员。
人才来源:两个集群
看它挖人的来源,画像就清楚了。过往雇主里谷歌排第一(405 人),其次 Meta、亚马逊、微软、Stripe、苹果、斯坦福、DeepMind、Airbnb、OpenAI。整个工程组织有一半人在 FAANG 待过。文章特别点名了几家以工程严谨度著称的公司,我把它们连同后来聊到的量化公司,归成两个集群:
集群一,工程能力硬的公司:Stripe(线上支付基础设施)、Databricks 与 Snowflake(云上数据平台,前者偏数据工程与机器学习一体化,后者偏云数据仓库)、Palantir(面向政府和大企业的数据整合与决策平台)、Airbnb(民宿平台,但后端复杂系统做得扎实)。
集群二,顶尖量化交易公司:Jane Street、Two Sigma、Five Rings、Hudson River Trading(业内简称 HRT)、Optiver、Citadel。它们和 Anthropic、OpenAI 抢的是同一批人——奥赛奖牌、竞技编程高分、顶尖名校数理背景的那一小撮。
(顺带补一个概念:竞技编程平台 Codeforces 的「积分」是一套 Elo 式的评分,用颜色分段,蓝色算不错、紫橙很强、红色 2400 分以上是顶尖的一小撮,是这类公司看重的「卓越信号」之一。)
关键的转折:我到底能学到什么
聊到这里,我意识到光知道「谁牛」没用,真正的问题是:这些公司有没有公开的方法论,能被我这种小团队直接借鉴?
一个贯穿性的判断先立住:这些公司公开的,几乎全是「方法论和工程文化」,不是「赚钱的秘方」。 量化公司的真实策略和低延迟黑科技因为是竞争核心,基本不外泄。能学的是方法,不是 alpha。
在这个判断下,各家的开放程度差很多:
Stripe 和 Airbnb 的工程博客最值得精读;
Databricks / Snowflake 的硬货在学术论文里(Spark、Delta Lake、以及 Snowflake 存算分离那篇 2016 年的论文);
Palantir 最封闭,公开内容参考价值有限;
量化这边,Jane Street 是唯一的异类——异常开放,有技术博客、有播客《信号与线程》(Signals and Threads)、有大量公开技术讲座,还开源 OCaml 库。其余几家(HRT、Citadel、Two Sigma、Optiver)都相当保密,所谓工程博客基本是招聘软文。
结论:迁移价值清单
按对我自己那套永续合约交易所的相关度,排了个序。这是这次探索最终沉淀下来的东西:
幂等性设计(Stripe) —— 用幂等键(idempotency key)让下单、提现、资金费结算等「不能重复执行」的操作安全可重试。它是我关注的「不可逆操作门控」的工程底座。
市场微观结构:逆向选择 + 库存风险 —— 做市(market making)的两大风险模型,直接关系到风控、资金费率设计、以及判断谁在吃我的流动性。
正确性优先 + 用类型系统消灭整类 bug(Jane Street) —— 在钱不能错的系统里,宁可前期慢,让一整类错误在编译期就不可能发生。
设计文档先行 + 强制评审(Stripe) —— 小团队协作和「交接就绪文档」风格的制度化版本。
Expect tests / 快照测试(Jane Street) —— 把预期写进代码、自动更新的测试方法。
可观测性 + 持久化执行(Airbnb) —— 给编排服务和 agent 系统用的可靠性范式。
(Snowflake 的存算分离架构放观察位,眼下不如上面六条直接。)
深入第一条:幂等性设计
清单里第一条已经展开细聊过,这里把要点记下来。
根本问题:分布式系统里网络会骗你。客户端发了「下单」请求然后超时,它无法区分「请求没到」和「服务器处理完了只是回包丢了」。唯一的安全动作是重试,但重试可能导致重复执行。所以工程上「恰好一次(exactly-once)」是幻觉,真正能实现的是至少一次投递 + 幂等处理 = 效果上恰好一次。
核心机制:客户端为每个逻辑操作(不是每次重试)生成一个唯一的幂等键,跟请求一起发。服务端第一次见到就正常执行并存下「键 + 结果」,之后再见同一个键直接返回存好的结果。
魔鬼在细节里,这几点决定了实现是真幂等还是假幂等:
请求指纹校验:把请求参数哈希也存下来。同一个键第二次带着不同参数进来,直接拒绝(409),说明有 bug 或攻击。
并发竞态:最容易翻车的地方。两个重试几乎同时到达都查到「键不存在」于是都执行。解法是把幂等键设为数据库唯一约束,先插入一条「处理中(pending)」记录,靠唯一约束让第二个并发请求插入失败。
原子性:业务副作用和幂等键状态更新必须放进同一个事务一起提交;跨系统的副作用用发件箱模式(outbox pattern)。
处理中状态:pending 时重试进来,返回 409 让客户端稍后再查,而不是傻等或重复执行。
TTL:键不能永久存,Stripe 保留 24 小时。
落到永续交易所的三个应用:
下单:
client_order_id(FIX 协议里的 clOrdId)本质就是幂等键。断线重连用同一个 ID 重发,能识别「这单收过了」,不会开两个仓。提现 / 转账:最该死守的地方,因为是典型的不可逆操作——钱出去收不回。它和「不可逆操作门控」是同一件事的两面:门控解决「要不要放行」,幂等解决「放行后被重试也不会执行两次」。状态机要严格:pending → 已广播上链 → 已确认。
资金费结算和强平:系统内部触发的批处理同样要幂等。用「结算周期 ID + 仓位 ID」当键,保证崩溃重跑不会重复扣费。
一句话精髓:不要试图保证「只执行一次」,那做不到;要保证「执行任意多次,效果和执行一次一样」。
深入第二条:逆向选择与库存风险
这条有个关键视角转换要先立住:讲做市风险时站的是做市商的立场;但我是交易所运营方,不是在自己平台上做市的人。 所以这两个模型对我的价值是「反过来」的——我要理解我的做市商在怕什么,以及这套风险如何映射到我自己身上(保险基金、资金费率、强平引擎)。
逆向选择(adverse selection)
核心直觉:挂出双边报价时,你不能挑跟你成交的人,而主动来跟你成交的人,系统性地偏向那些掌握你不知道的信息的人。价格要涨时知情者抢先吃你的卖单,价格要跌时他们砸你的买单——无论哪个方向,你总是在错误的时点成交。这不是运气差,是结构性的。
这里有个二分:知情交易者(informed) 和 噪声交易者(noise)。做市商赚噪声交易者的钱,亏给知情交易者。买卖价差(spread)的本质,就是做市商为承担逆向选择而收的保费。这是格罗斯滕-米尔格罗姆(Glosten-Milgrom)模型的洞见:即使库存成本和运营成本都为零,只要市场里有知情交易者,价差也会自然出现。
再往实务走一层是订单流毒性(order flow toxicity):不是所有单子都一样「毒」,做市商会实时估计打过来的流是不是知情的(常用指标 VPIN),毒性一高就拉宽价差甚至撤单。极端形态是被狙击(getting picked off)——加密市场里,延迟套利者盯着币安这类参考交易所的价格,一看价格动了就抢在做市商反应过来之前吃掉他挂在你盘口上的过期报价。
库存风险(inventory risk)
第二个风险和信息无关,纯粹是持仓暴露。做市成交多了会攒出净头寸,即使每笔都赚了价差,价格一反向波动,库存亏损可能远超赚到的价差。理想状态是尽量保持中性(flat)。
管理手段是偏移报价(skewing):手上多头太多想卸货,就把买卖报价同时下移——卖价降低吸引别人来买(帮你卸货),买价也降低让别人不愿卖给你(避免继续加多),用不对称把库存往中性推。经典框架是阿韦利亚内达-斯托伊科夫(Avellaneda-Stoikov)模型:根据当前库存和风险厌恶算出一个「保留价格」,库存越偏保留价格越往回拉,再围绕它对称报价;还引入时间维度,离结算越远越保守,超过硬上限就撤掉一整边。
两者是个权衡:价差拉宽能防逆向选择但成交变少;偏移报价管住库存却可能加剧某一边的逆向选择。没有免费的午餐。
反过来:作为交易所,这一切意味着什么
一、理解做市商 = 理解盘口深度从哪来。 做市商每天扛这两样风险。如果交易所的设计(撮合慢、撤单没优先权、行情有延迟)让它们更糟,做市商就拉宽价差或离开,盘口就变薄。想给用户更窄的价差,前提是把场子做得对做市商足够「安全」。这是一条因果链:撮合与行情基础设施质量 → 做市商的逆向选择成本 → 盘口价差 → 用户体验。
二、Maker-Taker 费率的存在理由,就是补贴逆向选择。 给挂单方返佣,本质是用返佣补贴做市商承担的逆向选择成本,让他们即使被知情流吃点亏、加上返佣也还划算。这笔返佣不是营销开支,是逆向选择的对价。
三、交易所自己也在扛一个「库存 + 逆向选择」问题,藏在强平引擎和保险基金里。 强平一个仓位时,这个头寸不会凭空消失——交易所/保险基金实际上被迫接了一个头寸,这就是库存问题;要在下跌市场里卸货就会实现亏损,这正是保险基金和自动减仓(ADL) 存在的原因。而逆向选择的对应物是:极端行情下来触发强平的流高度「有毒」,插针、连环强平(liquidation cascade)时保险基金接到的都是最差价格的头寸——它被系统性地逆向选择了。资金费率作为把永续价格锚定现货的机制,一旦设计不良就会被博弈,本质上也是让交易所/对手方承担逆向选择。
四、最高价值的连接——频繁批量拍卖(FBA)正是逆向选择的解药。 连续撮合(continuous matching)下时间连续、谁快谁赢,延迟套利者靠几微秒优势狙击做市商的过期报价,这是做市商最大的逆向选择来源之一。频繁批量拍卖(frequent batch auction)把时间离散成极短批次,批次内所有订单以同一清算价成交,速度优势失效——做市商不再被狙击,逆向选择成本下降,敢报更窄价差,最终用户拿到更好的价格。架构里选 FBA 不是孤立的技术偏好,它精确对应着这条微观结构原理。
这条的精髓:做市商的两大成本不是他们的私事,而是通过价差、Maker 返佣、保险基金和强平引擎,最终都传导到交易所的账本和用户体验上。交易所不是旁观者,是这套风险的最终承接方之一;架构选择(撮合方式、费率、FBA、资金费设计)本质上是在决定这些风险如何分配。
进度与下一步
✅ 溯源完成:从招聘文章 → infra 的定义 → 两个人才集群 → 各家开放程度
✅ 沉淀出六条迁移价值清单
✅ 深入第 1 条:幂等性设计
✅ 深入第 2 条:逆向选择与库存风险(含 FBA 解药那条连接)
⏭️ 待办:第 3~6 条逐个深入。下一条是 Jane Street 的「正确性优先,用类型系统消灭整类 bug」。
这次最大的收获其实不是某一条具体技术,而是那个溯源的动作本身:与其问「顶尖公司在做什么高深的东西」,不如问「他们公开的哪一条工程纪律,我明天就能用上」。 答案往往朴素得让人意外——比如幂等键。
