HackTheRounds Interview Experiences
Optiver Data Scientist Interview Experience (2026) - VWAP, Options Greeks & ARIMA, Offer
Optiver 2026 New Grad Data Scientist loop: VWAP anomaly detection, options portfolio delta, ARIMA forecasting OA, streaming median phone screen, execution strat
By Anonymous · 2026-04-17
Background
Walking into an Optiver Data Scientist loop without a stats background would have ended badly, and I'm glad I spent the six months before applying learning time-series methods and options math from scratch. I'm a new grad with a CS and applied math double major, and the offer I ended up with is the first DS role at a trading firm I had seriously targeted. Optiver's DS process is distinct from their quant trader track: more coding, more data engineering, still heavy on statistics but less game-theory flavored. Here is everything I hit.
Timeline
- Application: early February through their 2026 new grad pipeline
- OA invite: 9 days later, 5-day window
- OA attempted: 2 days after invite
- Phone screen invite: 1 week after OA
- Phone screen: 3 days later
- Virtual onsite (3 rounds, same day): 2.5 weeks after phone screen
- Offer: 6 business days after VO
- Total: ~7 weeks
Online Assessment (~2.5 hours)
The OA is bifurcated. Section 1 is coding on HackerRank (3 problems). Section 2 is 20 timed math reasoning questions.
Section 1: Coding
Problem 1, Market Data Processing. Given tick data (timestamp, price, volume) , compute the VWAP per minute, flag anomalous prints using a rolling z-score ( 3 sigma), and output the result as a time-sorted stream.
Pandas or a dict-of-lists keyed by minute. VWAP = sum(price volume) / sum(volume) . Rolling window I chose 30 minutes wide. Watch volume == 0 (divide-by-zero). Mixed-format timestamp parsing ate 10 minutes.
Problem 2, Options Portfolio Risk. Given a list of option positions (call/put, strike, expiry, quantity), compute the portfolio's total delta, the P&L under a ±5% shock in the underlying, and identify the position with the largest contribution to portfolio risk.
Call delta = N(d1) , put delta = N(d1) - 1 , with d1 = (ln(S/K) + (r + sigma^2/2)(T-t)) / (sigma sqrt(T-t)) . Used scipy.stats.norm.cdf . P&L shock first-order as delta dS , noted gamma becomes important for large shocks but used pure delta for the ±5% answer.
Problem 3, Time Series Forecasting. Given a univariate time series, fit an ARIMA(p,d,q) model, forecast 5 steps ahead, and produce a 95% confidence interval.
I used statsmodels.ARIMA . Differencing order d via ADF test; p and q via AIC over a small grid. CI comes from get forecast . I almost ran out of time here. In retrospect I should have hard-coded ARIMA(1,1,1) , the grader was testing output format, not model quality.
Section 2: Math Reasoning
Twenty problems, 3 minutes each. Mix of probability, combinatorics, linear algebra, and basic calculus. Three that stuck with me:
- Biased coin with P(H) = p. Let X be the expected number of flips to see pattern HHT. Compute X as a function of p.
- Prove that sample variance `S^2 = (1/(n-1)) * sum((X_i - X_bar)^2)` is an unbiased estimator of `sigma^2`.
- Fast exponentiation of a matrix A to the nth power. How would you compute `A^n` when n is very large?
1 needs a state machine: E 0 = expected time from "no progress," E H = from "one H," E HH = from "two Hs in a row." Three equations, solve for E 0 in terms of p. Answer: (1 + p + p^2) / (p^2 (1-p)) , but I re-derived it live rather than memorized it.
2 is a one-line proof if you remember E[sum(X i - X bar)^2] = (n-1) sigma^2 .
3 is eigendecomposition: A = P D P^{-1} and A^n = P D^n P^{-1} , since D is diagonal its nth power is elementwise. Fall back to repeated squaring if A isn't diagonalizable.
I finished 17 of 20 and guessed the remaining 3. The time pressure is real.
Phone Screen (45 min)
A coding-plus-stats round with an engineer. Two problems:
Part A, Streaming median. Implement a class that accepts integers via add(x) and returns the running median in O(log n) per add, O(1) per query. Classic two-heaps solution: a max-heap for the lower half and a min-heap for the upper half. After each add, rebalance so sizes differ by at most 1.
Part B, Linear regression from scratch. Implement fit(X, y) and predict(X) for OLS, no scikit-learn. The closed form is beta = (X^T X)^{-1} X^T y , plus an intercept. I used numpy.linalg.solve instead of inv for numerical stability. The interviewer pushed on what happens when X^T X is near-singular. I answered: regularize with a small ridge term, or use pseudo-inverse via SVD.
Virtual Onsite (3 rounds)
Round 1: Advanced Coding and Systems
Problem A, Real-time Market Data. Design a system that ingests 1M tick messages per second, computes real-time per-symbol VWAP, supports arbitrary historical range queries, and holds 99.9% ingestion latency under 1ms.
I sketched an event-driven pipeline: Kafka sharded by symbol, C++ stream processor per partition with pre-allocated ring buffers and SIMD aggregation, InfluxDB for historical storage, Redis for the hot last-hour cache. Latency budget: network 100μs, Kafka 200μs, processor 300μs, cache write 100μs, leaving 300μs slack. Discussed DPDK bypass for p99.99.
Problem B, Execution Strategy. Given an order book snapshot stream, compute an optimal execution schedule for a 10,000-share buy order over the next 60 minutes, balancing market impact against price risk.
TWAP baseline: 60 one-minute slices of 167 shares. Then volume-weighted using recent minute-ADV. Finally proposed a DP with state (time remaining, shares remaining, impact state) , action = next slice size, cost = slice impact(q) + price risk(time remaining) .
Round 2: Statistics and Probability
Three big questions, 50 minutes:
- How do you test whether a new trading algorithm outperforms the old one with statistical significance? I led with two-sample t-test on daily PnL, caveated that financial returns are fat-tailed and heteroskedastic. Better: Welch's t with robust covariance, or bootstrap percentile interval. Best: live A/B with randomized order flow and daily Bayesian update on cumulative PnL.
- How do you estimate portfolio VaR? Historical simulation, parametric (variance-covariance), Monte Carlo. I brought up backtesting via Kupiec POF test, which the interviewer asked me to explain: null is that observed breach frequency matches the VaR confidence level, log-likelihood ratio test.
- How do you test stationarity? ADF (Augmented Dickey-Fuller) standard, plus KPSS as a complement since they test opposite nulls.
Round 3: Machine Learning and Research
Feature engineering for intraday returns. Price-based (log returns at multiple horizons, realized vol, momentum), volume-based (relative volume vs 20-day ADV), microstructure (spread, order flow imbalance), and alternative data. Interviewer drilled on OFI: sum(bid qty change) - sum(ask qty change) over a window. Strong short-horizon predictor, decays fast.
Model validation in finance. Classic traps: look-ahead bias, survivorship bias, overfitting to regime. I described walk-forward validation with an expanding window, never using future data to train, and evaluating on economic significance (Sharpe, turnover, slippage-adjusted returns) rather than classification accuracy.
Deep learning for price prediction. Transformer for longer horizons (direct attention over distant context), LSTM for cheaper training and better interpretability. Regularization: dropout, early stopping on validation Sharpe not MSE, and ensemble averaging.
Result
Offer 6 business days after the VO. NYC office, competitive with a Two Sigma offer I had in the same cycle. They specifically cited the Round 2 statistics answers as standout.
Tips
- For Optiver's OA coding section, pre-build your pandas toolkit. VWAP, rolling z-score, and options Greeks are re-used every cycle. Have snippets ready. I had a personal gist with 15 functions I'd pasted into every coding round; half of them got used on Problem 1 alone.
- For the math section, expected-value state machines are mandatory. HHT, HTH, coupon collector, gambler's ruin, memorize the derivation pattern (define states, write linear equations, solve). Derive them fresh the night before the OA so they're fully loaded in working memory.
- Know Black-Scholes greeks cold, especially delta and gamma. Not just the formulas, but the financial interpretation: why delta of an ATM call is ~0.5, why gamma is largest ATM, why theta decays faster for short-dated options. These come up on the OA and again in the VO.
- For the system-design coding round, pre-memorize a realistic latency budget. Network, kernel, queue, processor, storage. Know the typical numbers for each layer in microseconds. "We have 1ms latency budget, so network ~100μs leaves ~900μs for processing" buys you instant credibility.
- Kupiec POF, ADF, KPSS. Those three tests will show up in Round 2. Memorize what each tests, the null hypothesis, and when you'd use each one. The interviewer expected me to name Kupiec without prompting.
- In Round 3, always close with economic significance. Optiver's DS team cares about PnL, not AUC. Any modeling answer that doesn't end with "and here's how I'd evaluate whether it makes money after costs" misses the point. Mention turnover and slippage explicitly.
Optiver's DS loop is heavy but fair. If you like intersection of statistics, time series, and market microstructure, you will enjoy the interviews even when they are hard. Good luck to anyone going through it.