quant finance

How IMC Trading interviews traders and engineers differently

IMC runs two interview loops that share a name and almost nothing else. Apply as a trader and your first real hurdle is a timed mental-math test that punishes anyone who’s even half a second slow at two-digit multiplication. Apply as a software engineer and you get two HackerRank problems, then later someone asking why your hash table keeps missing the L2 cache. Same firm, same Chicago floor, completely different bar.

IMC (the letters stand for International Marketmakers Combination) started in Amsterdam in 1989 and now trades from Amsterdam, Chicago, Sydney, and Mumbai. It’s a proprietary market maker: it quotes bids and offers on options and other instruments across hundreds of exchanges and makes money on the spread and on managing risk faster than the next shop. That business model is the whole reason the interview looks the way it does. Every round is really checking whether you can reason about probability and price under a clock, or write code that shaves microseconds, because those are the two things that pay the bills.

Here’s how the two loops line up before we get into each one.

Stage Trader track Software engineer track
Online assessment Timed mental-math test: two-digit multiplication, percentages, fractions, plus probability and pattern questions under a tight clock Two HackerRank algorithm problems in roughly 90 minutes
Cognitive games Timed battery measuring working memory, reaction time, and decisions under changing rules Occasionally included, weighted less
Recruiter and behavioral Why market making, why IMC, how you handle being wrong Same, plus a walk through a project you built
First technical Market-making game: quote a two-sided market and update on order flow Data structures, algorithms, C++ fundamentals
Final round Harder trading game plus a probability and expected-value exercise Low-level C++, cache and memory questions, build or extend a matching engine
Reported difficulty About 3.2 out of 5 on Glassdoor, with roughly half of candidates rating the experience positive

The trader loop starts with arithmetic, not options theory

The first gate for trading candidates is a mental-math test. Expect a run of questions like 37 × 24, 15% of 340, or 6/7 as a decimal, with a clock tight enough that you can’t check your work. Firms in this corner of the market (IMC, Optiver, SIG, Akuna) all run some version of it, and the reason is plain: on a real desk you’re updating a fair value in your head while three markets move, and a calculator is too slow. Nobody cares that you got 88% right if the people who advanced got 95% faster.

Then there’s IMC’s cognitive battery, run as a set of timed brain games that measure working memory, reaction time, and how you decide when the rules shift mid-game. You can’t really study for it. What you can do is sleep, and treat it like the mental-math test: speed and composure over perfection.

The trading game, and how to make a market that survives

The round that actually decides trader offers is the market-making game. The classic setup: you make a two-sided market on some uncertain number. Say it’s the sum of two dice rolled behind a screen. Fair value is 7. An interviewer asks you to quote a market, so you say “6 at 8”, meaning you’ll buy at 6 and sell at 8. They lift your offer at 8. Now think. Someone paid up to buy from you above fair value, which is either noise or a signal they know something you don’t. Do you hold your market, or shade it higher because the flow is telling you the true number leans high?

What they’re grading is not whether you know 7 is the mean of two dice. It’s whether you quote a sensible width, whether you widen when you’re uncertain and tighten when you have an edge, and whether you update on order flow instead of anchoring to your first guess. The candidates who bomb this either freeze, or quote a market so wide it’s useless, or refuse to move their number after the interviewer hands them information. Say your reasoning out loud. “I’m quoting 6 at 8 because I want a point of edge on each side given I can’t see the dice. You bought at 8, so I’ll move to 6 and a half at 8 and a half and see if you keep buying.” That sentence gets you further than a correct but silent answer.

Later rounds push into probability and expected value. Expect questions like the expected number of coin flips to get two heads in a row, or whether you’d take a bet that pays 10 to lose 1 at a stated probability, with a follow-up on how much you’d size it. Green Book style. They want to see you set up the calculation cleanly and get the sign of the risk right.

The engineer loop goes down to the cache line

The software side looks like a normal coding pipeline until it doesn’t. It opens with two HackerRank algorithm problems in about 90 minutes, standard data-structures work: something with a heap or a hash map, something with a graph or a sliding window. Solve both cleanly and you move on.

The technical interviews are where IMC parts ways with a generic tech company. Interviewers go low. They’ll ask what a move constructor does and when the compiler elides it, how an unordered_map resolves collisions and what happens to your latency when the load factor climbs, and what false sharing is and why two threads writing to adjacent fields in a struct can tank throughput even with no logical contention. The cache hierarchy comes up over and over. You should be able to explain why an L1 hit costs a few cycles and a main-memory miss costs a couple hundred, and why that gap dictates how you lay out data on a hot path.

A concrete one that shows up: given a struct shared across threads, spot the false-sharing bug and fix it.

struct Counters {
    std::atomic<long> buys;   // written by thread A
    std::atomic<long> sells;  // written by thread B
};  // both land on the same 64-byte cache line, so the cores fight over it

struct Counters {
    alignas(64) std::atomic<long> buys;
    alignas(64) std::atomic<long> sells;  // now on separate lines
};

If you can name the problem, explain why padding each field to its own 64-byte line fixes it, and note the memory cost of doing that across a million-element array, you’re having the conversation they want.

The matching-engine round

The final engineering round is usually a build exercise: implement or extend a simple matching engine. You’re modeling an order book and matching incoming orders against resting ones by price-time priority. The matching loop itself isn’t large.

// incoming buy order: match against the lowest-priced sells first
while (order.qty > 0 && !asks.empty() && asks.top().price <= order.price) {
    Resting best = asks.top();
    long fill = std::min(order.qty, best.qty);
    trade(order, best, fill, best.price);   // execute at the resting price
    order.qty -= fill;
    if (fill == best.qty) asks.pop();        // fully filled, remove it
    else asks.top().qty -= fill;             // partial, decrement
}
if (order.qty > 0) bids.insert(order);       // leftover rests on the book

The interviewer will then extend it: add order cancellation, handle partial fills correctly, keep price-time priority when two orders sit at the same price, or make lookups by order id fast so a cancel is O(1). This is where they see whether you understand the data structures or memorized a template. Talk through why you’d pair a price-level map with a per-order intrusive list, and what breaks under a high message rate.

What the offer actually looks like

Prop-shop pay is public enough to sketch but moves every cycle, so treat any figure as a starting point and check levels.fyi or recent Blind posts before you negotiate. New-grad trader and engineer packages at IMC sit in the same neighborhood as Optiver, Jane Street, and SIG: a strong base, a sizable sign-on, and a discretionary bonus that is the part that actually varies. The bonus is where a good year and a bad year separate, and it’s the number recruiters are vaguest about, so ask how it’s set and what a typical range has been for the level you’d join at. Interns are paid well too, usually pro-rated against that full-time base with housing help in Chicago.

If you have a month, split it by track. Traders should drill mental math daily until two-digit multiplication is automatic, then work through a probability set (the Green Book is the standard) and practice quoting markets out loud with a friend feeding you flow. Engineers should get fluent in C++ move semantics and the memory model, read through how a real order book is structured, and be ready to talk about cache behavior without notes. The one thing both tracks share is that IMC is testing decisions under a clock, so practice with a timer running, not in the calm of an untimed afternoon.

newsletter

What's actually being asked right now

Interview patterns & comp trends, straight to your inbox.

No spam. Unsubscribe anytime.

newsletter

What's actually being asked right now

Interview patterns & comp trends, straight to your inbox.

No spam. Unsubscribe anytime.

1972 Soviet postage stamp commemorating the Mars 2 probe

worth a read

Mars For The Rest of Us — a weekly-or-more deep dive on the technical side of Mars exploration: rocket propulsion, microbiology, mission architecture, and everything in between. Written by Maciej Ceglowski.

Read it on Substack →
Scroll to Top