← 返回部落格列表 Millennium Quant Intern OA 經驗複盤|Pandas + 機率 + 時序迴歸 OA輔助 實戰
Millennium

Millennium Quant Intern OA 經驗複盤|Pandas + 機率 + 時序迴歸 OA輔助 實戰

2026-05-23

Millennium(千禧年對沖基金,旗下 200+ 個 pod)的 Quant Researcher / Quant Trader Intern OA 主要由 HackerRank 投放,但和一般 SDE OA 幾乎沒有重疊:Pandas 時序處理、機率推理、線性迴歸 是真正的考點。本篇按近一年經驗複盤整理三大主線、給出完整解法、並明確 OA輔助 接入方式。

Millennium Quant Intern OA 概覽

維度 詳情
投放平台 HackerRank
時長 90–120 分鐘
題量 3–4 題(Pandas 1 + 機率 1 + 時序 1)
主考方向 時序資料處理、機率、線性代數
評分 全自動判題 + 隱藏資料集
通過率 社區反饋約 30%

主線一:Pandas 時序處理

題型描述

給定一份 prices.csv(symbol, date, close),要求:

Python 解法

import pandas as pd
import numpy as np

def compute_sharpe(df, window=20, annual=252):
    df = df.sort_values(['symbol', 'date'])
    df['ret'] = df.groupby('symbol')['close'].pct_change()
    df['vol'] = (df.groupby('symbol')['ret']
                   .rolling(window).std()
                   .reset_index(level=0, drop=True))
    sharpe = (df.groupby('symbol')['ret'].mean() /
              df.groupby('symbol')['ret'].std() *
              np.sqrt(annual))
    return sharpe.dropna()

易錯點pct_change 之後第一行是 NaN,必須 dropna 才能進入 rolling;社區反饋最常見錯誤是直接用 df['close'].rolling().std()(用了價格而不是收益率)。

主線二:機率推理

題型描述

例題:貝葉斯反推

「罐 A:5 黑 5 白;罐 B:8 黑 2 白。先隨機選罐再抽到一個黑球,問當時選的是罐 B 的機率?」

Python 解法(蒙地卡羅驗證)

import random

def bayes_simulation(trials=10**6):
    hits_black_in_b = 0
    hits_black = 0
    for _ in range(trials):
        urn = random.choice(['A', 'B'])
        if urn == 'A':
            ball = 'black' if random.random() < 0.5 else 'white'
        else:
            ball = 'black' if random.random() < 0.8 else 'white'
        if ball == 'black':
            hits_black += 1
            if urn == 'B':
                hits_black_in_b += 1
    return hits_black_in_b / hits_black

解析解P(B|black) = (0.5 × 0.8) / (0.5 × 0.5 + 0.5 × 0.8) = 8/13 ≈ 0.615

易錯點:HackerRank 機率題大多要求解析解 + 蒙地卡羅驗證兩段程式碼,單獨給一段會被扣分。

主線三:線性迴歸 / 時序

題型描述

「給定 X (features) 和 y (returns),用純 numpy 實作 OLS(不能用 sklearn)」「計算 R² + 殘差自相關」「偵測多重共線性」

Python 解法(OLS + R²)

import numpy as np

def ols(X, y):
    X = np.column_stack([np.ones(len(X)), X])
    beta = np.linalg.solve(X.T @ X, X.T @ y)
    y_hat = X @ beta
    ss_res = ((y - y_hat) ** 2).sum()
    ss_tot = ((y - y.mean()) ** 2).sum()
    r2 = 1 - ss_res / ss_tot
    return beta, r2

易錯點

  1. np.linalg.solvenp.linalg.inv 數值穩定;社區反饋隱藏 case 有 X.T @ X 接近奇異
  2. 必須加 intercept 列(np.ones),否則 R² 會低 5–15pp

Millennium Quant Intern OA 高頻題分布

題型 頻率 關鍵考點 易錯點
Pandas 時序 ★★★★★ groupby + rolling NaN 處理
貝葉斯反推 ★★★★ 解析 + MC 驗證 單段程式碼
OLS / 時序迴歸 ★★★★ 數值穩定 缺 intercept
蒙地卡羅模擬 ★★★ 收斂 + 方差 seed 固定
數學題(無程式碼) ★★ 簡答題 公式 LaTeX

OA輔助 實戰路徑

oavoservice 的 OA輔助 服務

一份 Quant Intern「數值陷阱」清單

我們維護了一份 Quant Intern OA 數值陷阱清單:包含 pct_changediff 的差異、rolling(window).std(ddof=1) 預設值、bayes 題的 prior 寫法等共 18 項。OA輔助 學員可以直接拿到這份清單。

具體方案與報價,加微信 Coding0201 溝通。


FAQ

Millennium Quant Intern OA 用什麼語言?

主要 Python(pandas + numpy + scipy)。HackerRank 沙箱預設帶 pandas / numpy / scipy,但不帶 sklearn / statsmodels

通過 OA 後多久面試?

社區反饋 onsite 通常 onsite 排隊 2–4 週,因為 Millennium 是 pod fitting 模式,需要找到合適的 PM。

Quant Researcher / Trader / Developer OA 題庫一致嗎?

不完全一致:QR 偏機率 + 時序,Trader 偏 mental math + market intuition,Developer 偏經典 LeetCode + 系統設計。

OA 沒過冷卻期多久?

12 個月。跨 pod / 跨崗位(QR ↔ Trader)一般另算池子,可以更早再投。


正在準備 Millennium / Citadel / Two Sigma / DE Shaw / Jane Street Quant Intern?

oavoservice 長期追蹤一線對沖基金 / 量化機構(Millennium / Citadel / Two Sigma / DE Shaw / Jane Street / HRT)的 Quant OA + VO 真題。mentor 來自一線 Quant Researcher / Trader 團隊,可以提供 題型分桶、數值陷阱清單、HackerRank 模擬、pod fitting 劇本 等 OA輔助 / VO輔助 服務。

👉 立即添加微信:Coding0201獲取 Millennium Quant Intern 高頻題與 OA輔助 方案


聯絡方式

Email: [email protected]
Telegram: @OAVOProxy