Two Sigma's 2026 spring / summer OA stays true to form: plenty of time, plenty of traps. Quant Engineer / Quant Researcher / Modeler all ship on CodeSignal but the surfaces diverge. Based on 1point3acres + Discord reports, this guide breaks down IPO allocation, drainage simulation, and time-series regression, with full solutions and an OA assist playbook.
Two Sigma OA Snapshot (2026)
| Dimension | Detail |
|---|---|
| Platform | CodeSignal (in-house variant) |
| Duration | 90–120 minutes |
| Questions | 2 (independently scored) |
| Focus | Algorithms + literal business rules |
| Grading | Auto + hidden corner cases + complexity caps |
| Pass rate | ~28% per 1point3acres |
| Cooldown | 12 months (cross-role separate) |
Track 1: IPO Allocation
Problem
n clients submit IPO demand demand[i]; total available S < sum(demand). Allocate by proportion + lot rounding + leftover by timestamp round-robin.
Python Solution
def ipo_allocate(demands, ts, S, lot=100):
n = len(demands)
total = sum(demands)
base = [(d * S) // total // lot * lot for d in demands]
leftover = S - sum(base)
order = sorted(range(n), key=lambda i: ts[i])
i = 0
while leftover >= lot and i < n:
idx = order[i]
if base[idx] < demands[idx]:
base[idx] += lot
leftover -= lot
i += 1
return base
Complexity: O(n log n). Most common bug: leftover not fully redistributed when lot doesn't divide S.
Track 2: Drainage Simulation
Problem
Given a terrain grid heights[][] with water water[][], simulate connected regions draining simultaneously until empty. Return per-step total water.
Python Solution (Union-Find + topological descent)
from collections import defaultdict
def drain_simulate(heights, water):
R, C = len(heights), len(heights[0])
cells = [(heights[r][c], r, c) for r in range(R) for c in range(C)]
cells.sort()
parent = {}
def find(x):
while parent.get(x, x) != x:
parent[x] = parent.get(parent[x], parent[x])
x = parent[x]
return x
def union(a, b):
ra, rb = find(a), find(b)
if ra != rb:
parent[ra] = rb
pool = defaultdict(int)
series = []
for h, r, c in cells:
parent[(r, c)] = (r, c)
pool[(r, c)] = water[r][c]
for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
nr, nc = r + dr, c + dc
if 0 <= nr < R and 0 <= nc < C and (nr, nc) in parent:
union((r, c), (nr, nc))
series.append(sum(pool.values()))
return series
Complexity: O(R·C·α(R·C)). Hidden cases: uniform-height grid, single row / column, zero-water cells in connectivity logic.
Track 3: Time-Series Regression (Modeler)
Problem
Given a time series prices[] and a factor matrix factors[][] (k factors per time step), compute OLS beta and R² in pure numpy.
Python Solution
import numpy as np
def ols_with_intercept(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()
return beta, 1 - ss_res / ss_tot
Trap: np.linalg.inv blows up when X.T @ X is near-singular — use solve. Skipping the intercept column drops R² noticeably.
Two Sigma OA Frequency
| Track | Frequency | Primary Roles | Common Trap |
|---|---|---|---|
| IPO allocation | ★★★★★ | Quant Engineer | Lost leftover |
| Drainage simulation | ★★★★ | Quant Engineer | Connectivity boundary |
| Time-series OLS | ★★★★ | Modeler | Missing intercept |
| Factor correlation | ★★★ | Modeler | Numerical stability |
| Quote parsing | ★★ | Quant Engineer | Missing field |
OA Assist Playbook
What oavoservice OA assist gives you
- Question bucketing: IPO / drainage / regression — 12 variants aligned to Two Sigma's CodeSignal surface
- 120-minute timed simulation: mentor-issued at real pace
- Live OA assist: low-latency idea check (within compliance)
- VO transition: 4-round onsite (coding + sysdesign + modeling + BQ), same mentor
A Two Sigma business-glossary list
Two Sigma prompts are dense with domain terms: IPO allocation, basis point, lot size, water level, permeability. We maintain a business-glossary checklist so candidates can parse the prompt fast instead of re-reading. OA assist members get it directly.
Add WeChat Coding0201 for pricing and scope.
FAQ
What languages does Two Sigma OA accept?
All CodeSignal-supported. ~70% of community reports use Python (Modeler-heavy with numpy).
Is 120 minutes enough for 2 questions?
Yes, but prompts are long and rule-heavy — budget ~8–10 minutes just to read each. Plan for 50 minutes per problem (including reading) and 20 minutes for corner-case verification.
Are Quant Engineer / Modeler / QR OAs the same bank?
No: Quant Engineer = algorithms + business rules; Modeler = numpy + time series; QR = probability + factors.
Cooldown after a fail?
12 months. Cross-role (Engineer ↔ Modeler) typically uses a different pool.
Preparing for Two Sigma / Citadel / Millennium / Jane Street / HRT?
oavoservice tracks Two Sigma / Citadel / Millennium / Jane Street / HRT / DE Shaw end-to-end. Mentors come from live Quant Engineer / Researcher teams and provide question bucketing, 120-minute timed simulation, business-glossary list, and pod fitting scripts.
👉 Add WeChat: Coding0201 for the Two Sigma question bank and OA assist plan.
Contact
Email: [email protected]
Telegram: @OAVOProxy