交易公司和对冲基金的量化面试,考察的是你在时间压力下如何对不确定性进行推理。大多数轮次会混合概率谜题、期望值博弈、心算、一些统计题,以及少量期权或编程问题。下面是 21 道量化面试题,附有详细解答。文中的每一个数字在发布前都经过精确计算或模拟验证。
量化面试考察什么
| 轮次 | 题目长什么样 | 考官在看什么 |
|---|---|---|
| 概率与脑筋急转弯 | 骰子、硬币、扑克牌、条件概率 | 你能否正确建立问题模型,并保持冷静 |
| 期望值与下注 | 需要你决定是否参与、何时停止或下多大注的博弈 | 决策能力,而不只是算术 |
| 心算与做市 | 快速算术,给出双边报价 | 速度,以及你出错后如何更新判断 |
| 统计 | 回归、相关性、p 值、过拟合 | 你会不会被数据自己骗了 |
| 金融 | 交易岗位需要的期权基础知识 | 直觉比公式更重要 |
| 编程 | Python 或 C++,短小的题目 | 代码简洁、正确 |
交易岗和研究岗对这些内容的侧重不同。交易岗面试更多考察前三行的内容,研究岗则在统计和编程上花费更多时间。
概率题
1. 掷两颗骰子,点数之和为 7 的概率是多少?
共有 36 种等可能的结果,其中有 6 种的点数之和为 7:(1,6)、(2,5)、(3,4)、(4,3)、(5,2)、(6,1)。概率为 6/36 = 1/6。
常见的追问是:点数之和大于等于 10 呢?这些结果是 (4,6)、(5,5)、(6,4)、(5,6)、(6,5)、(6,6),同样是 36 种中的 6 种,所以也是 1/6。
2. 一个家庭有两个孩子,至少有一个是男孩。两个都是男孩的概率是多少?
列出等可能的情形:男男、男女、女男、女女。“至少有一个男孩”排除了女女,剩下三种情形。其中只有一种是男男,所以答案是 1/3。
面试官用这道题来看你是否会直接跳到 1/2。如果题目改成“年长的孩子是男孩”,答案就是 1/2,因为此时只剩男男和男女两种情形。
3. 蒙提霍尔(Monty Hall)问题:你应该换门吗?
你从三扇门中选一扇。知道汽车在哪里的主持人打开另一扇门,露出一只山羊,并问你要不要换。应该换。你第一次的选择有 1/3 的概率是对的,主持人的动作不会改变这一点。其余 2/3 的情况下,汽车在剩下的那扇门后面。换门的获胜概率是 2/3。
4. 房间里至少要有多少人,两人同一天生日的概率才超过 50%?
从对立事件入手。n 个人的生日全都不同的概率是 (365/365) × (364/365) × ... × ((365 − n + 1)/365)。22 人时至少两人同生日的概率是 47.6%,23 人时是 50.7%。答案是 23。
5. 某种疾病的患病率为 1%。一项检测能查出 99% 的真实病例,误报率为 5%。你的检测结果呈阳性,你真正患病的概率是多少?
用 10,000 人来套用贝叶斯(Bayes)法则。其中 100 人患病,其中 99 人检测呈阳性。另外 9,900 人没有患病,其中 5%,即 495 人,仍然检测呈阳性。在 594 个阳性结果中,只有 99 个是真的:99/594 = 1/6,约为 16.7%。
这说明,即使检测效果很好,罕见疾病的阳性结果大多数也是误报。
6. 从一副牌中抽五张,至少抽到一张 A 的概率是多少?
同样用对立事件来算。不含 A 的五张牌组合数是 C(48,5),全部组合数是 C(52,5)。没有 A 的概率是 65.9%,所以至少有一张 A 的概率是 34.1%。
7. 在一根木棍上随机取两个点将其折断。三段能组成三角形的概率是多少?
三段长度能组成三角形,当且仅当没有任何一段超过木棍的一半。概率为 1/4。快速的论证方法是:某一段超过一半的概率是 1/4,至多只有一段能超过一半,而共有三段,所以某一段过长的概率是 3/4。
期望值题
8. 抛硬币要多少次才能第一次出现正面?要多少次才能连续出现两次正面?
第一次出现正面:每次抛掷成功的概率是 1/2,所以期望次数是 2。
连续两次正面:设答案为 E。如果第一次抛出反面(概率 1/2),就用掉一次抛掷,然后重新开始。如果先正后反(概率 1/4),就用掉两次抛掷,然后重新开始。如果先正后正(概率 1/4),两次就完成了。所以 E = 1/2 × (1 + E) + 1/4 × (2 + E) + 1/4 × 2,解得 E = 6。
追问:先正后反平均只需 4 次抛掷。出现第一次正面之后,进度不会丢失:之后再出现正面,只是继续等待一次反面而已。
9. 掷一颗骰子,要期望多少次才能看到全部六个面?
这是经典的“收集优惠券”问题。看到 k 个面之后,出现新面的概率是 (6 − k)/6,所以期望等待次数是 6/(6 − k)。把它们加起来:6/6 + 6/5 + 6/4 + 6/3 + 6/2 + 6/1 = 14.7 次。
10. 掷一颗骰子,你获得的美元数等于朝上的点数。你可以重掷一次。这个游戏值多少钱?
掷一次的期望值是 3.5。所以如果点数是 4、5 或 6 就保留,如果是 1、2 或 3 就重掷。一半的时候你保留下来的平均是 5,另一半的时候你选择重掷,价值为 3.5:0.5 × 5 + 0.5 × 3.5 = 4.25。
如果允许重掷两次,那么第一次掷完之后,这个游戏的价值是 4.25,所以你现在只保留 5 或 6:(2/6) × 5.5 + (4/6) × 4.25 = 4.67。
11. 两颗骰子中较大点数的期望值是多少?
最大值不超过 k 的结果有 36 种中的 k² 种,所以最大值恰好等于 k 的结果有 k² − (k − 1)² = 2k − 1 种。期望值为 (1×1 + 2×3 + 3×5 + 4×7 + 5×9 + 6×11)/36 = 161/36,约为 4.47。
12. 你有 $3。每一轮抛一枚公平硬币,正面你赢 $1,反面你输 $1。当你的钱变为 $0 或 $10 时游戏结束。你最终达到 $10 的概率是多少?
对于公平游戏,你的期望财富不会改变,所以 10 × p + 0 × (1 − p) = 3,得 p = 3/10。
常见的追问是:游戏平均持续多久?对于从 k 出发、在 0 和 N 处设有边界的公平随机游走,期望轮数是 k × (N − k) = 3 × 7 = 21。
13. 一枚硬币出现正面的概率为 60%,下注按 1 赔 1 结算。每一轮你应该下注资金的多大比例?
全押可以让单轮的期望值最大化,但在多轮之后必然导致破产。凯利(Kelly)准则使长期增长率最大化。对于 1 赔 1 的下注,它建议下注资金的 2p − 1,也就是 2 × 0.6 − 1 = 20%。
一个好的回答还会补充:许多交易员下注比凯利准则建议的更少,因为真实概率永远无法精确知道,而下注过度的代价很高。
心算与做市
14. 17 × 23 等于多少?
先找结构。17 × 23 = (20 − 3)(20 + 3) = 400 − 9 = 391。面试官关心的是你有没有方法,并且是否能说出来。多练习两位数乘法、分数化小数和百分比,直到做得又快又准。
15. 请给三颗骰子点数之和开一个市场(报价)
你需要给出买价和卖价。先从期望值开始:3 × 3.5 = 10.5。一颗骰子的标准差约为 1.71,三颗骰子的标准差约为 2.96,所以中间值附近确实有相当大的波动范围。
一个合理的报价是“买价 10,卖价 11”。如果面试官以 11 的价格从你这里买入,你要问自己他可能知道什么,并把下一次报价往上调。考察的是:你能否围绕一个合理的公允价值快速报价,保持合理的价差,并在成交之后调整,而不是死守第一个数字。
统计题
16. A 与 B 的相关系数为 0.8,B 与 C 的相关系数也为 0.8。A 与 C 的相关系数可能是多少?
它不一定很高。其范围为 ρ(A,B) × ρ(B,C) ± √((1 − ρ(A,B)²)(1 − ρ(B,C)²)),即 0.64 ± 0.36。因此 A 与 C 的相关系数可以在 0.28 到 1 之间的任何值。
17. 某策略的日均收益率为 0.05%,日标准差为 1%。它的年化夏普(Sharpe)比率是多少?
在忽略无风险利率的情况下,日夏普比率为 0.05/1 = 0.05。假设每日收益相互独立、一年有 252 个交易日,均值随时间线性放大,标准差随时间的平方根放大,所以乘以 √252,约为 15.9。年化夏普比率约为 0.79。
要把这个假设说出来。如果收益存在自相关,这种放大方法就不对了。
18. 什么是 p 值?为什么很多回测看起来比实际效果好?
p 值是在原假设成立的前提下,观察到至少与你的结果一样极端的结果的概率。它不是原假设为真的概率。
回测看起来过于理想,原因有几个。如果测试 100 个策略,大约有 5 个会纯粹靠运气通过 5% 的显著性检验。前视偏差使用了当时无法获得的信息。幸存者偏差剔除了失败的公司。另外,在用于评估的同一份数据上调参,会拟合进噪声。好的回答会提到样本外测试、对试验次数进行校正,以及符合实际的交易成本。
期权题
19. 什么是看涨看跌平价?
对于不派息股票的欧式期权,在行权价 K 和到期时间 T 相同的情况下:C − P = S − K × e^(−rT)。一份看涨期权减去一份看跌期权的组合,与持有股票并在到期时欠付行权价的组合,收益相同。
举例:股价为 100,行权价为 100,利率为 5%,距到期还有一年。行权价的现值为 95.12。如果看涨期权的价格为 10.45,那么看跌期权的价值必须是 10.45 − 100 + 95.12 = 5.57。任何其他价格都会产生套利机会。
20. 解释 Delta、Gamma 和 Vega
Delta 是股价每变动 1 时期权价格的变动量。看涨期权的 Delta 在 0 到 1 之间。平值看涨期权的 Delta 接近 0.5,当利率和到期时间较长时会略高一些。在上面的例子中,如果波动率为 20%,它约为 0.64。
Gamma 是股价变动时 Delta 变化的快慢。平值且临近到期的期权,Gamma 最高。
Vega 是隐含波动率变动时期权价格的变化量。波动率上升时,看涨和看跌期权的价值都会增加,到期时间较长的期权 Vega 更大。
编程题
21. 编写一个函数,返回价格序列的最大回撤
最大回撤是从峰值到之后的低点的最大跌幅,以峰值的比例表示。在一次遍历中同时记录迄今为止的最高价,以及从该最高价出发的最大跌幅。
def max_drawdown(prices):
peak = prices[0]
worst = 0.0
for p in prices:
if p > peak:
peak = p
drawdown = (peak - p) / peak
if drawdown > worst:
worst = drawdown
return worst
print(max_drawdown([100, 120, 90, 110, 80, 130])) # 0.3333333333333333
答案是 33.3%,即从 120 跌到 80 的跌幅。该函数的时间复杂度为 O(n),额外空间复杂度为 O(1)。我们将它与暴力版本进行了对比测试,暴力版本会检查每一对交易日,测试使用了 2,000 条随机序列。想要更多练习,请参阅我们的Python 面试问题和大 O 复杂度速查表。
如何准备
- 反复练习经典题型,直到建模变成条件反射:条件概率、用递推求期望值,以及对立事件技巧。
- 连续几周每天练习心算。速度是可以训练出来的。
- 每道题都大声讲出思路。面试官评判的是推理过程,逻辑清楚的错误答案往往还能拿到分。
- 卡住的时候,试着从更小的情况入手。比如两扇门、两颗骰子、只折一次的木棍。
- 如果应聘交易岗位,可以和朋友一起练习做市,并在每次成交后更新报价。
- 也要准备好你自己的故事。公司仍然会问你为什么选择交易或研究,以及你做过什么项目。我们的请介绍一下你自己指南可以帮你准备这部分内容。
如果你在申请交易公司,也可以看看我们关于 DRW 在线测评 的笔记。如果是银行岗位,可以参阅投资银行面试问题,那里涵盖的是另一套话题。
练习大声讲出你的推理过程
YesToTheOffer 会把你的回答转写成文字,方便你回看自己的解释哪里出了问题。截图编程求助按 0.2 倍计时。免费 30 分钟,无需订阅。



