Ask HN: How to prepare for algorithm trading interview as a developer - AppeasingRoko
======
dsacco
It's hard to provide very detailed advice without knowing what exactly you're
doing - are you developing market making algorithms? Working on execution
algorithms? Implementing strategies developed by researchers? Is this a hedge
fund or a prop trading firm? There is a lot that can encompass "quantitative
developer" in the front (and back!) office.

There are three standards that you can think of as the _Cracking the Coding
Interview_ of quant finance (insofar as that is a homogenous field, which it
isn't):

1\. _Heard on the Street_

2\. _Quant Job Interview Questions and Answers_

3\. _A Practical Guide to Quantitative Finance Interviews_

You want to also practice algorithms as you would for a Google/Facebook
whiteboard interview, but alongside that drill down on statistics. If you have
the time review your linear algebra.

Higher math will be less necessary if you're a developer as opposed to a
researcher, but they'll still want it. It's probably in your best interest if
you know at least one "serious" language used for performance (C++, Java
typically) while also being familiar with the data analysis libraries of
Python.

If you have no experience with finance and you're coming in to that cold, give
_Options, Futures and Other Derivatives_ a read. I'm assuming you're in this
boat because you're asking the question.

This is sort of catch-all advice. If you're working at Virtu or Jump, you're
going to want to know as much as you can about low level programming with
regards to latency, networking and memory, because those are HFT firms. If
you're working at a place like Two Sigma, Java will be more applicable and you
want to know more about statistics and data analysis on a practical level,
because you're be implementing the strategies developed by quantitative
researchers.

Tailor your approach to the type of trading the firm engages in. I've made two
assumptions here - 1) you're interviewing with a firm considered
"quantitative" as opposed to discretionary and 2) you're interviewing for a
front office role, not a back office role (support, farther from money).

If you give more information about the type of firm and the type of role we
can provide much more constructive advice.

~~~
AppeasingRoko
Hey! Thank you so much for your answer, it's very helpful. I'll give that book
a read. I'm applying for a dev job at Janestreet, which I know is very
competitive. I'm a pretty good at maths for a programmer, and pretty good at
programming for a mathematician, but I'm not sure if the interview will be a
mix of both or specifically on designing algorithms, doing toy problems, etc.

~~~
Abynthe
I (successfully) interviewed at Jane Street about 5 years ago at their London
office. I ultimately went elsewhere, but I can give a general overview of the
stuff we talked about.

My background was, at the time, electronic market making in fixed income with
substantial experience in functional programming using languages other than
OCaml. Prior to that, I'd done signal processing for radar systems in C++.

We did multiple general programming questions, working on purely functional
data structures, system design in functional languages and then some stuff on
concurrency and asynchronous systems in OCaml.

The asynchronous systems conversation then ended up with a conversation about
some category theory from the viewpoint of a functional programmer - I suspect
that arose from my background and I don't imagine it's something they ask
everyone about.

Finally we had a bunch of more mathematical questions, where we covered some
number theory, some linear algebra and some formal logic. Again, it's hard to
say how much of that is part of their normal set of questions and how many of
those were specific to my background.

I'm not sure any of that is directly applicable/useful to you, but hopefully
there's something that helps!

~~~
sharemywin
Sound like a lot of places if you can't impress them with something on your
resume. take it off or put in a caveat about you working with it minimally.

------
rl3
With that username, I suppose humanity should be thankful that OP isn't
applying for a job in AI. :)

On that note though, I'm curious how useful modern deep learning techniques
are for trading. Traditional machine learning for the past couple decades was
never terribly useful for entry or exit signals, merely as pattern recognition
for ancillary purposes. I'm wondering if that's changed now.

If I was to guess, ML is probably easier applied to longer time frames. On the
other hand, it's certainly possible to pipe the output of a GPU supercomputing
cluster to an FPGA/ASIC HFT fleet. A slight delay in updating the trading
model isn't the end of the world if execution speed remains good.

~~~
AppeasingRoko
My not particularly informed view is it wouldn't be great. Overfitting would
be the biggest problem, as well as the fact that people design trading
software specifically to exploit other trading bots these days.

On the plus side, less human input in trading software may greatly reduce
human biases which make us suck at trading.

~~~
rl3
> _... as well as the fact that people design trading software specifically to
> exploit other trading bots these days._

I figured modern ML would be the first thing firms use for that purpose. Might
be interesting though with bots trying to learn the behavior of their
counterparts and vice versa. The ensuing feedback loops are probably quite
interesting.

------
chad_strategic
On a side note, where do you find these kind of jobs specific to trading or
finance?

~~~
atemerev
efinancialcareers, but mostly through networking. If you are interested in
trading and finance, you try things on your own (there are many free market
data sources), you are active on profile communities, and eventually you get
noticed.

------
SirLJ
I would second the idea to show a sample trading algorithm based on some
trading system, it would show passion and self start...

------
wolco
Try showing them something similiar you built.

~~~
dsacco
This is risky advice, because it's very unlikely someone without any prior
experience can independently develop a trading algorithm that would impress an
interviewer. Modern trading algorithms typically have significant amounts of
infrastructure, which means you'd have either done this at another firm (in
which case, why ask the question), or you've bootstrapped software that
correctly handles data processing (multiple types and multiple sources!),
performant I/O, data analysis and strategy development, execution methods,
risk management and all those assorted goodies, etc.

If the OP wants to show interesting and relevant work, I'd do something like
implement an order book client from scratch using the NASDAQ ITCH spec, then
add data processing and interesting analysis functionality to it.

~~~
nicholas73
I think they will be impressed by any developer, without professional algo
trading experience, being able to understand the nitty gritty of how exchanges
work plus some basic algos.

~~~
dsacco
Absolutely. But my thesis here is that most developers without that experience
won't actually self-learn how exchanges work and develop algorithms with that
knowledge. But your point is somewhat covered by my NASDAQ ITCH suggestion :)

I think I haven't conveyed my point very well - I'm not saying developers need
to have a working, profitable algorithm to impress interviewers. I'm saying
they need to develop what _an interviewer_ would consider to be an algorithm
if _they_ call it that, and it's more likely they won't think of things like
e.g. exchange protocols and execution models. It's not a good look if you
develop what you think is a relevant portfolio item and instead develop
something completely orthogonal to it.

But if they can self-learn that they can absolutely try it. It's not about
making it a production-capable algorithm, it's about being aware of what
constitutes a modern trading algorithm. The unknown unknowns are more
prevalent.

I think a better suggestion than developing a portfolio item is just
developing the requisite skills in any case.

