Quant interview preparation
Prop market making and quantitative research, weighted the way the interviews actually are: probability and expected value, statistics and machine learning, market making logic, programming and options. Every question is either traced to a named firm from a public candidate report, or tagged at desk level when we could not trace it, and every probability answer shows the reasoning path rather than just the number.
100 questions, mapped to the firms that asked them
- Questions
- 100
- Traced to a firm
- 53
- Firms
- 15
- Updated
- September 2026
005I shuffle a deck and turn cards face up one at a time. At any point you may say stop, and you win if the next card is red. What is your optimal strategy and what is your probability of winning?Jump TradingResearch · Chicago · 2018
Say this
Every strategy wins with probability exactly one half, so there is no optimal strategy. Stopping before the first card is as good as any clever rule based on the count.
Then walk it
- The quick proof is a symmetry argument. Fix any stopping rule and imagine swapping the colour of every card in the deck. The rule's decisions are determined by cards already seen, and the swap turns every win into a loss and every loss into a win, so wins and losses are equally likely.
- The cleaner proof is a martingale. Let X be the fraction of red cards remaining. Before you see a card, the expected fraction of reds remaining after you see it is exactly the current fraction, because the card you turn is a uniform draw from what is left. So X is a martingale.
- Your win probability when you stop is X at the stopping time. Optional stopping says the expected value of a bounded martingale at any stopping time equals its starting value, which is 26/52, or a half.
- This is the whole lesson of the problem. Your information at the moment you stop is already priced into the state. There is no edge in a fair game no matter how you time it.
- One caveat that makes it a real problem rather than a trick: if you are forced to keep going to the last card, you still win a half, because the last card is red with probability a half. But the variance of the outcomes differs across strategies even though the mean does not, and if you had a utility function that is not linear you would care.
Where candidates lose it
Inventing a rule like wait until more blacks than reds have come out, and claiming it beats a half. That intuition feels right and it is wrong, because the situations in which the rule fires are exactly the situations where the deck was red-heavy from the start. Name the martingale and use optional stopping, or at minimum give the colour-swap symmetry argument.
Expect next
- Prove it with optional stopping, precisely.
- Does the answer change if you can also bet on black?
- Which strategy has the lowest variance of outcome?
Reported by candidates at Jump Trading (Research, Chicago, 2018). Source: Wall Street Oasis.
013You have a feed of a hundred thousand data points and you know fifteen of them are missing, recorded as zeros at the end. If you pull a window, what is the probability of at least one missing value?Jump TradingProp Trading · Remote · 2022
Say this
Use the complement. For a sample of n points drawn without replacement from 100,000 of which 15 are bad, the probability of at least one bad is one minus the hypergeometric probability of none, which is one minus the product over i of (99,985 minus i)/(100,000 minus i). For small n that is well approximated by one minus (1 minus 0.00015) to the n.
Then walk it
- Always compute at least one as one minus none. Summing the cases is the slow road and it invites double counting.
- The exact object is hypergeometric: choose n from 99,985 good over choose n from 100,000. For n much smaller than 100,000 the with and without replacement answers agree to several decimals.
- Numbers give it life. p is 15 over 100,000, which is 0.00015. For a window of 1,000 points, one minus 0.99985 to the 1000 is about 13.9 percent. For a window of 100 it is about 1.5 percent. So this is a real problem, not a rounding issue.
- Useful shortcut: for small p and moderate n the answer is roughly n times p, capped by 1. A thousand times 0.00015 is 0.15, close to the exact 0.139, and the Poisson approximation 1 minus e to the minus 0.15 gives 0.1393, which is very close.
- The thing I would say next on a desk, because it is the real question: they are at the end of the series, which is not random at all. If they are the most recent 15 points, then any window containing the tail hits all 15 with certainty and every other window hits none. Position matters more than the count.
Where candidates lose it
Treating the missing points as randomly scattered when the question says they sit at the end. That is the detail being tested. Give the hypergeometric answer for the random case, then flag the structural point: trailing zeros are usually a feed-truncation artefact, so the right fix is to detect and drop the tail, not to price the probability.
Expect next
- How would you detect that the zeros are missing values rather than genuine zeros?
- What is the Poisson approximation and when does it break?
- How do you handle those points in a model without leaking future information?
Reported by candidates at Jump Trading (Prop Trading, Remote, 2022). Source: Wall Street Oasis.
020How many zeros are at the end of a thousand factorial?Jump TradingTrading · Chicago · 2013
Say this
249. A trailing zero needs a factor of ten, which needs a two and a five, and fives are scarcer than twos, so just count the fives: 200 plus 40 plus 8 plus 1 equals 249.
Then walk it
- Trailing zeros equal the number of times 10 divides the number, which is the minimum of the exponent of 2 and the exponent of 5 in the prime factorisation. In a factorial, 5 always binds.
- Legendre's formula: sum of floor(1000 divided by 5 to the k). That is floor(1000/5) equals 200, floor(1000/25) equals 40, floor(1000/125) equals 8, floor(1000/625) equals 1, and floor(1000/3125) equals 0.
- 200 plus 40 plus 8 plus 1 gives 249.
- Why the higher powers: 25 contributes two fives, not one, so it must be counted again. Missing that is the single most common error and it costs you 49.
- Quick sanity check on the order of magnitude: roughly 1000/4 is 250, because each multiple of five contributes one and a bit. 249 sits right where it should.
Where candidates lose it
Answering 200 by counting only the multiples of five. Multiples of 25, 125 and 625 carry extra factors of five and each must be counted again. Say out loud why five binds rather than two, because that is the part of the reasoning being graded.
Expect next
- How many zeros in 100 factorial?
- How many digits does 1000 factorial have?
- What is the last non-zero digit of 100 factorial?
Reported by candidates at Jump Trading (Trading, Chicago, 2013). Source: Wall Street Oasis.
037You stand on a road and watch cars drive past. How would you estimate the parameter of the underlying distribution?Jump TradingQuantitative Research · Chicago · 2018
Say this
First I would state the model: arrivals as a Poisson process with rate lambda, so inter-arrival times are exponential with mean 1 over lambda. Then the maximum likelihood estimate of lambda is just the count divided by the observation time, and its standard error is lambda over the square root of the count.
Then walk it
- Model choice first, and justify it: independent arrivals at a constant rate with no memory gives a Poisson process. That is reasonable on a quiet road, and clearly wrong near a traffic light where cars arrive in platoons.
- MLE: for n arrivals in time T, lambda hat is n over T. It is unbiased, and the variance is lambda over T, so the relative standard error is 1 over the square root of n. Twenty-five cars gives you a 20 percent standard error, a hundred cars gives 10 percent.
- That tells you the sample size you need before you open your mouth about precision. If someone wants the rate to five percent, you need 400 cars.
- Now the diagnostics, which are what a research interview is actually about. Plot the inter-arrival times and check whether they look exponential. Over-dispersion, meaning variance above the mean of the counts, tells you arrivals are clustered and Poisson is wrong. Then I would go to a Cox process or a Hawkes process with self-excitation.
- And I would flag the estimation trap: if instead I sampled by picking a random moment and measuring the gap I happened to land in, I would oversample long gaps. That is the inspection paradox, and it biases the mean gap upward by a factor of one plus the squared coefficient of variation. It is the same bias that makes waiting times feel longer than the timetable says.
Where candidates lose it
Jumping to a formula without stating the model or checking it. The interviewer wants model, estimator, standard error, then diagnostics. The specific failure mode they are hunting is the inspection paradox, so mention length-biased sampling unprompted. Hawkes processes are the right answer for clustered arrivals and they are also how trade arrivals actually behave in markets.
Expect next
- How would you test whether the Poisson assumption holds?
- What if the cars arrive in clusters?
- How long do you need to watch to get the rate within five percent?
Reported by candidates at Jump Trading (Quantitative Research, Chicago, 2018). Source: Wall Street Oasis.
060You backtested a strategy and it performed brilliantly, but in live trading you keep losing money. What would you do?Jump TradingQuantitative Research · Chicago · 2018
Say this
First I would cut the size, because the priority is to stop bleeding while I diagnose. Then I would work through the causes in order of likelihood: costs and slippage, look-ahead or survivorship bias in the backtest, overfitting from too many trials, and only last the possibility that the edge was real and has decayed.
Then walk it
- Costs first, because it is the most common and the easiest to check. Compare realised fill prices against the prices the backtest assumed. If the backtest filled at mid and you are paying the spread plus impact, a strategy with a one basis point edge and a two basis point cost is a losing strategy that looked like a winner. Reconstruct the P&L attribution trade by trade against the simulated trades.
- Then look-ahead bias. Did any feature use data timestamped after the decision, including restated fundamentals, index membership known only later, or a corporate action applied on the announcement date rather than the effective date? Survivorship bias in the universe is the same family of error.
- Then overfitting. How many variants did I try before this one? If the answer is hundreds, the in-sample Sharpe is a maximum over many draws, and the deflated Sharpe is the honest number. Test on a market or a period I never touched.
- Then regime and decay. Plot the backtest P&L by year and see whether the edge was concentrated in one period. Check whether the alpha has been crowded out, which usually shows up as the signal still predicting but the entry price already moved.
- And the meta-answer, which is the one they want: I would write the diagnosis as a hypothesis with a test, not a list of possibilities. For example, if costs are the cause, the loss should scale with turnover, so I would compare the live P&L of the highest and lowest turnover sleeves. Then I would say what would make me shut it off permanently, and I would set that threshold before I looked at any more data.
Where candidates lose it
Jumping straight to the market regime changed. That is the excuse every losing strategy gets and it is almost never the first cause. The ordered list of costs, bias, overfitting, then decay is what a research head wants to hear, along with the instinct to reduce size before you finish diagnosing.
Expect next
- How exactly would you test whether costs are the cause?
- How many strategy variants did you try, and how should that change your prior?
- At what point do you shut it off for good?
Reported by candidates at Jump Trading (Quantitative Research, Chicago, 2018). Source: Wall Street Oasis.
079How would you store key-value pairs, and what are the tradeoffs between the implementations?Jump TradingEngineering · Cambridge · 2019
Say this
Hash table for O(1) average lookup with no ordering, balanced tree for O(log n) with ordered iteration and range queries, and a flat sorted array if the data is static and you care about cache behaviour. The choice is driven by whether you need ordering and what your access pattern looks like in memory.
Then walk it
- Hash table: O(1) average, O(n) worst case on collisions, no ordering, and rehashing causes an occasional large latency spike. That spike is a real problem on a trading hot path and it is why people pre-size their maps.
- Balanced tree, red-black or B-tree: O(log n) guaranteed, ordered traversal, range queries, and predictable latency. Worse constants and worse cache locality because of pointer chasing.
- The tradeoff that matters most in practice is memory layout, not big-O. C++ unordered_map uses separate chaining with nodes scattered across the heap, so every lookup is potentially a cache miss. An open-addressing flat hash map keeps everything in one array and is commonly two to three times faster in real workloads at the same asymptotic complexity.
- For a mostly-static table, a sorted array with binary search beats both: contiguous memory, no pointers, and for small n a linear scan beats binary search because it is branch-predictable and prefetchable. Under about 16 to 32 entries, linear wins.
- And on disk the answer changes completely: B-trees for read-heavy workloads because of the branching factor against block size, LSM trees for write-heavy because they turn random writes into sequential ones. I would want to know the read-write ratio and whether the working set fits in cache before choosing anything.
Where candidates lose it
Answering hash map, O(1), done. The question says tradeoffs, so it is a systems question and the interviewer at a trading firm cares about tail latency and cache behaviour more than asymptotic complexity. Mention rehashing spikes and pointer chasing, and ask what the access pattern is.
Expect next
- Why is std::unordered_map often slow in practice?
- How would you avoid latency spikes from rehashing?
- What changes if the data lives on disk?
Reported by candidates at Jump Trading (Engineering, Cambridge, 2019). Source: Wall Street Oasis.
080Can you implement a linked list, and when would you actually use one on a trading system?Jump TradingProp Trading · Remote · 2022
Say this
Yes, a node with a value and a next pointer, plus a head, and the usual care about the empty list and about updating head when you insert or delete at the front. But the honest answer to the second half is: rarely, because pointer chasing destroys cache performance.
Then walk it
- The implementation: struct with value and next, insert at head in O(1), search in O(n), delete given the previous node in O(1). Use a dummy head node and most of the edge cases disappear, which is the trick worth knowing for interviews.
- The standard edge cases they will check: empty list, single element, deleting the head, and not leaking the node you unlinked. In C++ that means being explicit about ownership, and in a real codebase it means a unique pointer or an arena.
- What a linked list genuinely buys you: O(1) splice of a node from the middle if you already hold a pointer to it, and stable addresses so a pointer stays valid across insertions. That is exactly the requirement in a limit order book, where you need to cancel an arbitrary resting order in constant time, so orders at a price level are typically an intrusive doubly linked list with a hash from order id to node.
- What it costs: every traversal is a potential cache miss, and a vector beats a list for iteration by an order of magnitude even when the asymptotics say otherwise.
- So the real-world answer is an intrusive list over a pre-allocated node pool, not a textbook list with individual heap allocations. Saying that is the difference between having done the exercise and having written low-latency code.
Where candidates lose it
Writing the code correctly and having nothing to say about why you would use one. At a trading firm the interesting half is the memory and cache discussion, and the order book cancel case is the one concrete example where a linked list is genuinely the right structure. Also do not forget the dummy head trick, it removes most of the bugs.
Expect next
- Reverse it in place.
- Detect a cycle in constant space.
- Why would a vector usually beat a list even when the complexity says otherwise?
Reported by candidates at Jump Trading (Prop Trading, Remote, 2022). Source: Wall Street Oasis.
Firm tags come from public, anonymous candidate reports on Wall Street Oasis: strong signal, not sworn testimony. Firms are named as the places a question was reported, not as partners of Fin Maverick. Answers are written for this page to show how to think out loud; they are not scripts to recite.

