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
002I hand you a coin that comes up heads one third of the time. How do you generate a fair coin flip from it?D.E. ShawResearch · New York · 2026Tower Research CapitalProp Trading · New York · 2019
Say this
Flip it twice. Call heads-then-tails a fair heads, tails-then-heads a fair tails, and if you get HH or TT throw the pair away and start again. HT and TH both have probability p times one minus p, so they are equally likely whatever p is.
Then walk it
- With p equal to a third: HT is 1/3 times 2/3 which is 2/9, and TH is 2/3 times 1/3 which is also 2/9. Identical, so conditioning on one of the two having happened gives you exactly a half.
- That is von Neumann's trick. The point is that it needs no knowledge of p at all, which is what makes it useful. You never have to estimate the bias.
- It does need two things: the flips are independent, and p is strictly between zero and one. A coin that is genuinely two-headed breaks it, and so does a coin whose bias drifts flip to flip.
- Probability a given pair is useful is 2 times 2/9, which is 4/9. So you discard more than half your pairs at p equal to a third.
- The honest limitation: it is unbiased but wasteful. If the bias drifts slowly, you can protect yourself by pairing adjacent flips rather than flips far apart, so the drift cancels locally.
Where candidates lose it
Trying to estimate p first and then correct for it. That introduces estimation error and gives you an approximately fair coin, not a fair one. The elegant answer is exactly fair with zero knowledge of p, and the interviewer is looking for that symmetry argument.
Expect next
- What is the expected number of flips of the biased coin per fair flip?
- How would you get a uniform random number on one to three from the same coin?
- Can you do better than throwing HH and TT away entirely?
Reported by candidates at D.E. Shaw (Research, New York, 2026); Tower Research Capital (Prop Trading, New York, 2019). Source: Wall Street Oasis.
003Using that procedure with p equal to one third, what is the expected number of biased flips you need to produce one fair flip?D.E. ShawResearch · New York · 2026Tower Research CapitalProp Trading · New York · 2019
Say this
Four and a half. Each pair succeeds with probability 2p(1-p), which is 4/9 here, so the number of pairs is geometric with mean 9/4, and each pair costs two flips. Two times 9/4 is 4.5 flips.
Then walk it
- A geometric with success probability q has mean 1/q. Here q is 4/9, so you expect 2.25 pairs before one is usable.
- Two flips per pair gives 4.5 flips per fair bit. Say the arithmetic out loud so the interviewer sees the two-step structure: geometric on pairs, then a constant multiplier.
- Sanity check the extremes. At p equal to a half, q is 1/2 and the cost is 4 flips per fair bit, which is the cheapest this method ever gets. As p goes to zero the cost blows up like 1/p, which matches the intuition that a near-deterministic coin carries almost no information.
- Compare that to the theoretical floor. A p equal to 1/3 coin carries about 0.918 bits of entropy per flip, so in principle you need only about 1.09 flips per fair bit. Von Neumann at 4.5 is four times worse than optimal.
- The gap is the interesting part, and it is where the follow-up goes: you are throwing away the information in the discarded HH and TT pairs, and better extractors recycle it.
Where candidates lose it
Forgetting to double. Candidates compute 9/4 as the number of trials and stop, when a trial is a pair of flips. Also worth stating the entropy bound unprompted, because the interviewer is almost certainly going to ask whether you can do better, and knowing the floor is how you answer that credibly.
Expect next
- What is the information-theoretic minimum number of flips?
- Describe a scheme that gets closer to that bound.
- What is the variance of the number of flips, not just the mean?
Reported by candidates at D.E. Shaw (Research, New York, 2026); Tower Research Capital (Prop Trading, New York, 2019). Source: Wall Street Oasis.
004Given a biased coin with probability p, how would you generate n independent fair coin tosses, and what is the lower bound on the number of biased tosses you need?Tower Research CapitalTrading · Princeton · 2018D.E. ShawResearch · New York · 2026
Say this
The bound is information-theoretic. Each biased flip carries H(p) bits of entropy, where H(p) is minus p log2 p minus (1-p) log2 (1-p), and each fair flip you output consumes exactly one bit. So you need at least n divided by H(p) biased flips on average, and no scheme can beat that.
Then walk it
- The argument is conservation of randomness. You cannot manufacture entropy, only repackage it, so expected input entropy must be at least expected output entropy.
- At p equal to a half, H is 1 and the bound is n flips, which is obviously right. At p equal to 0.1, H is about 0.47, so you need roughly 2.1 flips per fair bit at best.
- Von Neumann pairing achieves 1/(2p(1-p)) flips per bit, which at p equal to 0.1 is about 5.6. Miles off the 2.1 floor.
- To get close, you recycle the discarded information. Elias's and Peres's extractors take the sequence of discarded HH/TT outcomes and the positions of the successes, both of which still carry entropy, and feed them back in recursively. Peres's construction converges to the entropy bound as the block length grows.
- What I would actually say on a desk: for n fair bits I would use pairing because it is three lines of code and provably correct, and I would only reach for a Peres extractor if the biased source were expensive, which in practice it never is.
Where candidates lose it
Answering only with the construction and not the bound, or quoting the bound as n/H(p) without being able to say why entropy is the right currency. Also do not claim von Neumann is optimal. It is unbiased and simple, and it is provably wasteful, and saying so is the difference between having read the trick and understanding it.
Expect next
- Where exactly does the discarded entropy live in the von Neumann scheme?
- Now the reverse problem: simulate a p-coin from fair coins.
- What if p is unknown but you need to hit the entropy bound?
Reported by candidates at Tower Research Capital (Trading, Princeton, 2018); D.E. Shaw (Research, New York, 2026). Source: Wall Street Oasis.
022If X and Y are dependent, does that tell you anything about the relationship between X and Z?Tower Research CapitalProp Trading · New York · 2019
Say this
Nothing at all. Dependence is not transitive and it says nothing about a third variable you have not mentioned. X can be dependent on Y and completely independent of Z.
Then walk it
- Trivial counterexample: let X and Y be the same fair coin and let Z be a separate independent coin. X and Y are maximally dependent, X and Z are independent.
- The deeper point is that even if X depends on Y and Y depends on Z, X need not depend on Z. Let Y be X plus Z with X and Z independent. Y is dependent on both, and X and Z remain independent of each other.
- Correlation is a bit more constrained than dependence because the correlation matrix must be positive semi-definite. If corr(X,Y) is 0.9 and corr(Y,Z) is 0.9, then corr(X,Z) is bounded below by about 0.62. So high correlations do restrict the third pair, but only through that PSD constraint, and dependence in general carries no such bound.
- The formula for the bound: rho_xz is at least rho_xy times rho_yz minus the square root of (1 minus rho_xy squared)(1 minus rho_yz squared). Plug in 0.9 and 0.9 and you get 0.81 minus 0.19, which is 0.62.
- Why this matters on a desk: people assume that if two assets both correlate with a factor they must correlate with each other. If the loadings are moderate, say 0.5 and 0.5, the bound is minus 0.5, so they can be strongly negatively correlated. That mistake shows up in risk models constantly.
Where candidates lose it
Answering yes because it feels like dependence should chain. Give the counterexample in one breath, then earn the extra credit with the correlation bound, because the interviewer's follow-up is almost always the correlation version. And be precise that zero correlation does not mean independence, only the converse holds.
Expect next
- Now with correlations. If corr(X,Y) is 0.9 and corr(Y,Z) is 0.9, what do you know about corr(X,Z)?
- Give me an example of zero correlation with strong dependence.
- What is conditional independence and why does it matter for factor models?
Reported by candidates at Tower Research Capital (Prop Trading, New York, 2019). Source: Wall Street Oasis.
034How many Starbucks are there in New York City?Tower Research CapitalProp Trading · New York · 2019
Say this
I would say roughly 250 to 350, and I would build it from demand rather than from geography. Eight million people, maybe one in ten buys a Starbucks on a given day, a store serves around a thousand cups a day, so 800,000 over 1,000 is about 800 store-days of demand, which I would then cut for the fact that Manhattan stores are much busier than a thousand cups.
Then walk it
- Build two independent estimates and reconcile them. That is the actual skill being tested, not the number.
- Demand side: 8 million residents plus commuters and tourists, call it 9 million daytime people. Ten percent buy coffee from Starbucks on a given day gives 900,000 cups. A busy Manhattan store does 1,500 to 3,000 cups a day, so 900,000 over 2,500 is about 360 stores.
- Supply side: Manhattan has roughly 200 avenue-blocks of dense commercial frontage and you see a Starbucks every few blocks in midtown, which suggests 150 to 200 in Manhattan alone, plus maybe the same again across the four outer boroughs. That lands around 300.
- Both routes land in the same band, 250 to 400, which is the useful output. I would quote 300 as my point estimate with a range.
- Then state your uncertainty honestly and where it sits: the biggest lever is cups per store, which I could be wrong on by a factor of two. The population number I am confident in to ten percent. Naming which assumption dominates the error is what separates an estimate from a guess.
Where candidates lose it
Producing one chain of assumptions and asserting the answer with false precision. Build two independent routes, reconcile them, give a range, and say which assumption carries the error. Also do not freeze because you do not know the answer. Nobody knows it, and the interviewer is grading the structure and your composure, not the number.
Expect next
- Now make me a market on it and I will trade you.
- How many coffee shops in total?
- How would you check your estimate if you had the internet for thirty seconds?
Reported by candidates at Tower Research Capital (Prop Trading, New York, 2019). Source: Wall Street Oasis.
035How many golf balls fit in the Empire State Building?Tower Research CapitalAssistant Trader · New York · 2013
Say this
Order of a hundred billion. The building is roughly a hundred million cubic feet, a golf ball plus its packing waste takes about 0.0015 cubic feet, so 100 million over 0.0015 is about 70 billion. I would quote 50 to 100 billion.
Then walk it
- Volume of the building: footprint about 200 by 400 feet, so 80,000 square feet, times 1,250 feet of height. That is 100 million cubic feet. Taper the tower and subtract structure and you might call it 80 million usable.
- Volume of a golf ball: diameter 1.68 inches, so radius 0.84 inches. Four thirds pi r cubed is about 2.5 cubic inches. There are 1,728 cubic inches in a cubic foot, so a ball is 0.00145 cubic feet.
- Packing efficiency: random close packing of spheres is about 64 percent, so effective volume per ball is 0.00145 over 0.64, about 0.00226 cubic feet.
- 80 million divided by 0.00226 gives about 35 billion. Using the full 100 million cubic feet gives 44 billion. So my range is tens of billions, call it 40 billion, and I would say 20 to 100 billion to be honest about the error bars.
- Say the two things you are least sure about: the usable fraction of the volume, and whether the question means the empty shell or the building with floors, furniture and lift shafts. Those swing the answer by a factor of two, and the packing fraction only matters at the 30 percent level.
Where candidates lose it
Forgetting the 1,728 cubic inches per cubic foot conversion, which throws you off by three orders of magnitude, or ignoring packing efficiency entirely. Also decide out loud whether you are filling the empty shell or the furnished building. And always sanity check the magnitude: if your answer is in millions or trillions, something went wrong by a factor of a thousand.
Expect next
- What is the packing efficiency of spheres and why?
- How much would they weigh?
- Now estimate the market value of that many golf balls.
Reported by candidates at Tower Research Capital (Assistant Trader, New York, 2013). Source: Wall Street Oasis.
039What are the differences between Lasso and Ridge regression?Tower Research CapitalTrading · Princeton · 2018
Say this
Both add a penalty on coefficient size to trade variance for bias. Ridge penalises the sum of squares and shrinks everything smoothly towards zero without eliminating anything. Lasso penalises the sum of absolute values and sets coefficients exactly to zero, so it selects features.
Then walk it
- The geometry explains it. The L1 constraint region is a diamond with corners on the axes, so the solution tends to land on a corner, which means a zero coefficient. The L2 region is a ball with no corners, so solutions are interior and nothing is exactly zero.
- Ridge has a closed form, beta equals (X'X plus lambda I) inverse X'y, which is why it also fixes a singular X'X. Lasso has no closed form and needs coordinate descent or LARS.
- Correlated predictors behave very differently. Ridge splits the weight across a group of correlated features, which is stable. Lasso arbitrarily picks one and zeroes the rest, which is unstable across samples. Elastic net, which mixes both penalties, exists precisely to get sparsity without that instability.
- In a Bayesian reading, ridge is a Gaussian prior on the coefficients and lasso is a Laplace prior. The Laplace prior's spike at zero is what produces exact zeros.
- What I would say about which to use on financial data: predictors are usually highly correlated and the signal-to-noise ratio is awful, so ridge or elastic net typically beats pure lasso out of sample. Lasso is attractive when you need an interpretable short list of factors, but do not confuse the features it selected with the features that matter, because a slightly different sample gives you a different list.
Where candidates lose it
Stopping at L1 gives sparsity, L2 does not. Everyone says that. The differentiators are the diamond-versus-ball geometry, the behaviour under correlated predictors, and the Bayesian priors. Also always say that both require standardised features, because the penalty is scale-dependent and forgetting to standardise silently ruins the fit.
Expect next
- What is elastic net for?
- How do you choose lambda?
- Why do you have to standardise your features first?
Reported by candidates at Tower Research Capital (Trading, Princeton, 2018). Source: Wall Street Oasis.
041Explain the structure of a probabilistic graphical model you have worked with.Tower Research CapitalQuantitative Research · New York · 2015
Say this
Pick one model you actually built and describe it in four parts: the variables, the graph and what the missing edges assert, how you did inference, and how you checked it. The missing edges are the interesting part, because a graphical model is a set of conditional independence claims.
Then walk it
- Name the class first. A directed model, a Bayes net, factorises the joint as a product of each node given its parents and encodes causal or generative structure. An undirected model, a Markov random field, factorises into potentials over cliques and is better when the interactions have no natural direction.
- Then say what the graph buys you. Without structure, a joint over n binary variables needs 2 to the n minus 1 parameters. With a sparse graph it needs a handful per node. That reduction is the whole point, and the missing edges are the assumptions you are making.
- Inference: exact by belief propagation or the junction tree if the graph is a tree or has small treewidth, otherwise approximate by variational methods, loopy BP or MCMC. Say which you used and why, and say what the cost was.
- A concrete example is worth more than the taxonomy. A hidden Markov model is the simplest useful case: a latent state that evolves as a Markov chain with observations conditionally independent given the state. In markets people use it as a regime model, with the latent state as calm or stressed, fitted by Baum-Welch, and decoded with Viterbi.
- Then the honest part: on financial data the latent states are unstable, the number of regimes is not identified, and the fitted model will happily tell you the regime changed last week when it changed two months ago. So I used it as a descriptive overlay, never as a standalone signal.
Where candidates lose it
Reciting textbook definitions of Bayes nets and MRFs without ever describing a model you built. This question is a depth probe, and the interviewer will go three levels down on whichever model you name, so name the one you know cold. Be able to state the conditional independence your graph asserts and how you validated it.
Expect next
- What conditional independences does your graph assert, and did you test them?
- How did you do inference, and what was the complexity?
- How would you learn the graph structure from data?
Reported by candidates at Tower Research Capital (Quantitative Research, New York, 2015). Source: Wall Street Oasis.
042Derive the update rules for alternating least squares in a matrix factorisation.Tower Research CapitalQuantitative Research · New York · 2015
Say this
Fix one factor and the objective becomes an ordinary ridge regression in the other, so each update is a closed-form normal equation. With R approximated by U times V transpose and an L2 penalty, the update for a row of U is (V'V plus lambda I) inverse V'r.
Then walk it
- Objective: minimise the sum over observed entries of (r_ij minus u_i dot v_j) squared plus lambda times the sum of the squared norms of u and v. It is non-convex jointly in U and V, but convex in each one separately. That is the entire reason alternating minimisation works here.
- Differentiate with respect to u_i holding V fixed. The gradient is minus 2 times the sum over observed j of (r_ij minus u_i dot v_j) v_j plus 2 lambda u_i. Set it to zero.
- Rearranged: (sum over observed j of v_j v_j' plus lambda I) u_i equals the sum over observed j of r_ij v_j. So u_i equals that Gram matrix inverse times the weighted sum. Symmetric for v_j with U fixed.
- Cost per update is k cubed for the k by k solve plus k squared per observed entry, and it parallelises perfectly by row, which is exactly why ALS beat SGD for large recommender systems.
- Say the limitations. It converges to a local optimum only, so initialisation matters, usually small random or SVD-based. The lambda is essential because otherwise the Gram matrix is singular for users with fewer than k observations. And it monotonically decreases the objective every half-step, so if your loss ever goes up you have a bug in the derivation, which is a useful debugging fact.
Where candidates lose it
Writing down the gradient-descent update instead of the closed-form solve. ALS is defined by exploiting the per-block convexity to solve exactly, not by stepping. Also do not forget the lambda I, since without it the system is singular for sparse rows, and do not sum over all j when only observed entries enter the loss.
Expect next
- Why does ALS converge, and to what?
- When would you prefer SGD over ALS?
- How would you handle implicit feedback where you only see the ones?
Reported by candidates at Tower Research Capital (Quantitative Research, New York, 2015). Source: Wall Street Oasis.
082Something in your C++ program is overwriting memory it should not. How do you find it?Tower Research CapitalForeign Exchange · London · 2019
Say this
Reach for the sanitisers first. AddressSanitizer catches out-of-bounds writes and use-after-free with roughly a two times slowdown and tells you both the write site and the allocation site. If the corruption is timing-dependent, add ThreadSanitizer for data races.
Then walk it
- Order of tools: compile with -fsanitize=address,undefined and run the failing case. That resolves most buffer overruns and use-after-free immediately. Valgrind memcheck is slower but needs no recompile and catches uninitialised reads that ASan misses.
- If the corrupted location is known but the writer is not, set a hardware watchpoint in gdb on that address with watch, and let it break when something writes. Four watchpoints on x86, which is usually enough.
- If the corruption is not reproducible, make it reproducible before anything else. Record the inputs, pin the threads, disable randomisation, and consider record-and-replay with rr. A bug you cannot reproduce cannot be fixed, only guessed at.
- Common causes to check by inspection while the tools run: writing past the end of a fixed buffer, a dangling reference into a vector that reallocated, a stale pointer into an object that moved, a struct written with memcpy at the wrong size, and two threads writing the same cache line without synchronisation.
- And the systems answer for a production trading process where you cannot run ASan in the hot path: build with sanitisers in a test environment and in a canary, add canary values or guard pages around suspect buffers, and turn on the allocator's own debug checks. I would also say plainly that the fastest fix for a class of these bugs is to stop using raw buffers, because bounds-checked containers and spans eliminate the whole category.
Where candidates lose it
Answering add print statements. That is the answer of someone who has never used a sanitiser, and at a firm running C++ in production it is disqualifying. Name ASan specifically, name the gdb watchpoint technique for a known address, and say how you would make an intermittent bug reproducible before you try to find it.
Expect next
- What does AddressSanitizer not catch?
- How would you debug this in production where you cannot run sanitisers?
- What is a data race and why is it undefined behaviour?
Reported by candidates at Tower Research Capital (Foreign Exchange, London, 2019). 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.

