Hacker News new | ask | show | jobs
by dsacco 3274 days ago
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.

2 comments

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.
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.

Why is it "risky"? Pretty strong word to use to mean they may not impress the interviewer. Besides relevant demos are almost always good in my experience.
Because it's extremely difficult to develop trading algorithms in isolation without any prior background. It's difficult for both programming/software development and research/strategy development. It's also a comparatively secretive industry. It's hard to learn how to correctly develop trading algorithms without "opening the kimono" so to speak.

Imagine if you knew how to develop databases very well, it was your company's core competency and you were (rightfully) opinionated about it. Now imagine you're interviewing someone, and they show you a database they developed, ostensibly to demonstrate familiarity or initiative with the subject matter. Except it's not a database at all, and it doesn't at all match the specification for what your firm (or similar firms) would consider a database. It's just a peculiar method of storing data in a custom file structure.

If you attempt to develop a trading algorithm independently and without prior training, you are approximately certain to design something from first principles that is utterly unlike what professionals do on a day to day basis. Take a look at /r/algotrading (or similar forums) sometime and read about the preconceived notions people have about that a trading algorithm is and what it takes to develop one. These are programmers who read about the subject matter, not simpletons. It's just that there is far more development and strategy work for the modal trading algorithm to be close to something resembling professional work, and the unknown unknowns are very difficult to eliminate without explicit guidance.

That's not to say it's literally undoable, I am aware of people who successfully do it. It's just risky, because you have far higher downside than upside in trying to go that route and present your work to a firm. The problem is not just that you might not impress the interviewer, but that they may (for better or worse) believe you have a lot that needs to be "unlearned."

Unless the demo is hello world level, relevant demos are almost always a net positive. They show passion and initiative. Given two candidates being the same, the one with the demo wins. Given ten candidates, the one with a demo is going to stand out even if the demo itself isn't impressive.

I know nothing about trading, but my expertise is databases and search. If someone built a toy database or search engine, I would be impressed even if it didn't come close to Postgres, Elasticsearch, etc. Especially since they would likely be able to answer questions that others would miss, including experienced people, because they built it from scratch. I find it hard to believe that algorithm trading interviews are fundamentally different to every other CS discipline in regards to demos.

In addition, the word "risk" implies danger. There is no danger in failing an interview. Absolutely none. No one dies. No one loses a leg. No one becomes homeless.

I feel like you're contesting my use of the word "risky", but not the substantive point I made. Risk doesn't really imply danger at all in this context, which I would think is self-evident given the usage of the term in colloquial and professional contexts (information security, finance, etc). There are obviously other forms of risk than standing under a piano suspended in the air.

To put my actual point more succinctly: yes, I agree a relevant portfolio item is generally a net positive; my concern is that most candidates without prior experience will develop a "trading algorithm" which is actually irrelevant to the process of trading in most firms. It's not about developing something past "hello world" quality, it's about developing something that resembles what the interviewer agrees is a trading algorithm.

What is the algorithm's core strategy? How was this strategy developed? Was it backtested? Did you overfit? Are you sure? Did you forward test on out of sample data? How does it weight the inputs for identifying eligible securities? Does it dynamically alter these weights in response to real time data? So then how does it process streaming data in a performant way? What time resolution does it require for the data? Okay, now that it's identified eligible securities, how does it manage risk and portfolio size? How many positions can be open and how much of the available capital can be utilized? Why and how are these specific limits enforced? But wait, how is it executing trades? How does it minimize market impact and slippage? How does it attempt to anonymize trades? Are you sure your algorithm isn't predictable? Can it be baited by market makers (i.e. your algorithm is trying to increment up to a minimum bid that will be sold to, which a market making algorithm takes advantage of by raising their price ahead of you)?

If a candidate develops an algorithm that handles considerations like these and can reason about them intelligently (if not necessarily correctly) in an interview then yes, it's impressive. They don't need it to be complete and ready to deploy, they need to understand why all of these things matter. If they don't, they haven't developed a trading algorithm, they've just slightly automated point and click trading on an Interactive Brokers GUI.

Great advice! Why not say that in the first place instead of shooting down the idea of a demo/portfolio? I think advice on the right kind of demo/portfolio is exactly what the OP needs, in addition to the other great advice you gave up-thread.
The risk is based on the fact he might get the job without the sample, but by providing the sample he might not get the job.
I've made a crypto trading bot which provides liquidity on poloniex, pretty simple. Makes a bit of money because of high volatility. It's not technically very impressive though.