Courses

Programming for Quantitative Developers

IntermediatePremium7 sections · 33 lessons · 79 questionsLog in to track progress

Almost every quantitative developer application starts the same way: an auto-graded online assessment, two to four problems, sixty to a hundred and twenty minutes, on HackerRank or Codility or CodeSignal. Nobody reads your code at that stage. A test harness runs it against inputs you never see and returns a number.

That format decides what is worth practising, and it is not what a generic algorithms course teaches. It rewards a solution that is correct on the empty input and the single-element input, that holds its complexity bound when the input is a hundred times larger than the example, and that can be written in twenty minutes rather than sketched in an hour. Later rounds invert the emphasis completely: a human reads the same code and asks what happens when a requirement changes.

This course covers the Python side of that pipeline. It opens with what the hiring funnel actually looks like at the top trading firms, including which of them ban Python outright, then works through the material the assessments keep returning to: the data structures you are expected to implement rather than import, the parsing and data-hygiene problems that generic platforms never set, algorithms chosen against an explicit complexity bound, the numerical Python that survives a review, and finally order books and matching, which is the one domain problem these firms ask and nobody else does.

Its companion, Systems Programming for Trading, covers the C++ half: internals, concurrency, and compile-time programming. Start here if you are preparing for an assessment in the next month, and there if the role says C++ on the hot path.

Every lesson ends with the problems from our coding catalogue that drill it, so the theory and the keyboard stay in the same session.

Vectorising Without Losing the PlotWhy a Python loop is slow, what a vectorised expression actually does, and the two cases where the loop is the right answer anyway.Time Series Alignment and LookaheadThe bug that produces beautiful results: using information the moment could not have had. Asof joins, point-in-time universes and back-adjusted prices.A Trade Blotter, End to EndFrom a list of fills to a position, an average price and a P&L split into realised and unrealised. The accounting choice that changes the answer.Monte Carlo That ConvergesThe square-root law that governs every simulation, why doubling paths barely helps, and the three ways to buy accuracy more cheaply.Numbers That Do Not LieFloating point that loses digits, a variance formula that cancels catastrophically, and estimators that quietly answer a different question.What CPython Does With Your ObjectsEvery value is a heap object and every name is a reference. Why a list of floats is four times the size of an array, and the four surprises that follow.Threads, Processes and the GILWhy threads do not speed up Python arithmetic, why they still help with waiting, what the GIL does not protect, and what it costs to move work into another process.asyncio and the Event LoopMany network waits on one thread: how coroutines take turns, the blocking call that stalls all of them, races at every await, and cancellation that gets swallowed.Streaming Statistics in Constant MemoryA rolling mean and variance updated in O(1) per value: running sums over a circular buffer, the rounding error they collect, the exponentially weighted version, and what cannot be done in constant time.

Keep reading Programming for Quantitative Developers

33 lessons in this course, and every other premium course, on one subscription.

  • Every lesson in every course, with the worked examples and interactive simulators
  • Graded questions on every lesson, with explanations for the wrong answers as well as the right one
  • The trainers, timed assessments and brainteaser library that go with them