Join ML Engineer Interview MasterClass (April Cohort) led by FAANG Data Scientists | Just 6 seats remaining...
ML Engineer MasterClass (April) | 6 seats left
Most candidates who fail quant interviews at Goldman, Citadel, or Two Sigma aren't failing because they don't know Ito's lemma. They fail because they know it but can't demonstrate that they know it, under pressure, on a whiteboard, while an interviewer stares at them and waits.
That's the real test. A quant finance interview isn't a written exam where you can think quietly and present a clean answer. It's a live performance where you're expected to narrate probabilistic reasoning, write formal notation, and connect your math to financial reality, all at the same time. A CS interview rewards getting to the right answer. A quant interview rewards showing that you think like a quant on the way there.
The difference between this and a standard math interview is the expectation of context. You're not just solving an SDE; you're expected to know which measure you're working in, why that choice matters, and what the result means for a trader hedging a book. That layer of financial intuition is what separates candidates who get offers at DE Shaw and JP Morgan from those who solve the problem correctly and still don't get a callback.
What this guide gives you is a five-step framework you can apply to any problem they throw at you, whether it's deriving the Black-Scholes PDE, pricing an exotic option under a risk-neutral measure, or sketching a Monte Carlo simulation for an Asian option when you can't recall the closed form. The framework isn't theory. It's a repeatable process you can run in real time, out loud, in the room.
Memorize this table. Everything else in this section is commentary on it.
| Phase | Time Allocation | Goal |
|---|---|---|
| 1. Classify | 1-2 min | Name the problem type and the mathematical universe it lives in |
| 2. Setup | 2-3 min | Define your probability space, state assumptions, fix notation |
| 3. Identify Technique | 1-2 min | Name the theorem or method before you start using it |
| 4. Derive | 10-12 min | Execute step-by-step, narrating every non-trivial move |
| 5. Verify and Explain | 2-3 min | Check limiting cases, confirm financial intuition |
For a 20-minute problem, that's your budget. For a 5-minute rapid-fire question, compress phases 2 and 3 into a single sentence and spend most of your time on phase 4. The proportions stay roughly the same.

The first thing you do is say out loud what kind of problem you're looking at. Not to stall, but because classification determines every tool you'll reach for.
The four buckets are: SDE/stochastic process problems, derivatives pricing problems, portfolio optimization problems, and numerical estimation problems. Most interview questions fall cleanly into one. Some straddle two, and naming that ambiguity is itself a signal of sophistication.
What to do: - Read the problem statement and identify the key mathematical object: is there a stochastic process? An expectation to compute? An objective function to optimize? - Ask yourself: does the problem involve a measure change? If yes, you're in pricing territory. Does it involve a diffusion equation? You're in SDE/PDE territory. - If the problem is ambiguous, say so explicitly and state which branch you're taking.
What to say:
"This looks like a stochastic calculus problem. We have a diffusion process, and we're being asked to characterize its dynamics, so I'd approach this with Ito's lemma rather than risk-neutral pricing directly."
Or, if it's a pricing problem:
"The question is asking for an expectation of a payoff, which puts us in risk-neutral valuation territory. I'll work under the $\mathbb{Q}$ measure."
What the interviewer is evaluating: Your breadth. Can you recognize the shape of a problem before you start solving it? Candidates who misclassify and then bulldoze forward with the wrong technique waste time and signal that their knowledge is fragmented rather than connected.
This is where most candidates lose points without realizing it. Jumping straight into algebra without defining your space tells the interviewer you're pattern-matching, not reasoning from foundations.
What to do: - Write down your probability space: $(\Omega, \mathcal{F}, {\mathcal{F}t})$. Yes, every time. - State the dynamics of the process you're working with. If it's geometric Brownian motion, write $dS_t = \mu S_t \, dt + \sigma S_t \, dW_t$ before you do anything else. - Explicitly state any assumptions you're making: no dividends, constant volatility, frictionless markets, whatever applies. If you're unsure whether an assumption is valid, flag it.}, \mathbb{P
What to say:
"Let me set up the space first. I'll work on a filtered probability space with a standard Brownian motion $W_t$ under the physical measure $\mathbb{P}$. I'll assume the stock follows GBM: $dS_t = \mu S_t \, dt + \sigma S_t \, dW_t$, with $\mu$ and $\sigma$ constant. I'm also assuming no dividends and continuous trading."
Do this: State the measure you're working under ($\mathbb{P}$ or $\mathbb{Q}$) at the top of your setup. Switching measures mid-derivation without flagging it is one of the most common errors in quant interviews.
What the interviewer is evaluating: Rigor. They want to see that you understand the foundations, not just the formulas. Writing $(\Omega, \mathcal{F}, \mathbb{P})$ takes five seconds and immediately signals that you've thought carefully about the probabilistic structure of the problem.
Name your tool before you pick it up. This is a one- or two-sentence step, but skipping it makes your derivation look like a sequence of algebraic accidents rather than a structured argument.
What to do: - State the theorem you're about to apply and why it applies here. - If the problem involves a function of a stochastic process, say "I'll apply Ito's lemma." If it requires a measure change, say "I'll use Girsanov's theorem to move from $\mathbb{P}$ to $\mathbb{Q}$." If it connects a PDE to an expectation, say "This is a Feynman-Kac setup." - If you're going numerical, name the method: Monte Carlo, finite differences, trinomial tree.
The decision branches look like this: stochastic process dynamics point toward Ito's lemma and potentially Feynman-Kac; expectations under a different measure point toward Girsanov; no closed form available points toward Monte Carlo with variance reduction.
What to say:
"Since we have a smooth function of a diffusion, I'll apply Ito's lemma to get the SDE for the derivative price. Then I'll invoke the no-arbitrage condition to eliminate the drift, which will give us the Black-Scholes PDE."
Common mistake: Saying "I'll differentiate" when you mean "I'll apply Ito's lemma." These are not the same thing. Ito's lemma has a second-order correction term that ordinary calculus doesn't. Using the wrong language here signals that you don't fully own the distinction.
What the interviewer is evaluating: Depth. Anyone can execute a derivation if you hand them the steps. Identifying the right theorem independently shows that you understand the mathematical structure of the problem, not just the mechanics.
This is the longest phase and the one where you're most likely to go silent. Don't. Narrate every non-trivial step as you write it.
What to do: - Write each line of the derivation clearly, labeling what you're doing: "applying Ito's lemma," "taking the expectation under $\mathbb{Q}$," "using the tower property." - When you apply Ito's lemma to $f(S_t, t)$, write the full expansion:
$$df = \frac{\partial f}{\partial t} dt + \frac{\partial f}{\partial S} dS_t + \frac{1}{2} \frac{\partial^2 f}{\partial S^2} (dS_t)^2$$
then substitute $dS_t$ and apply the quadratic variation rule $(dW_t)^2 = dt$ explicitly. Don't skip that substitution. It's where the $\frac{1}{2}\sigma^2$ term comes from, and interviewers will notice if you just write it down without justification.
What to say when you're mid-derivation and hit a wall:
"I know the result should be the Black-Scholes PDE, so let me check whether the drift terms are combining correctly here. If I group the $dt$ terms, I should be able to eliminate the $\mu$ dependence through the hedging argument..."
Don't do this: Go silent for 90 seconds. Interviewers at Citadel and Two Sigma will interpret silence as being stuck, even if you're just thinking. Keep a running commentary going, even if it's just "I'm collecting terms here."
What the interviewer is evaluating: Execution and ownership. Can you get from the theorem to the result without being guided? Do you know why each step is valid, or are you just reproducing a memorized derivation? They will probe by asking "why did you do that?" after any step you rush through.
You've derived the result. Now prove you understand it.
What to do: - Check at least two limiting cases. For a pricing formula, check $\sigma \to 0$ (the option price should collapse to a discounted payoff or zero, depending on moneyness) and $T \to 0$ (the price should equal the intrinsic value). - Verify dimensional consistency. If your formula has $e^{-rT}$ multiplied by something that should be a price, confirm the units work. - Give one sentence of financial intuition. Not a restatement of the math, but an economic explanation.
What to say:
"Let me sanity-check this. As $\sigma \to 0$, the $d_1$ and $d_2$ terms go to $\pm \infty$ depending on whether the option is in or out of the money, which gives us the discounted intrinsic value. That makes sense: with no volatility, the option is worth its certain payoff discounted back. And the reason $\mu$ doesn't appear in the final formula is that under $\mathbb{Q}$, the drift is replaced by the risk-free rate. The market price of risk is absorbed into the measure change."
Key insight: The verify step is where you separate yourself from candidates who can derive but can't explain. Interviewers at Goldman and DE Shaw will almost always follow a correct derivation with "okay, but intuitively, why?" If you can't answer that, the derivation counts for less than you think.
What the interviewer is evaluating: Whether you understand what you just proved. A candidate who derives the Black-Scholes formula and then can't explain why the drift disappears under $\mathbb{Q}$ has demonstrated mechanical skill, not quantitative intuition. The intuition check is often the deciding factor between a hire and a pass.
The framework is also a communication contract with your interviewer. When you say "I'm moving to step three, I'm going to invoke Girsanov here," you're not just organizing your own thoughts. You're giving the interviewer a map of where you are and where you're going, which makes it far easier for them to follow along, ask useful questions, and evaluate you fairly. Candidates who solve problems silently and then explain them afterward are much harder to assess, and interviewers often default to skepticism when they can't see the reasoning in real time.
Three worked examples. Each one applies the full five-step framework to a problem you are likely to see in a real interview at Goldman, Citadel, or Two Sigma. The dialogue is annotated so you can see exactly why each move lands.
This is the most common "show me you know stochastic calculus" problem. The interviewer wants to see formal setup, clean application of Ito's lemma, and a delta-hedging argument. Here is how the conversation goes.
$$dS_t = \mu S_t \, dt + \sigma S_t \, dW_t$$
where $\mu$ is the drift and $\sigma > 0$ is the volatility. We also assume a risk-free bond with $dB_t = r B_t \, dt$, no dividends, no transaction costs, and continuous trading."
Do this: Notice the candidate stated the probability space before writing a single equation. This signals to the interviewer that you understand the mathematical foundations, not just the formula. Most candidates skip straight to $dS = \mu S \, dt + \sigma S \, dW$ and lose points before the derivation even starts.
You (continuing): "Let $V(S, t)$ be the price of a derivative with smooth payoff. By Ito's lemma applied to $V$:
$$dV = \frac{\partial V}{\partial t} dt + \frac{\partial V}{\partial S} dS_t + \frac{1}{2} \frac{\partial^2 V}{\partial S^2} (dS_t)^2$$
Substituting $dS_t$ and using $(dW_t)^2 = dt$, $(dt)^2 = 0$:
$$dV = \left(\frac{\partial V}{\partial t} + \mu S \frac{\partial V}{\partial S} + \frac{1}{2} \sigma^2 S^2 \frac{\partial^2 V}{\partial S^2}\right) dt + \sigma S \frac{\partial V}{\partial S} \, dW_t$$"
Do this: The candidate didn't freeze when challenged. They gave the rigorous justification (quadratic variation in $L^2$), offered to go deeper, and then kept moving. That combination of precision and momentum is exactly what senior interviewers reward.
You (continuing): "Now I construct a delta-hedging portfolio. Let $\Pi_t = V - \Delta S_t$ where $\Delta = \frac{\partial V}{\partial S}$. Then:
$$d\Pi_t = dV - \Delta \, dS_t = \left(\frac{\partial V}{\partial t} + \frac{1}{2} \sigma^2 S^2 \frac{\partial^2 V}{\partial S^2}\right) dt$$
The $dW_t$ terms cancel exactly because we chose $\Delta = \frac{\partial V}{\partial S}$. The portfolio is instantaneously riskless, so by no-arbitrage it must earn the risk-free rate:
$$d\Pi_t = r \Pi_t \, dt = r(V - \Delta S) \, dt$$
Setting these equal and substituting $\Delta$:
$$\frac{\partial V}{\partial t} + r S \frac{\partial V}{\partial S} + \frac{1}{2} \sigma^2 S^2 \frac{\partial^2 V}{\partial S^2} - rV = 0$$
That is the Black-Scholes PDE."
The second type of problem asks you to price something. The setup shifts from PDE territory to measure theory.
$$\tilde{W}_t = W_t + \frac{\mu - r}{\sigma} t$$
where $\theta = \frac{\mu - r}{\sigma}$ is the market price of risk. The Radon-Nikodym derivative is:
$$\frac{d\mathbb{Q}}{d\mathbb{P}}\bigg|_{\mathcal{F}_T} = \exp\left(-\theta W_T - \frac{1}{2}\theta^2 T\right)$$
Under $\mathbb{Q}$, $\tilde{W}_t$ is a standard Brownian motion, and the stock dynamics become:
$$dS_t = r S_t \, dt + \sigma S_t \, d\tilde{W}_t$$"
Do this: When an interviewer asks "why does that work," they are almost always checking whether you know the Novikov condition. State it by name. Candidates who just say "it's a standard result" get marked down.
You (continuing): "Under $\mathbb{Q}$, the stock at maturity is:
$$S_T = S_0 \exp\left(\left(r - \frac{\sigma^2}{2}\right)T + \sigma \tilde{W}_T\right)$$
The call price is:
$$C = e^{-rT} \mathbb{E}^{\mathbb{Q}}\left[(S_T - K)^+\right]$$
Since $\log(S_T/S_0) \sim \mathcal{N}\left(\left(r - \frac{\sigma^2}{2}\right)T, \sigma^2 T\right)$ under $\mathbb{Q}$, I can evaluate this expectation by splitting on the event ${S_T > K}$. After the standard Gaussian integral calculation, you arrive at:
$$C = S_0 \Phi(d_1) - K e^{-rT} \Phi(d_2)$$
where:
$$d_1 = \frac{\ln(S_0/K) + (r + \frac{\sigma^2}{2})T}{\sigma\sqrt{T}}, \quad d_2 = d_1 - \sigma\sqrt{T}$$"
Closed forms don't always exist. When the interviewer gives you a path-dependent payoff, they want to see whether you can pivot cleanly to a numerical approach.
$$\text{Payoff} = \left(\frac{1}{N}\sum_{i=1}^{N} S_{t_i} - K\right)^+$$
I simulate $M$ paths of $S_t$ under $\mathbb{Q}$, compute the average stock price along each path, apply the payoff function, discount, and average across paths. The estimator is:
$$\hat{C} = e^{-rT} \frac{1}{M} \sum_{j=1}^{M} \left(\bar{S}^{(j)} - K\right)^+$$
with a 95% confidence interval of $\hat{C} \pm 1.96 \cdot \frac{\hat{\sigma}}{\sqrt{M}}$."
$$\hat{C}{AV} = e^{-rT} \frac{1}{M} \sum$$"}^{M} \frac{\left(\bar{S}^{(j)} - K\right)^+ + \left(\bar{S}^{(j,-)} - K\right)^+}{2
Here is the implementation:
import numpy as np
def asian_call_mc(S0, K, r, sigma, T, N, M, seed=42):
"""
Price an arithmetic Asian call via Monte Carlo with antithetic variates.
Parameters
----------
S0 : float - initial stock price
K : float - strike
r : float - risk-free rate
sigma : float - volatility
T : float - maturity (years)
N : int - number of monitoring dates
M : int - number of simulation paths (must be even)
seed : int - random seed for reproducibility
Returns
-------
price : float - estimated option price
ci : tuple - 95% confidence interval (lower, upper)
"""
rng = np.random.default_rng(seed)
dt = T / N
# Generate M/2 paths; antithetic variates double them
half_M = M // 2
Z = rng.standard_normal((half_M, N)) # shape: (paths, steps)
# Increments under Q: (r - 0.5*sigma^2)*dt + sigma*sqrt(dt)*Z
drift = (r - 0.5 * sigma**2) * dt
diffusion = sigma * np.sqrt(dt)
log_increments = drift + diffusion * Z
log_increments_anti = drift - diffusion * Z # antithetic
# Cumulative log returns -> stock prices
log_paths = np.cumsum(log_increments, axis=1)
log_paths_anti = np.cumsum(log_increments_anti, axis=1)
S = S0 * np.exp(log_paths) # shape: (half_M, N)
S_anti = S0 * np.exp(log_paths_anti)
# Arithmetic average along each path
S_avg = S.mean(axis=1)
S_avg_anti = S_anti.mean(axis=1)
# Payoffs
payoff = np.maximum(S_avg - K, 0)
payoff_anti = np.maximum(S_avg_anti - K, 0)
# Antithetic estimator: average paired payoffs
combined = 0.5 * (payoff + payoff_anti)
# Discount and compute price + confidence interval
discount = np.exp(-r * T)
price = discount * combined.mean()
se = discount * combined.std() / np.sqrt(half_M)
ci = (price - 1.96 * se, price + 1.96 * se)
return price, ci
# Example usage
price, ci = asian_call_mc(S0=100, K=100, r=0.05, sigma=0.2, T=1.0, N=252, M=100_000)
print(f"Asian Call Price: {price:.4f}")
print(f"95% CI: ({ci[0]:.4f}, {ci[1]:.4f})")
Do this: Always state the confidence interval alongside the price estimate. Giving a single number without uncertainty bounds signals you don't understand the statistical nature of the estimator. Interviewers at quant funds notice this immediately.
For a 20-minute problem, roughly: two minutes on classification and setup, three minutes identifying the technique and stating the key theorem, ten minutes on the derivation, and five minutes on sanity checks and intuition. If you are burning more than half your time on setup, you are moving too slowly.
For a five-minute rapid-fire question, skip the formal probability space preamble. State your assumptions in one sentence, name the theorem you are using, and execute. You can offer to formalize afterward.
On clarifying questions: ask one if the payoff structure or the dynamics are ambiguous. Don't ask about things you should be able to assume, like whether the market is frictionless or whether trading is continuous. State those assumptions yourself and move on. Asking the interviewer whether you can assume no arbitrage is not a good look.
Most candidates who fail quant interviews don't fail because they can't do the math. They fail because of patterns that signal shallow understanding, even when the final answer is right. These mistakes are common enough that interviewers at Goldman and Citadel have seen all of them this week.
You hear the problem, you recognize it, and you start writing $dS = \mu S \, dt + \sigma S \, dW$. No probability space defined. No filtration. No mention of what measure you're working under.
Don't do this: Jumping straight into Itô's lemma before you've stated your assumptions. Even if your derivation is flawless, the interviewer is now wondering whether you actually understand what $W_t$ is, or whether you've just memorized the steps.
Interviewers penalize this because the setup is the understanding. In a real quant role, an undefined probability space isn't a formality you skip, it's a bug that causes mispricing.
The fix: Before you write a single equation, spend 30 seconds saying "Let $(\Omega, \mathcal{F}, {\mathcal{F}_t}, \mathbb{P})$ be a filtered probability space, and let $W_t$ be a standard Brownian motion adapted to $\mathcal{F}_t$." It takes 15 seconds and immediately signals rigor.
This one is more common than you think, and it's a red flag that's hard to recover from.
It shows up like this: a candidate correctly invokes Girsanov's theorem to change measure, then writes the drift of $S_t$ under $\mathbb{Q}$ as $\mu$ instead of $r$. Or they price a derivative by taking an expectation under $\mathbb{P}$ and call it arbitrage-free. The algebra might be clean. The answer is still wrong.
Don't do this: Using $\mathbb{E}[\cdot]$ without specifying the measure. Write $\mathbb{E}^{\mathbb{Q}}[\cdot]$ or $\mathbb{E}^{\mathbb{P}}[\cdot]$ every single time.
The reason this stings interviewers is that the entire architecture of derivatives pricing rests on the distinction between these two measures. If you blur them, you've demonstrated that you don't actually understand why risk-neutral pricing works, only that it does.
The fix: Any time you write an expectation in a pricing context, make the measure explicit in the superscript. No exceptions.
You grind through the Black-Scholes PDE derivation. Every step is correct. The interviewer nods, then asks: "So why does the drift $\mu$ disappear under $\mathbb{Q}$?"
Silence. Or worse, a restatement of the math you just did.
This is where a lot of technically strong candidates lose the offer. The interviewer isn't asking you to re-derive Girsanov. They want to know if you understand what you just proved. The drift disappears because under $\mathbb{Q}$, every traded asset grows at the risk-free rate $r$. That's not a mathematical accident; it's the definition of no-arbitrage.
The fix: After every derivation, ask yourself one question before the interviewer does: "What does this result actually mean for the financial instrument?" Prepare a one-sentence economic interpretation for every major result you might derive.
The interviewer asks you to price a barrier option or an Asian option. You know there's no simple closed form. You stare at the page.
Don't.
Do this: Say "A closed-form solution isn't straightforward here, so let me sketch a Monte Carlo approach." Then write down the GBM path simulation, the payoff function, the estimator, and mention antithetic variates for variance reduction. That's a complete, professional answer.
Interviewers at quant funds price exotic derivatives numerically every day. Knowing when to pivot to simulation is itself a signal of practical competence. Freezing signals the opposite: that your knowledge is brittle and only works when the problem matches a memorized template.
The fix: For any problem where you can't immediately see a closed form, default to "let me set up a Monte Carlo estimator" and execute it cleanly.
This is the pacing mistake that interviewers notice immediately, even if they don't say anything.
You spend two minutes carefully expanding $(a+b)^2$ and explaining basic algebra. Then when you hit the Itô integral or the measure change, you suddenly speed up, wave your hand, and say "and then by Girsanov we get..." The interviewer sees exactly what happened: you're comfortable with the scaffolding and uncertain about the load-bearing structure.
Don't do this: Narrating every trivial algebraic step while glossing over the theorem application. It inverts the signal you want to send.
The hard parts are where you should slow down and be explicit. "Here I'm applying Itô's lemma to $f(S_t, t)$, so I need the second-order term because $dW_t^2 = dt$..." That's what they're listening for.
The fix: Calibrate your pacing to the difficulty of the step, not your comfort with it. Spend more words on the theorem applications and less on the algebra.
You finish the derivation. You're relieved. You stop.
A quant who stops there is not a quant who gets hired. The last 60 seconds of any derivation should be a rapid sanity check: Does the option price go to zero as $\sigma \to 0$ for an out-of-the-money call? Does the bond price converge to 1 as $T \to 0$? Are the units consistent?
Don't do this: Presenting a result without checking at least one limiting case. If your Black-Scholes formula gives a negative price when the strike is very high, you have an error somewhere and you want to find it before the interviewer does.
This matters beyond the interview room. Unvalidated pricing models cause real losses. Interviewers know this, and they're watching to see if you know it too.
The fix: Build a three-second mental checklist: boundary conditions, limiting cases, and sign/dimension consistency. Run it before you say "and that's my answer."
Everything below is designed to be scanned, not read. Bookmark this page and review it the morning of your interview.
| Problem Type | Primary Theorem | First Line to Write |
|---|---|---|
| SDE / stochastic process | Ito's lemma | $dS_t = \mu S_t \, dt + \sigma S_t \, dW_t$ |
| Derivatives pricing | Girsanov + risk-neutral measure | $\tilde{W}_t = W_t + \int_0^t \theta_s \, ds$ under $\mathbb{Q}$ |
| Portfolio optimization | Lagrangian / HJB equation | $\max_w \; w^\top \mu - \frac{\lambda}{2} w^\top \Sigma w$ |
| Numerical estimation | Monte Carlo + variance reduction | $\hat{V} = e^{-rT} \frac{1}{N} \sum_{i=1}^N \text{payoff}(S_T^{(i)})$ |
Brownian motion and filtrations
$$W_t \sim \mathcal{N}(0, t), \quad W_t - W_s \perp \mathcal{F}_s \text{ for } t > s$$
$$\mathcal{F}_t = \sigma(W_s : s \leq t) \quad \text{(natural filtration)}$$
Probability measures
$$\mathbb{P} \text{ (physical/real-world)}, \quad \mathbb{Q} \text{ (risk-neutral)}, \quad \mathbb{T} \text{ (T-forward)}$$
Stochastic integral
$$\int_0^T f(t) \, dW_t \sim \mathcal{N}!\left(0, \int_0^T f(t)^2 \, dt\right)$$
Key SDEs in canonical form
| Process | SDE |
|---|---|
| Geometric Brownian Motion | $dS_t = \mu S_t \, dt + \sigma S_t \, dW_t$ |
| Ornstein-Uhlenbeck | $dX_t = \kappa(\theta - X_t) \, dt + \sigma \, dW_t$ |
| Cox-Ingersoll-Ross | $dr_t = \kappa(\theta - r_t) \, dt + \sigma \sqrt{r_t} \, dW_t$ |
Ito's Lemma (scalar). For $f(t, X_t)$ where $dX_t = \mu \, dt + \sigma \, dW_t$:
$$df = \frac{\partial f}{\partial t} dt + \frac{\partial f}{\partial x} dX_t + \frac{1}{2} \frac{\partial^2 f}{\partial x^2} \sigma^2 \, dt$$
Trigger: any smooth function of a stochastic process.
Ito's Lemma (multidimensional). For $f(t, X_t^1, \ldots, X_t^n)$:
$$df = \frac{\partial f}{\partial t} dt + \sum_i \frac{\partial f}{\partial x_i} dX_t^i + \frac{1}{2} \sum_{i,j} \frac{\partial^2 f}{\partial x_i \partial x_j} d\langle X^i, X^j \rangle_t$$
Trigger: correlated multi-asset models, stochastic volatility.
Girsanov's Theorem. Define the Radon-Nikodym derivative:
$$\frac{d\mathbb{Q}}{d\mathbb{P}}\bigg|_{\mathcal{F}_T} = \exp!\left(-\int_0^T \theta_t \, dW_t - \frac{1}{2}\int_0^T \theta_t^2 \, dt\right)$$
Then $\tilde{W}_t = W_t + \int_0^t \theta_s \, ds$ is a $\mathbb{Q}$-Brownian motion.
Trigger: any time you need to remove drift and price under $\mathbb{Q}$.
Feynman-Kac Formula. If $u(t,x)$ solves:
$$\frac{\partial u}{\partial t} + \mu(x) \frac{\partial u}{\partial x} + \frac{1}{2}\sigma^2(x) \frac{\partial^2 u}{\partial x^2} - ru = 0, \quad u(T,x) = g(x)$$
then $u(t,x) = \mathbb{E}^{\mathbb{Q}}!\left[e^{-r(T-t)} g(X_T) \mid X_t = x\right]$.
Trigger: connecting a PDE to an expectation, or vice versa. This is the bridge between the PDE approach and the probabilistic approach to pricing.
Martingale Representation Theorem. Every $\mathbb{Q}$-martingale $M_t$ adapted to the Brownian filtration can be written:
$$M_t = M_0 + \int_0^t \phi_s \, dW_s^{\mathbb{Q}}$$
Trigger: replication arguments, completeness of markets, deriving hedging strategies.
Run through these before you present your result. Takes 30 seconds and catches most errors.
GBM path simulation
1import numpy as np
2
3def simulate_gbm(S0, mu, sigma, T, n_steps, n_paths, seed=42):
4 np.random.seed(seed)
5 dt = T / n_steps
6 Z = np.random.standard_normal((n_paths, n_steps))
7 increments = (mu - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * Z
8 log_paths = np.cumsum(increments, axis=1)
9 S = S0 * np.exp(np.hstack([np.zeros((n_paths, 1)), log_paths]))
10 return S # shape: (n_paths, n_steps + 1)
11European call via Monte Carlo with confidence interval
1def price_european_call(S0, K, r, sigma, T, n_paths=100_000, seed=42):
2 np.random.seed(seed)
3 Z = np.random.standard_normal(n_paths)
4 # Antithetic variates: use Z and -Z
5 Z_anti = np.concatenate([Z, -Z])
6 ST = S0 * np.exp((r - 0.5 * sigma**2) * T + sigma * np.sqrt(T) * Z_anti)
7 payoffs = np.maximum(ST - K, 0)
8 discounted = np.exp(-r * T) * payoffs
9 price = discounted.mean()
10 se = discounted.std() / np.sqrt(len(discounted))
11 return price, 1.96 * se # (estimate, half-width of 95% CI)
12Finite difference grid for Black-Scholes PDE (explicit scheme)
1def bs_finite_difference(S_max, K, r, sigma, T, M=200, N=1000):
2 # M: stock steps, N: time steps
3 dt = T / N
4 dS = S_max / M
5 S = np.linspace(0, S_max, M + 1)
6
7 # Terminal condition: European call payoff
8 V = np.maximum(S - K, 0).copy()
9
10 for _ in range(N):
11 V_new = V.copy()
12 for j in range(1, M):
13 delta = (V[j+1] - V[j-1]) / (2 * dS)
14 gamma = (V[j+1] - 2*V[j] + V[j-1]) / dS**2
15 theta = -0.5 * sigma**2 * S[j]**2 * gamma - r * S[j] * delta + r * V[j]
16 V_new[j] = V[j] - dt * theta
17 # Boundary conditions
18 V_new[0] = 0
19 V_new[M] = S_max - K * np.exp(-r * dt)
20 V = V_new
21
22 return S, V
23Do this: When you write Monte Carlo code in an interview, always mention variance reduction in the same breath. Antithetic variates is one line of code and halves your error. Interviewers notice when you remember it unprompted.
These are exact sentences you can deploy at specific moments in the interview.