深夜的小吃街,灯火通明。老王的水果摊前,永远挂着一块手写价格牌:“西瓜 5 元/斤”。他左手从批发市场进货,右手卖给路人,赚的就是那一两块钱的差价。但这条街上有十几家水果摊,谁的价格低、谁的动作快、谁的货新鲜,顾客就往谁家跑。老王从不跟顾客讨价还价,他只管盯着隔壁摊位的价格牌,随时准备改写自己那块牌子。 这就是做市商的日常。只不过,老王的“小吃街”换成了电子交易所的订单簿,“西瓜”换成了股票或比特币,“价格牌”的更新频率从每天一次变成了每毫秒一次。而老王手里的那把算盘,被换成了AI算法——它要在电光石火之间决定:报什么价、报多宽、接多少货,才能既赚到差价,又不被突如其来的行情砸在手里。 这就是高频交易与做市的世界。在这个世界里,输赢以微秒计,利润以厘差算,而AI的推理能力,决定了你是这条街上最快的摊贩,还是那个永远慢半拍、最终亏光本金的看客。

岗位关联

理解高频交易与做市,等于理解了华尔街真正的“心跳”。对AI从业者而言,这是横跨低延迟系统设计、微观结构建模与强化学习决策的极致练兵场,掌握它,意味着你在最苛刻的毫秒级博弈中拥有了构建技术壁垒的能力。

目录
  1. 可视化演示
  2. 赛道全景与规则
  3. 速度军备竞赛
  4. 订单簿透视术
  5. 做市报价策略
  6. 风险防线
  7. 对抗环境博弈
  8. 技术壁垒构建
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

通过订单簿深度动态、低延迟管道架构和做市报价策略三个视角,展示AI在高频交易中的核心应用与风控机制。

本节配有交互动效(进入视口后自动加载,约 3KB)。

赛道全景与规则

深夜的小吃街,老王的水果摊并不是唯一一家。街口卖烧烤的、巷尾卖奶茶的、转角卖煎饼的,每个人都有自己的一套生存逻辑。但老王很清楚,他做的是“来料加工”的生意——永远不赌水果价格的涨跌,只赚中间那层薄薄的差价。如果西瓜进价 4 元,他就挂 5 元;如果进价涨到 4.5 元,他就把价格牌改成 5.5 元。他的利润来自周转,而不是来自押注。

在金融世界里,高频交易与做市就是老王的这门生意。高频交易(HFT)不是一种投资理念,而是一种交易基础设施——它不关心某只股票三个月后会涨还是会跌,只关心下一秒的买卖价差里有没有那几分钱可以赚。做市商则是市场中主动挂出买卖双向报价的角色:他永远报一个买价(Bid)和一个卖价(Ask),赚取两者之间的价差(Spread)。

AI 在这里的角色,是帮老王做出“价格牌该挂多少”的决策。传统做市商靠经验和直觉,而 AI 做市商靠的是对订单簿数据的实时建模——它从海量的挂单与成交数据中,提取出市场情绪、资金流向、大单异动等信号,再结合当前的库存水平,计算出一个最优报价。整个过程在几毫秒内完成,比老王眨一下眼睛还要快几百倍。

小吃街的规则很简单:谁的价格牌改写得快,谁就能赚到最多的差价。但在电子交易所里,这条规则被推到了极致——价格牌的改写频率不是每天一次,而是每毫秒一次。这就是为什么我们说,高频交易与做市是“毫秒级的生意经”,而 AI 就是那本生意经的执笔者。

速度军备竞赛

老王深有体会:西瓜摊的生意好坏,有一半取决于摊位的物理位置。靠近街口的摊位,顾客第一个看到;藏在巷子里的摊位,再好也无人问津。所以他每天凌晨三点就去抢街口那个位置。在电子交易中,“物理位置”变成了机房到交易所撮合引擎的距离——信号在光纤中每秒传播约 20 万公里,每增加一公里,就多出约 3.3 微秒的延迟。别小看这 3 微秒,在每秒处理上万笔订单的世界里,这就是决定生死的差距。

延迟(Latency)是高频交易的第一生命线。假设一笔交易因为延迟而晚到了 1 毫秒,可能最优价格已经被人抢走,老王只能以更差的价格成交,每笔损失虽然只有零点几个基点,但乘以每天几十万笔的交易量,就是一笔巨款。延迟带来的机会成本可以用一个简单的公式来表达:

为了压低 Δt,量化团队使出了浑身解数。首先是物理距离:把服务器托管在离交易所撮合引擎最近的机房,甚至直接“同居”在交易所的数据中心里,这叫共置(Co-location)。其次是硬件加速:用 FPGA(现场可编程门阵列)或 ASIC(专用芯片)直接处理订单,省去操作系统和网卡协议栈的开销。还有精简协议:不再用标准的 TCP/IP 协议栈,而是用内核旁路(Kernel Bypass)技术,让数据直接从网卡到应用。

老王每天去抢街口的位置,和量化团队把服务器搬到交易所隔壁,本质上是同一件事——离撮合引擎越近,胜率越高。速度不是炫技,而是高频交易与做市业务的生存底线。

Costlatency=λ×Δt×σ\displaystyle \text{Cost}_{\text{latency}} = \lambda \times \Delta t \times \sigma
这个公式告诉我们:延迟的代价 = 订单到达率(λ)× 延迟时长(Δt)× 价格波动率(σ)。订单越密集、延迟越长、价格波动越剧烈,慢半拍的代价就越高。
  1. 订单到达率λ 表示单位时间内到达市场的订单数量,它决定了“抢单”竞争的激烈程度。
    λ=订单数量秒λ = \frac{\text{订单数量}}{\text{秒}}
  2. 延迟时长Δt 表示从策略产生信号到订单到达交易所之间的总耗时,单位通常是微秒或毫秒。
    Δt=tarrive−tsignalΔt = t_{\text{arrive}} - t_{\text{signal}}
  3. 价格波动率σ 表示单位时间内价格变化的剧烈程度,波动越大,晚一步成交的价格就越差。
    σ=1N−1∑i=1N(ri−rˉ)2σ = \sqrt{\frac{1}{N-1} \sum_{i=1}^{N} (r_i - \bar{r})^2}

订单簿透视术

老王摆摊有个绝活:他不用看天气预报,光凭早上 6 点的路灯下有多少人穿着短袖,就能猜出今天西瓜好不好卖。订单簿(Order Book)就是交易世界里的“短袖现象”——它实时记录了市场上所有想买和想卖的人的挂单情况,是解读市场微观结构的窗口。

订单簿通常展示五档(甚至更多档)的买卖挂单。买盘(Bid)一侧,是愿意以某个价格买入的人,价格从高到低排列;卖盘(Ask)一侧,是愿意以某个价格卖出的人,价格从低到高排列。买一价与卖一价之间的中点,叫中价(Mid Price),常被视为市场的“公允价格”参考:

光看价格还不够,订单簿的深度(各档位挂单量)同样重要。如果买一档挂了 500 手大单,而卖一档只挂了 50 手小单,说明买方力量明显占优,价格短期可能上涨。将买盘总量与卖盘总量做一个归一化,就得到了订单簿不平衡度(Order Book Imbalance):

除了不平衡度,从业者还会提取成交密集区(哪些价位成交最活跃)、大单异动(突然出现远超平均水平的挂单)等信号。这些微观结构信号经过特征工程,成为 AI 模型的输入特征。老王从“穿短袖的人数”推断西瓜行情,AI 从订单簿的挂单量推断短期价格方向——本质上都是从可观测的细节中挖掘隐藏的信息。

Pmid=Pbid+Pask2\displaystyle P_{\text{mid}} = \frac{P_{\text{bid}} + P_{\text{ask}}}{2}
不平衡度取值范围在 -1 到 1 之间:接近 1 表示买盘压倒性强势,接近 -1 表示卖盘压倒性强势,接近 0 表示多空均衡。
  1. 买盘总量V_bid 是买盘所有档位的挂单量之和。
    Vbid=∑i=15Qbid,iV_{\text{bid}} = \sum_{i=1}^{5} Q_{\text{bid}, i}
  2. 卖盘总量V_ask 是卖盘所有档位的挂单量之和。
    Vask=∑i=15Qask,iV_{\text{ask}} = \sum_{i=1}^{5} Q_{\text{ask}, i}
  3. 差比和用买盘减卖盘作分子,总和作分母,实现归一化。
    Imbalance=Vbid−VaskVbid+Vask\text{Imbalance} = \frac{V_{\text{bid}} - V_{\text{ask}}}{V_{\text{bid}} + V_{\text{ask}}}

做市报价策略

现在到了老王最核心的生意经:这块价格牌到底该挂多少?挂高了没人买,挂低了亏本;报得太宽(价差大)利润高但成交少,报得太窄(价差小)成交多但利润薄。更麻烦的是,他手上还囤着一批西瓜——如果明天的进价跌了,这些西瓜就砸手里了。这就要说到做市定价的核心公式了。

假设市场的中价为 S,老王的报价宽度(半价差)为 δ。如果他不考虑库存,最优的半价差与市场波动率成正比——波动越剧烈,承担的风险越大,要求的补偿就越多:

更贴近实战的是 Avellaneda-Stoikov 模型的简化版。这个模型告诉我们:做市商的报价应该围绕“库存调整后的价格”来设置——如果手里囤了太多西瓜(库存为正),就把卖价降低一点,赶紧出货;如果手里没货(库存为负),就把买价提高一点,赶紧补货:

报价不是一成不变的,而是随着订单簿的变化动态调整。如果买盘突然涌入大量买单,中价上移,老王的报价也跟着上移;如果库存积累过多,他就主动收窄卖价,加速出货。整个决策链路在 AI 的驱动下,形成了“感知订单簿 → 计算最优报价 → 提交订单 → 更新库存 → 重新计算”的毫秒级循环。老王的每一次价格调整都是对“进价、天气、人流”的综合判断,而 AI 做市商则把这个判断过程压缩到了微秒级,并且每一次都基于数据而非直觉。

δ=12γσ2Δt+1γln⁡(1+γα)\displaystyle \delta = \frac{1}{2} \gamma \sigma^2 \Delta t + \frac{1}{\gamma} \ln\left(1 + \frac{\gamma}{\alpha}\right)
q_inv 表示当前库存量(正数表示持有,负数表示做空)。当库存为正时,买卖报价都向下偏移,相当于促销;当库存为负时,报价都向上偏移,相当于抢货。
  1. 基础买价在中价基础上减去半价差,得到买价。
    Pbid=Pmid−δP_{\text{bid}} = P_{\text{mid}} - \delta
  2. 基础卖价在中价基础上加上半价差,得到卖价。
    Pask=Pmid+δP_{\text{ask}} = P_{\text{mid}} + \delta
  3. 库存偏移减去 γσ²q_inv,库存为正时整体下移,库存为负时整体上移。
    ΔPinv=−γσ2qinv\Delta P_{\text{inv}} = -\gamma \sigma^2 q_{\text{inv}}

风险防线

老王有个铁律:不管生意多好,摊位上最多只放 20 个西瓜。因为西瓜会烂,价格会跌,一旦天气骤变,满摊的西瓜就是满摊的灾难。做市商同样有库存上限——库存风险是做市商面临的第一大风险。如果做市商在买一档不断接货,而价格持续下跌,他手里的库存就在不断贬值。

库存风险的量化,常用风险价值(VaR,Value at Risk)来度量。简单说,就是“在 95% 的置信水平下,未来一段时间内我的库存最多可能亏损多少钱”:

除了库存风险,伪信号是另一大隐患。AI 模型从订单簿中提取信号,但订单簿里并不全是真心实意的挂单——有些大单是“诱饵”,挂上去就会撤掉,目的是诱骗其他人跟着下单,从而推动价格往自己有利的方向移动。这就像小吃街上有人故意在老王摊前排队,制造“这家西瓜很好吃”的假象,等真有人来买时,那排“队”已经悄悄散开了。

识别伪信号要靠撤单率分析和挂单存续时间等特征——如果某个价位反复出现大单挂起又撤掉,它的真实性就要打折扣。极端行情下的规避同样重要:当行情出现闪崩(Flash Crash)级别的剧烈波动时,AI 做市商应该主动退出市场,而不是用常规模型硬扛。老王的智慧在于,他不仅知道什么时候该卖西瓜,更知道什么时候该收摊。

VaR95%=1.65×σ×∣qinv∣\displaystyle \text{VaR}_{95\%} = 1.65 \times \sigma \times |q_{\text{inv}}|
这个公式表示:库存亏损的潜在上限 ≈ 1.65 倍的价格标准差 × 库存量的绝对值。库存越大、波动越剧烈,潜在亏损越高。
  1. 置信度系数1.65 是 95% 置信水平对应的正态分布分位数。
    z0.95=1.65z_{0.95} = 1.65
  2. 价格标准差σ 表示单位时间内价格变动的标准差,刻画波动幅度。
    σ=Var(rt)\sigma = \sqrt{\text{Var}(r_t)}
  3. 库存绝对值|q_inv| 表示库存规模,不区分做多还是做空。
    ∣qinv∣|q_{\text{inv}}|

对抗环境博弈

小吃街的生意越来越难做,老王发现隔壁摊主学会了“假排队”来抢客,于是他也在反思:自己该不该也搞点小动作?答案是——不,但他必须学会识破别人的小动作。高频交易的战场就是这样一个对抗环境:每一个参与者都在观察别人的行为,同时试图隐藏自己的真实意图。

这场博弈中,猎手与诱饵的角色不断互换。某些机构会挂出巨额买单来制造“需求旺盛”的假象,吸引散户跟进买入,推高价格后,真实的卖单悄悄成交——这就是诱导(Spoofing)。AI 做市商必须学会识别这类行为。虚假挂单识别的核心特征包括:挂单的存续时间是否过短、撤单率是否异常高、挂单量与后续成交量的比值是否失真。

一个常用的信号是挂单存续时间(Time-to-Cancel)的分布统计。如果某档价位的挂单平均在几十毫秒内就被撤销,而历史正常水平是几百毫秒,那这很可能是诱饵:

正因为环境是动态对抗的,策略迭代的速度决定了生存周期。一个有效的做市策略,其“有效期”可能只有几个月——当越来越多的人发现并模仿它时,它的优势就消失了。因此,量化团队需要建立策略迭代飞轮:监控实盘表现 → 识别策略失效信号 → 开发新特征 → 回测验证 → 小规模上线 → 逐步放大。老王的应对之道也是如此——他发现隔壁摊主的假排队手段后,不会去举报(那没用),而是学会了在有人排队时冷静观察三秒钟,再决定要不要跟风进货。

Spoofing Score=撤销率1+平均挂单存续时间\displaystyle \text{Spoofing Score} = \frac{\text{撤销率}}{1 + \text{平均挂单存续时间}}
Spoofing Score 越高,该档挂单是虚假诱饵的概率越大。这个分数可以作为特征输入 AI 模型,帮助做市商决定“要不要跟这个价位互动”。
  1. 撤销率撤销率 = 该价位撤销的挂单数 / 总挂单数。
    撤销率=NcancelNtotal\text{撤销率} = \frac{N_{\text{cancel}}}{N_{\text{total}}}
  2. 平均存续时间挂单从提交到撤销的平均时长,单位毫秒。
    tˉcancel=1N∑ti\bar{t}_{\text{cancel}} = \frac{1}{N} \sum t_i
  3. 比值计算撤销率越高、存续越短,Spoofing Score 越高。
    Spoofing Score=撤销率1+tˉcancel\text{Spoofing Score} = \frac{\text{撤销率}}{1 + \bar{t}_{\text{cancel}}}

技术壁垒构建

小吃街的生意,七分靠位置,三分靠手艺。老王的西瓜摊能屹立不倒,不仅因为他摊位好,更因为他有一套别人抄不走的“手艺”:选瓜的手感、切瓜的刀法、定价的直觉。在高频交易与做市业务中,“手艺”就是技术壁垒,它由三个维度叠加而成。

第一是人才密度。高频交易团队通常是由系统工程师、量化研究员和交易员组成的“铁三角”。系统工程师负责把延迟压到极限,量化研究员负责从订单簿中挖出有效信号,交易员负责监控策略运行并及时干预。三者的配合,就像老王的摊位——老王负责选品定价,他媳妇负责招呼客人,他俩的儿子负责补货搬运,缺一环生意都转不起来。

第二是基础设施沉淀。每一毫秒的延迟优化、每一个信号特征库、每一套回测框架,都是时间和金钱堆出来的。新入场的团队就算有钱买同样的服务器,也买不到这些经过多年迭代的“软实力”。老王的位置可以被别人抢走,但他脑海里那套“看天卖瓜”的经验,别人偷不走。

第三是回测与监控闭环。AI 做市策略在实盘之前,必须经过严格的回测验证——用历史数据模拟“如果当时用这个策略会怎样”:

回测只是第一道关卡,实盘监控才是真正的考验。AI 做市商在实盘中必须实时监控:成交率是否正常、库存是否触及警戒线、延迟是否突然增大、策略收益率是否偏离预期。任何指标的异常都可能意味着市场环境发生了变化,需要人为介入甚至紧急停掉策略。老王每天收摊后会盘账:今天进了多少瓜、卖出多少、损耗几何、明天该不该调整进货量——这就是最朴素的“回测与监控闭环”。

Sharpe=E[Rp]−Rfσp\displaystyle \text{Sharpe} = \frac{E[R_p] - R_f}{\sigma_p}
夏普比率衡量的是“每承担一单位风险,能换来多少超额收益”。做市团队用它来筛选策略:夏普比率太低,说明这个策略的风险调整后收益不达标,不值得上线。
  1. 策略平均收益E[R_p] 是策略在回测期内的平均收益率。
    E[Rp]=1N∑i=1NRiE[R_p] = \frac{1}{N} \sum_{i=1}^{N} R_i
  2. 无风险利率R_f 是无风险资产的收益率,通常参考国债利率。
    Rf=无风险利率R_f = \text{无风险利率}
  3. 超额收益除以波动分子是超额收益,分母是收益波动率,比值越高越好。
    Sharpe=E[Rp]−Rfσp\text{Sharpe} = \frac{E[R_p] - R_f}{\sigma_p}

AI 应用场景

加密资产交易所的AI做市服务

阶段:策略执行与优化

解决的问题:新兴的加密资产交易所流动性不足,买卖价差大,用户交易成本高。传统人工做市难以在 7×24 小时不间断运行的加密市场中持续盯盘,且加密市场价格波动剧烈,人工决策速度跟不上节奏。

具体案例:一家量化团队为某二三线加密交易所提供 AI 做市服务。他们的系统实时扫描订单簿的多档数据,计算订单簿不平衡度、撤单率和微观结构信号,再结合当前库存,用简化版 Avellaneda-Stoikov 模型每 100 毫秒更新一次买卖报价。当检测到库存超过警戒线时,系统自动调整报价向“出货”方向偏移。运行三个月后,该交易所的主流交易对价差收窄了 60%,AI 做市策略的年化夏普比率达到 4.2。

股票市场的电子做市商系统

阶段:信号提取与决策

解决的问题:股票市场的做市商需要同时跟踪数千只股票的订单簿和新闻事件,传统规则引擎难以覆盖全市场。AI 的实时特征提取和模式识别能力,使得做市商可以同时监控全市场,动态调整各只股票的参与策略。

具体案例:某券商自营团队的 AI 做市系统,每天凌晨从交易所下载历史订单簿数据,训练微观结构预测模型;开盘后,系统每 50 毫秒扫描全市场股票的五档行情,提取订单簿不平衡度、大单异动等特征,对每只股票给出“加剧做市/正常做市/退出做市”三档决策。当某只股票出现闪崩级别的异常波动时,系统在 10 毫秒内撤掉所有报价,规避极端行情风险。

期货做市的库存风险管理系统

阶段:风险控制

解决的问题:期货做市中,库存(持仓)方向错误会导致巨大亏损。AI 的风险管理系统通过对库存 VaR 的实时计算,动态设定做市策略的报价宽度和库存上限,确保风险始终在可控范围内。

具体案例:一家商品期货做市商的 AI 风控模块,实时计算每个品种的持仓 VaR,并结合市场波动率自动调整仓位上限。如果某品种的波动率突然放大 3 倍,系统会自动将最大持仓量减半,并加宽报价。系统上线后,该团队的最大回撤降低了约 45%,再未出现因单品种库存失控导致的重大亏损。

Python 演示

python84 行
import numpy as npimport pandas as pd  class MarketMakingEnv:    """模拟一个简化的做市环境,包含订单簿和价格演化"""     def __init__(self, sigma=0.02, dt=0.01):        self.sigma = sigma        self.dt = dt        self.mid_price = 100.0        self.inventory = 0.0        self.cash = 0.0        self.t = 0.0     def evolve_price(self):        """价格服从几何布朗运动"""        self.t += self.dt        ret = np.random.normal(0, self.sigma * np.sqrt(self.dt))        self.mid_price *= np.exp(ret)        return self.mid_price  class AvellanedaStoikovMM:    """Avellaneda-Stoikov 做市策略"""     def __init__(self, gamma=1.0, k=1.5, sigma=0.02):        self.gamma = gamma        self.k = k        self.sigma = sigma     def optimal_spread(self, t):        """计算最优半价差"""        return self.gamma * self.sigma ** 2 * t + (1 / self.gamma) * np.log(1 + self.gamma / self.k)     def optimal_quote(self, mid, q_inv, t):        """计算库存偏移后的买卖报价"""        delta = self.optimal_spread(t)        offset = q_inv * self.gamma * self.sigma ** 2 * t        return mid - delta + offset, mid + delta + offset  def run_backtest(n_steps=5000, seed=42):    np.random.seed(seed)    env = MarketMakingEnv()    mm = AvellanedaStoikovMM()     pnls = []    inventories = []    for _ in range(n_steps):        mid = env.evolve_price()        bid, ask = mm.optimal_quote(mid, env.inventory, env.dt)         # 随机成交:买方价高于卖价则卖出,卖方价低于买价则买入        if np.random.rand() < 0.2:            exec_price = ask            env.inventory -= 1            env.cash += exec_price        if np.random.rand() < 0.2:            exec_price = bid            env.inventory += 1            env.cash -= exec_price         pnl = env.cash + env.inventory * mid        pnl = np.round(pnl, 2)        pnl.append(pnl)        inventories.append(round(env.inventory, 2))         # 库存上限风控:超过 5 就强制平仓一半        if abs(env.inventory) > 5:            env.cash += env.inventory * mid / 2            env.inventory /= 2     df = pd.DataFrame({"pnl": pnl, "inventory": inventories})    sharpe = df["pnl"].mean() / (df["pnl"].std() + 1e-9)    print(f"最终盈亏: {pnl:.2f}")    print(f"最终库存: {env.inventory:.2f}")    print(f"夏普比率: {sharpe:.2f}")     return df  if __name__ == "__main__":    df = run_backtest()
目的:演示一个简化版做市策略如何根据中价、库存和波动率动态计算买卖报价,并在模拟环境中执行回测。
  1. self.mid_price *= np.exp(ret)模拟价格对数正态随机游走,对应真实市场的不确定性。
  2. mm.optimal_quote(mid, env.inventory, env.dt)调用策略核心函数,计算含库存偏移的报价。
  3. bid, ask = mm.optimal_quote(...)买价和卖价围绕库存调整后的中价对称展开。
  4. env.inventory -= 1; env.cash += exec_price卖出一单位库存,现金增加。
  5. pnl = env.cash + env.inventory * mid按市值法计算总盈亏(现金 + 库存 × 中价)。
  6. if abs(env.inventory) > 5:触发库存警戒线,强制减仓,对应正文中的库存风控机制。
  7. sharpe = df["pnl"].mean() / (df["pnl"].std() + 1e-9)计算夏普比率,用于衡量策略的风险调整后收益。

常见误区

误区高频交易的本质就是比谁快,只要把延迟压到最低就能赚钱,速度是唯一的追求。

正解快是必要条件,但不是充分条件。就像老王抢到了街口的位置,但如果西瓜质量差、定价不合理,一样卖不出去。低延迟只是让订单“先到”交易所,但订单能否成交、成交是否有利润,取决于信号是否准确、报价是否合理、风控是否到位。很多团队在延迟上投入重金,但信号质量不过关,最终反而亏损。

为何常见:因为高频交易最直观的差异就是速度,媒体的报道也聚焦在“微秒级”等字眼上,让人误以为速度就是全部。

误区做市商左手买右手卖,永远赚价差,风险很小,几乎不可能亏钱。

正解做市商承担着巨大的库存风险和信息不对称风险。当价格单边下跌时,做市商接到的买盘会变成不断贬值的库存;当出现闪崩时,做市商可能来不及撤单就直接被打穿。历史上多家著名做市公司在极端行情中损失惨重。做市商赚的不是无风险收益,而是“承担流动性风险后的补偿”。

为何常见:因为做市商每天都有大量成交,账面看起来稳稳盈利,但这是常态行情下的表象,掩盖了极端行情下的尾部风险。

误区订单簿不平衡度是铁律——买盘挂单量远大于卖盘,价格一定会上涨,直接据此下单就能赚钱。

正解订单簿不平衡度是一个有用的信号,但绝不是确定性的预言。大量买盘挂单可能是诱饵(Spoofing),实际成交寥寥。此外,大资金可以在不平衡度极端时反向操作——利用散户对不平衡度的跟随心理,挂单推升不平衡度,吸引跟风盘,然后反向卖出。信号只有结合撤单率、存续时间等特征综合判断才有价值。

为何常见:因为不平衡度与短期价格方向确实存在统计相关性,但统计相关性不等于确定性,市场中也存在大量利用这个规律的对抗行为。

误区历史回测的夏普比率高,说明策略有效,就可以直接上实盘。

正解回测存在多重陷阱:过拟合(在历史数据上反复调参,恰好适应了历史的噪声)、幸存者偏差(只回测了活到今天的股票/币种)、市场冲击(回测假设的成交价不一定在实盘中能拿到)。老王的经验是“回测好不如实盘稳”,新策略必须经过小规模模拟盘和多轮迭代,才能逐步放大资金。

为何常见:因为回测结果看起来非常量化、客观,容易让人忽略回测假设与真实市场之间的差距。

面试题

Q1. 高频交易与做市的本质区别是什么?

单选题 · mid

  • A.高频交易靠速度赚钱,做市靠价差赚钱← 正确答案
  • B.高频交易是投资行为,做市是投机行为
  • C.高频交易赚的是预测收益,做市赚的是价差收益
  • D.高频交易是短线交易,做市是长线交易

答案:A。高频交易的核心是速度竞争——抢先获取信息和成交机会;做市的核心是通过同时挂出买卖报价赚取价差。两者功能不同:HF T 是交易执行能力的极致,做市是流动性供给机制。B 说反了(都不属于传统投资),C 的“预测收益”不准确(高频交易不靠预测方向),D 的“长线短线”角度不准确。

Q2. 订单簿中的“中价”(Mid Price)是指什么?

单选题 · easy

  • A.买一价与卖一价的算术平均值← 正确答案
  • B.过去一小时的平均成交价
  • C.全市场所有成交价的加权平均值
  • D.买一价与卖一价中较小的那个

答案:A。中价 = (买一价 + 卖一价) / 2,它被视为市场短期公允价格的参考。B 是历史均价,C 是成交量加权均价(VWAP),D 是买一价而非中价。中价本身不会成交,但做市商围绕它进行报价。

Q3. Avellaneda-Stoikov 模型中,当库存 q_inv 为正(持有库存)时,报价会如何变化?

单选题 · mid

  • A.买卖报价同时向上偏移,加速出货
  • B.买卖报价同时向下偏移,加速出货← 正确答案
  • C.买卖报价同时向上偏移,加速补货
  • D.买卖报价不变,只调整价差

答案:B。库存为正说明手里囤了货,有价格下跌的风险。模型的报价公式里有一个偏移项 -γσ²q_inv,当 q_inv 为正时,买卖报价都向下偏移,让价格更有吸引力,从而加速出货。A 说反了(向上偏移是补货逻辑),C 描述的是负库存场景,D 忽略了库存偏移项。

Q4. 以下哪些手段可以有效降低高频交易的系统延迟?

多选题 · mid

  • A.将服务器托管在交易所数据中心(共置)← 正确答案
  • B.使用 FPGA 硬件加速订单处理← 正确答案
  • C.增加更多的显示器监控行情
  • D.采用内核旁路技术绕过操作系统协议栈← 正确答案

答案:ABD。共置缩短了物理距离,FPGA 绕过了指令解释开销,内核旁路绕过了操作系统协议栈,三者都能显著降低延迟。增加显示器只影响人的监控效率,不影响机器决策速度。延迟的每一微秒下降都可能带来市场竞争力的显著提升。

Q5. 订单簿不平衡度 Imbalance = (V_bid - V_ask) / (V_bid + V_ask) 的取值范围是?

单选题 · easy

  • A.0 到 1 之间
  • B.-1 到 1 之间← 正确答案
  • C.1 到 100 之间
  • D.负无穷到正无穷之间

答案:B。分子是买盘总量减卖盘总量,分母是两者之和,所以取值范围是 -1 到 1。接近 1 表示买盘强势,接近 -1 表示卖盘强势,接近 0 表示平衡。A 漏掉了负值区间,C 和 D 与公式的归一化逻辑不符。

Q6. 做市商常用的库存风险控制手段有哪些?

多选题 · hard

  • A.设置库存上限,超限后强制减仓← 正确答案
  • B.当库存为正时,报价向下偏移以加速出货← 正确答案
  • C.动态调整报价宽度以补偿波动率风险← 正确答案
  • D.在极端行情中撤出全部报价,暂停做市← 正确答案

答案:ABCD。库存上限(A)防止风险失控;库存偏移(B)加速库存回归中性;报价宽度与波动率挂钩(C)确保风险补偿;极端行情退出(D)避免尾部风险。这四者共同构成完整的风控体系,是正文中“风险防线”一节的实战落地。

Q7. Spoofing(诱导)行为的典型特征是?

单选题 · mid

  • A.挂单量大且存续时间长,真实成交持续增加
  • B.挂单量大但存续时间极短,撤单率异常升高← 正确答案
  • C.买卖价差持续收窄,成交量持续放大
  • D.订单簿不平衡度持续接近 0 且稳定

答案:B。Spoofing 的本质是“虚假大单诱敌”——挂出巨额订单制造假象,等别人跟风后迅速撤单。因此它的核心特征就是挂单存续时间极短、撤单率异常高。A 描述的是真实大单,C 描述的是正常活跃行情,D 描述的是均衡市况,均非诱饵特征。

Q8. 夏普比率衡量的是什么?

单选题 · easy

  • A.策略的绝对收益水平
  • B.每承担单位风险的超额收益← 正确答案
  • C.策略的交易频率
  • D.策略的胜率

答案:B。夏普比率 = (策略平均收益 - 无风险利率) / 收益波动率,衡量的是风险调整后的收益。绝对收益高(A)不一定夏普高,因为波动可能也大;交易频率和胜率都不在公式中。

Q9. 延迟产生的机会成本公式 Cost = λ × Δt × σ 中,各变量的含义是?

单选题 · hard

  • A.λ 是延迟时长,Δt 是订单到达率,σ 是买卖价差
  • B.λ 是订单到达率,Δt 是延迟时长,σ 是价格波动率← 正确答案
  • C.λ 是价格波动率,Δt 是订单到达率,σ 是延迟时长
  • D.λ 是订单到达率,Δt 是交易费用,σ 是持仓量

答案:B。公式说明延迟的代价 = 订单到达率 × 延迟时长 × 价格波动率。延迟越长、订单越密集、波动越剧烈,晚一步的代价就越高。A 和 C 把符号含义搞混了,D 中的交易费用和持仓量不在这个公式中。

Q10. 为什么策略回测表现好不代表实盘一定能赚钱?

多选题 · mid

  • A.回测可能过拟合了历史噪声← 正确答案
  • B.回测假设的成交价格在实盘中不一定能达到← 正确答案
  • C.回测使用的历史数据可能存在幸存者偏差← 正确答案
  • D.回测速度越快策略就越好

答案:ABC。过拟合(A)让策略只适应历史、不适应未来;市场冲击(B)让回测中的“理想成交价”无法实现;幸存者偏差(C)让回测样本失真。回测速度快(D)只代表计算效率,与策略质量无关。量化团队对回测结果的信任必须建立在严谨的样本外验证基础上。