Millennium Management 是全球最大的多策略對沖基金之一,旗下 PM pod 數量近 300。Millennium 的 Quant Intern / Quant Researcher OA 在過去兩年內已經形成穩定模型——機率與期望、Pandas 時間序列、最優執行三大主線。本文按一畝三分地 + Wall Street Oasis 高頻面經做主題整理,並補充 VO代面 / VO輔助 實作備考。
Millennium OA 概覽
| 維度 | Quant Intern | Quant Researcher |
|---|---|---|
| 平台 | HackerRank + 自建 | HackerRank + 郵件附件 |
| 時長 | 75-120 分鐘 | 120-180 分鐘 |
| 題量 | 4-6 題(含機率 + Pandas + 程式設計) | 3-4 道大題 |
| 難度 | LC Medium-Hard + 機率扎實 | 偏研究 + 實作 |
| 重點 | 機率、Pandas、最優執行 | 因子構造、回測、模型 |
題型一:機率與期望
Millennium 的機率題以「幾何想像 + 簡單條件」為主,不會出現晦澀的特殊分布。
代表題 1:抽牌期望
一副 52 張牌洗勻後從頂部依次抽取。期望抽到第一張紅心 (Heart) 的位置是?
思路:13 張紅心把 52 張牌分成 14 段(前、中、後),由對稱性,第一張紅心前的「非紅心」期望 = (52 − 13) / (13 + 1) = 39/14。所以第一張紅心位置期望 = 39/14 + 1 ≈ 3.786。
代表題 2:隨機漫步過零次數
簡單隨機漫步 S_n = X_1 + ... + X_n,每一步 X_i = ±1 等機率。求 S_n = 0 的次數期望(n 給定)。
from math import comb
def expected_zero_crossings(n):
total = 0
for k in range(2, n + 1, 2):
prob = comb(k, k // 2) / (2 ** k)
total += prob
return total
Millennium 機率題最忌當場列方程——先寫直覺答案,再用 simulation 驗證,最後給閉式。
題型二:Pandas 時間序列
Millennium OA 經常給一段 .csv 風格的行情資料,要求用 Pandas 完成多步指標計算。
代表題:組合的日 PnL + 滾動 Sharpe
import pandas as pd
import numpy as np
def portfolio_metrics(df: pd.DataFrame, window: int = 60) -> pd.DataFrame:
"""
df 必含欄: date, ticker, close, weight
回傳每天的組合收益 + 滾動 Sharpe
"""
df = df.sort_values(["ticker", "date"]).copy()
df["ret"] = df.groupby("ticker")["close"].pct_change()
pnl = (df["ret"] * df["weight"]).groupby(df["date"]).sum()
rolling = pnl.rolling(window=window)
sharpe = rolling.mean() / rolling.std() * np.sqrt(252)
return pd.DataFrame({"pnl": pnl, "sharpe": sharpe})
Follow-up 1:要求處理停牌(缺失 close 時不能貢獻 pnl)。 Follow-up 2:要求支援 跨幣別(df 多一欄 currency + fx_rate)。
題型三:最優執行 / TWAP
代表題:分段最少 market impact 執行
需要在 T 個時間段內賣出 Q 股,每段執行量 q_t。每段的 market impact 函數 cost(q_t) = α · q_t²(α > 0),要求最小化總 cost。
思路:拉格朗日法,可證最優解是 q_t = Q / T(均勻切分,TWAP)。如果加約束 q_t ≤ cap,轉化為帶上界的二次規劃。
def twap_with_cap(Q, T, cap):
if Q <= cap * T:
return [Q / T] * T # 均勻
full = Q // cap
remainder = Q - full * cap
schedule = [cap] * full + [remainder] + [0] * (T - full - 1)
return schedule[:T]
Millennium 面試官最愛問的 follow-up 是:「如果 impact 是
α · q + β · q²呢?」——答案是仍均勻,但需要重新求導。
一畝三分地高頻題速查
| 類別 | 頻率 | 備考核心 |
|---|---|---|
| 機率 / 期望 | ★★★★★ | 對稱性、indicator、simulation |
| Pandas 時間序列 | ★★★★★ | groupby + rolling |
| 最優執行 / TWAP | ★★★★ | 凸最佳化、拉格朗日 |
| 因子構造 | ★★★ | IC / IR、winsorize |
| 簡化做市 | ★★ | bid-ask spread |
VO 流程
Millennium VO 通常 4-5 輪:
- HR 電話:動機、組別偏好(25 min)
- Quant 技術面 1:機率 + 簡單數學(45 min)
- Quant 技術面 2:Pandas live coding + 專案(60 min)
- PM Pod 匹配面:因子討論 + Sharpe(45 min)
- Hiring Manager:風險、行為題(30 min)
VO代面 / VO輔助 備考路徑
實戰做法
- 機率刷題:《Heard on the Street》第 1-3 章 + 《A Practical Guide to Quantitative Finance Interviews》(綠皮書)
- Pandas 速記:把
groupby、rolling、merge_asof、resample各練 10 題 - 最優執行:閱讀 Almgren-Chriss 論文(2000)+ 自己手推一遍
- PM Pod 面:準備 1 個你最熟悉的因子,能講清楚 IC、IR、turnover
oavoservice 的 VO代面 + VO輔助 一體化服務
針對 Millennium Quant 4-5 輪 VO(HR / Quant ×2 / PM pod / HM),oavoservice 提供:
- VO輔助:機率刷題 + Pandas live coding + Almgren-Chriss 推導 + PM pod 因子講解 mock
- VO代面:面試當天即時答題輔助,針對機率推理 + Pandas 時間序列 + PM pod 因子討論臨場支援
- 行為面劇本:圍繞「風險意識 + 團隊協作」準備 STAR 故事
具體方案與報價,加微信 Coding0201 溝通。
7 天衝刺方案
| 天數 | 任務 |
|---|---|
| D1 | 綠皮書第 1-3 章 + 隨機漫步 5 題 |
| D2 | Pandas 時間序列:組合 PnL / 滾動 Sharpe 一類 5 題 |
| D3 | 最優執行:Almgren-Chriss 推導一遍 |
| D4 | 因子構造:IC、IR、turnover 實作一遍 |
| D5 | 1 次完整 90 分鐘 OA mock |
| D6 | PM Pod 面:1 個因子講解 + 1 個風險問題 |
| D7 | 行為面 STAR:風險意識 + 團隊協作 |
FAQ
Millennium 機率題難嗎?
整體在 IMO / Putnam 入門級,但口語化講清楚是最大的難點。建議先寫直覺,再 simulation 驗證,最後閉式。
Pandas 不熟怎麼補?
最快路徑:把 groupby、rolling、merge_asof、resample 各練 10 題。Millennium 幾乎每場都會讓 live coding 一段。
Almgren-Chriss 一定要懂嗎?
不必全部推完,但要能講清楚為什麼 TWAP 是凸 quadratic cost 下的最優解,以及加上 cap / 風險厭惡後的變化方向。
Quant Intern 沒過冷卻期?
通常 12 個月。換組(如從 Statistical Arb 改投 Macro)一般不算同一池。
正在準備 Millennium Quant OA / VO?
oavoservice 提供 Millennium / Citadel / Two Sigma / Jane Street 等頂級 quant 機構的 機率題專項輔導、Pandas live coding、最優執行推導、PM Pod 面劇本等 VO輔助 服務。我們的 mentor 來自一線 quant 團隊,可以針對 Intern / Researcher 制定 1-2 週衝刺方案。
👉 立即加入微信:Coding0201,獲取 Millennium 高頻題與 VO輔助方案。
聯絡方式
Email: [email protected]
Telegram: @OAVOProxy