tracks
← Jane Street

Before the superday

Three things arrive with the onsite invite: a guide to making markets that you are told to read, a short pandas primer, and a form about your coding experience. Read the first two. Fill in the third.

1 · Making markets

Every game in the morning is played by quoting and trading. You will be asked to “make a market” on some hidden number: the sum of four cards, the maximum of three dice, the number of red cards squared. This is the language it is played in. Jane Street’s own version is the Making Markets and Adverse Selection sections of Probability & Markets, and it is worth the twenty minutes.

A trade has four parts

The thing (usually implied), the direction (buy or sell), the price, and the quantity, which traders call size. A price you will buy at is a bid. A price you will sell at is an offer. Your market is the two together, and its width is the offer minus the bid.

How to say it

  • I’m 2 bid for 10  I will buy ten at 2.
  • I have 10 at 4  I will sell ten at 4.
  • I’m 2 at 4, 10 up  Both at once, ten each side. This is the normal way to quote. If your sizes differ by side, say the bid and the offer separately.
  • I’m out  Pulls your order. Until you say it, or it trades, the order is live and anyone can trade on it.

How the other side trades on you

  • sold  They hit your bid: they sell to you, for your whole size.
  • take ’em  They lift your offer: they buy from you, for your whole size.
  • I buy 5 / I sell 5  A partial. The rest of your order stays live.

A trade against your order is a fill. When the hidden number is revealed, each fill settles at (value − price) × size. If you sold ten at 4 and it settles at 6, you lose 20.

Size is in chips

You get 100 chips per interview here, and in the afternoon 100 per game; on the day the stack carries from one interviewer to the next. Every size you quote is a number of chips per point. Before you quote, ask what happens to your stack if the worst case lands on the side that gets hit. If the answer is “most of it”, your size is wrong, whatever the expected value says. Finishing with a big stack is not an offer. Finishing with none is a rejection.

Where to put the market

Buy below what the thing is worth on average, sell above it. A market that just straddles the expectation earns nothing. A market nobody will trade on earns nothing either. The worked example in the official guide is a contract paying a dollar per pip on one die: worth 3.5, worst case a loss of 2.5 one time in six, and the author settles on “3 at 4, 10 up”.

Width should track how sure you are. When the quantity is something you can compute exactly, quote tight. When it is the product of three unknown cards, quote wide. Interviewers often impose a width (“make it four wide”) so the only decisions left are where to centre it and how big to be.

When you get filled, update

The person trading against you is choosing to. Sometimes that is because they know something: they have seen a card, or they did the sum right and you did not. Sometimes the interviewer trades simply to make the scenario interesting. Either way, after a fill, ask: conditional on someone having wanted that trade, what do I now think it is worth? If you bought, the answer is usually a little lower than you thought. Re-quote accordingly, and say your position out loud when asked.

Side bets

Between markets you will be offered small bets: next card red or black, high or low, usually paying even money or double your stake. Their expected value is zero. Their use is to reduce the variance of a position you already hold. If you are long the sum of the red cards, a bet that the next card is black is insurance, not a gamble.

Checklist before every quote

  1. What is it worth on average? Say the number.
  2. How wide is the distribution? Set width to match.
  3. Worst case if both sides get hit, as a share of the stack. Set size to survive it.
  4. Is there a hedge or a free arbitrage against something you already hold?
  5. Quote in the grammar above, with a size.

2 · pandas

One afternoon interview is a data round in a shared notebook. The dataset is small and the questions are the kind a desk asks of a day’s trades: filter it, group it, join it, summarise it. You are not being tested on syntax. You can describe what you want and the interviewer will type it. Knowing the five operations below means you spend the time on the question instead.

import pandas as pd

df = pd.read_csv("trades.csv")          # columns: time, symbol, side, qty, price
df.head(); df.describe(); df.dtypes      # look before you compute

# filter
buys = df[df["side"] == "buy"]
big  = df[(df["qty"] > 100) & (df["symbol"] == "SPY")]

# derive
df["notional"] = df["qty"] * df["price"]

# group and summarise
by_sym = df.groupby("symbol").agg(
    trades=("qty", "size"),
    volume=("qty", "sum"),
    vwap=("notional", lambda s: s.sum() / df.loc[s.index, "qty"].sum()),
)

# join
ref = pd.read_csv("ref.csv")              # columns: symbol, sector
df = df.merge(ref, on="symbol", how="left")

# sort, count, basic stats
df.sort_values("notional", ascending=False).head(10)
df["symbol"].value_counts()
df["price"].mean(), df["price"].std(), df["price"].quantile([0.05, 0.95])

Habits that matter more than the code: check the shape and the nulls before trusting a number; say what you expect the answer to be before you run the cell; when a result looks wrong, suspect the join first.

3 · Coding experience

Recruiting asks this before the onsite. Your answer shapes the afternoon: if you claim real coding experience you get a short coding interview in addition to the data round. There is no right answer and no penalty for a low number. There is a penalty for a high number you cannot back up.

Roughly how many hours have you spent writing code?
Are you confident writing code on your own, without help?
Would you like a coding interview at the onsite?

The market grammar follows Jane Street’s published guide. The chip mechanics, side bets, pandas round and coding form are reconstructed from candidate reports; nobody has published the originals.