‹ 全部面经
Two Sigma OA 3 题拿下:二维数据点 + Pandas 过滤 + 线性回归算资产收益
Two Sigma OA 复盘:100 分钟 3 题,二维数据点处理、Pandas 数据过滤、用线性回归系数计算资产收益率(Beta / Alpha),附考点梳理与 Python 参考代码。
Two Sigma
OA
OA 概况
- 题量 / 时长:3 题,100 分钟
- 结果:OA 拿下 ✅
| 题目 | 考点 |
|---|---|
| 第 1 题 | 二维数据点处理 |
| 第 2 题 | Pandas 数据过滤 |
| 第 3 题 | 线性回归系数,计算资产收益率 |
目前题库不多,bar 相对较低。欢迎交流!
第 2 题:Pandas 数据过滤 —— 常用写法
Two Sigma 的数据题很看重 Pandas 熟练度,下面几种写法建议练到不用查文档:
import pandas as pd
def filter_trades(df: pd.DataFrame, min_price: float, start: str) -> pd.DataFrame:
"""保留价格 >= min_price、日期 >= start 的有效交易,并按日期排序"""
df = df.dropna(subset=["price", "volume"])
mask = (df["price"] >= min_price) & (pd.to_datetime(df["date"]) >= pd.Timestamp(start))
return df.loc[mask].sort_values("date").reset_index(drop=True)
def daily_volume_by_symbol(df: pd.DataFrame) -> pd.DataFrame:
"""按股票汇总每日成交量"""
return df.groupby(["symbol", "date"], as_index=False)["volume"].sum()
注意:多个条件要用 & / | 并且每个条件加括号,不能用 and / or。
第 3 题:线性回归系数 → 资产收益率
常见题型是用资产收益率 y 对市场收益率 x 做一元线性回归 y = α + βx:
- β(Beta) = Cov(x, y) / Var(x),表示资产对市场波动的敏感度
- α(Alpha) = mean(y) − β · mean(x)
- 收益率一般用
r_t = P_t / P_{t-1} − 1从价格序列算出
def returns(prices):
return [prices[i] / prices[i - 1] - 1 for i in range(1, len(prices))]
def regression(x, y):
"""一元最小二乘,返回 (alpha, beta)"""
n = len(x)
mx, my = sum(x) / n, sum(y) / n
cov = sum((a - mx) * (b - my) for a, b in zip(x, y))
var = sum((a - mx) ** 2 for a in x)
beta = cov / var
return my - beta * mx, beta
边界:价格序列长度小于 2、市场收益率方差为 0 时要单独处理。