Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What programming skills are required by HFT or Trading firms
217 points by mraza007 on May 15, 2020 | hide | past | favorite | 214 comments
What are some skills required to land a job in Trading Firm especially in roles like DevOps or developing software. How can a person excel at the technologies required by these firms


Basically Java, .NET and C++, with heavy focus on C++.

Being able to write allocation free algorithms, even on GC languages, lock free data structures and good knowledge of all multi-core programming paradigms and distributed computing.

Here are some talks that will give you a small overview into that world,

CppCon 2017: Carl Cook “When a Microsecond Is an Eternity: High Performance Trading Systems in C++”

https://www.youtube.com/watch?v=NH1Tta7purM

Core C++ 2019 :: Nimrod Sapir :: High Frequency Trading and Ultra Low Latency development techniques

https://www.youtube.com/watch?v=_0aU8S-hFQI

Open source Java HFT code from Chronicle Software, https://github.com/OpenHFT

"Writing and Testing High-Frequency Trading Engines", from Cliff Click

https://www.youtube.com/watch?v=iINk7x44MmM

However in these domains every ms counts, even how long cables are, so also expect Verilog, VHDL, and plenty of custom made algorithms running directly on hardware.

"A Low-Latency Library in FPGA Hardware for High-Frequency Trading"

https://www.youtube.com/watch?v=nXFcM1pGOIE

You can get an overview of the typical expectations here, https://www.efinancialcareers.com/


> allocation free algorithms

Do you have any good sources for information about this concept? I'm having trouble understanding how a algorithm could produce useful work without allocating anything.


Not an expert by any means but another way to look at "allocation free" algorithms is by looking at them as "statically allocated".

They don't allocate any new memory but they do perform operations on an input and write it to an output. At least in the embedded world this is how this is often done. Considering the overlap between embedded software and HFT, I'd imagine most of these algorithms are going to be something along the lines of "Take in a massive but fixed size block of read only data and output a fixed size result." You can have allocated memory but it needs to be allocated at startup and be able to be consistently reused without need for reallocation.

If you want super low latency, the last thing you want is a memory allocator blocking in the middle of your highly optimised algorithm. Instead you allocate everything ahead of time and just reuse the memory over and over again.


Exactly this. It's annoying but also not as intractable as it sounds. NASA has a similar requirement for mission critical software operating under strict constraints.


The goal is to prevent garbage collection from happening during fast path execution. So the program doesn't need to be literally allocation free, just free of heap allocations during the steady state of the program. So heap allocations during the initialization phase are okay, as are stack allocations at any time. And the no heap allocations during steady state isn't as bad as it sounds, as using an object pool that has preallocated objects in it is usually a reasonable replacement.


I used to write Java code which didn't have any objects, just byte arrays. It would never call GC and ran lightning fast.


Is there any particular reason you were using Java then? Seems like you could get the same effect with much more suitable languages.


Tooling, productivity, developer pool.

Usually these are very niche use cases that can be packed into a special purpose library.

Check the openHFT repository from my original post.


The general thinking is that 99% of code at even an HFT doesn’t have to look that funny, so it might make sense to write funny looking java for the 1% that does so you don’t have to fragment your codebase and talent pool.


An algorithm might be: Take an array of integers as input and return their sum. Returning or adding integers does not require allocating memory.


I presume you mean allocating new memory. You could sum an array and keep track of state/store cumulative sum in the existing array i.e. in-place algorithmic approaches: https://en.m.wikipedia.org/wiki/In-place_algorithm

You still have to have memory and use it though, somewhere.


Yes of course. If the algorithm operates on existing allocations, then it doesn't allocate any memory. Similarly the algorithm might operate on a fixed set of integers, which would not require allocations at all, even in Java.


Here's a good one by Fowler. They were trying to saturate a data channel with many simultaneous writers and didn't want locking or allocation. They ended up using a static ring buffer.

https://martinfowler.com/articles/lmax.html


You can learn Rust to get a good general understanding of implementing everything without allocations. The knowledge later transfers to other languages (though you'll miss the guarantees that Rust provides).


Startup/initialization performance generally doesn't matter because that can be done outside of trading hours, so allocation is fine there; the important thing is performance after that.


Never mind algo. I write decent size firmware every once in a while and the whole thing is allocation free.


Where can i find openHFT


OpenHFT is actually known as "Chronicle" now. Chronicle used to refer to a specific library under the OpenHFT umbrella, but a few years ago it was all rebranded to be Chronicle.

https://chronicle.software/


You use the stack or pre-allocate memory and work with that budget. You can also use custom allocators.


Thanks for sharing all this


Moral flexibility and subjugation. The boss says to build a thing, you build the thing. If rewriting an infiniband driver and pinning it to a core on the server and processing requests in kernel space in exquisitely crafted C is what cuts reation time by 0.0000005 sec and makes the firm a few extra bucks, that's what you do.

I interviewed at a Manhattan HFT firm (~2015) and that's what they do. The boss noted that "Congress could make a law invalidating our business model" and I realized that would be a good idea. They're not making the world a better place; they're not providing a valuable service; they're just exploiting and extracting and skimming some dollars out of the market. They have money and they're in the right place so their money can grab more money.


Which would you say is more morally problematic, HFT or figuring out ways of making people click ads?


In another life, I worked for small webdev/marketing consultancy. Their clients were multilayer marketing firms, subscription services startup and other startups.

The company was run by car salesperson types.

And their clients were even more sleazy. One of the popular joke they repeated with clients was that everyone is unhappy, and if they are not, then they haven't seen the right ad.

It was pretty amazing to see "startup" founders come in and say they want to make the world a better place. Then say they need to target stupid people because they spend the most money. Or only an idiot would buy their crap but there are a lot of idiots.

A lot of subscription services are started by rich stay at home spouses. Many of them didn't even really care about about making money but just wanted it as a status symbol and a way to get their pictures appear in their friend's feed. It was funny how wanted to make sure their friends saw their ad, even though they knew their friends will never buy whatever.

After working there for a year, I decided I will never deal with anything remotely related to adtech. Professionally, I am not yet fully removed from adtech. Stuff I work on now is indirectly used by adtech companies.

But I used to spend a lot of time making websites monetized with AdWords. Now I do algotrading as a hobby and feel a lot better about it. There are no false pretenses. It is just about making money. Honest, pure, simple. And it is challenging.

So I would say ads are definitely a lot worse.


For sure the Ad economy is worse. HFT has a small impact on the economy and 0 on culture while the ad model destroyed respectable media and is well on its way to destroying the web, not to mention doing immeasurable harm to social cohesion. But hey, better to rag against the greedy bankers than the people signing your paycheck. Don't Be Evil!


The entire financial sector. It captures 30% of all corporate profits in the world economy. Ads are bad, but not "take 1/3 of what other people make" bad.


You're under absolutely no obligation to like it, but banks do provide essential services for a fee.

They're also (belatedly and sometimes decreasingly) heavily regulated in most of the world. What they do isn't always rent-seeking.


> banks do provide essential services for a fee. ... What they do isn't always rent-seeking.

Mob bosses own legitimate businesses. They're still crooks.

edit: Just FYI: I am not anti-bank. I am anti "capture 1/3 of all economic profits". No economy can survive that sort of parasitic activity in the long term, regardless of the intention behind it.


> but banks do provide essential services for a fee.

They charge you for not having enough money in your checking account, while using your money to give out loans and make money off of that. Basically charging you for being poor while making money off of your by fee and loaning your money to other people.

I'm old enough to remember they never charge a fee for not having enough money in the bank account. I left my bank for a credit union.

Also Well Fargo was caught recently in a dubious sketchy scheme.


Please note these activities are unrelated to high frequency trading.


HFT isn't essential services.


NYC seems to disagree (at least some market makers are currently considered essential businesses).


Not all banks do that


Most do. Interest rates are how those that have take from those that don't legally. Banks are just the executors of the idea.

It's a very complex systematic problem. I'm not saying burn all banks let's move to the jungle and eat coconuts.


I mean not all banks have minimum balances or any fees at all on checking accounts. Not sure what you mean by interest rates. If I have a savings account I'm getting paid interest. If I take a loan I'm paying interest in exchange for access to the capital. What exactly is the issue here?


You’d figure bank stocks would be performing better, considering they’re capturing so much purported profits.


Capturing other companies' profits is just step 1 in the plan to put as much of that money in your own pockets as possible.

If you're willing to "steal" from other companies, why wouldn't you also "steal" from the owners of your own company? Why pay a dividend when you can pay bonuses?


In many listed financial companies it is certain employees and management who do well financially, rather than the shareholders.


As Matt Levine puts it, investment banks are kind of like socialist collectives run for the benefits of their workers.


fair enough. Updated to specify the entire financial sector, not just banks.


App store takes 30% of revenue before you even start advertising..


The App store's main source of revenue isn't advertising, it's acting as a marketplace for apps. It also doesn't capture 30% of the entire economy that it operates in.


The surveillance economy is far worse than finance.


Ads, 110%


If I may proffer an opinion, HFT is more morally problematic. It's basically eavesdropping or civilian wiretapping, only done at scale and with the leverage of millions of dollars.

How could "making people click ads" be worse?


>It's basically eavesdropping or civilian wiretapping, only done at scale and with the leverage of millions of dollars

I don't think anyone on hacker news would bat an eye if your comment said "Ads are problematic" before this sentence.

It's also unclear to how HFTs are eavesdropping on anyone, they use publicly available (for a price) data.


HFT capitalizes on a kind of time arbitrage. They take the data from one market, and then transport that data using specialized, custom built networks that move the data from one place to another a tiny fraction of a second quicker than other networks. They then capitalize on having that data earlier to eek out small profits at scale.

Imagine two investors sitting at a restaurant table discussing trades they are about to make. The trades they are making will be significant, in the sense that their trades will then impact the value of the stocks they're trading. Meanwhile, a waiter at the restaurant makes a habit of eavesdropping on the conversations of these investors. When he gets the information, he runs to the phone and effects his own, smaller trade.

It's not that the waiter happened to overhear something. The waiter makes it his business to "overhear." The waiter adds no real value. He's a parasite on the people who do add value. The HFT traders are likewise.

What they do is documented in Michael Lewis's Flashboys.

https://www.amazon.com/Flash-Boys-Wall-Street-Revolt/dp/0393...


I work in the industry, have read Flash Boys, and am aware of how misleading and occasionally false the book is. It's always disheartening to see someone be so sure of themselves while also being incorrect.

Your metaphor is inaccurate. Your metaphor describes actual front running, which is indeed illegal. It does not describe the sort of latency arbitrage that HFTs do, which Michael Lewis has unfortunately also dubbed "front running" (and succeeded at changing the lay population's definition of the term).

I would try to adjust your metaphor to be correct but it isn't really possible. There is no eavesdropping. HFTs do not know anything about trades before they happen. If they see a large trade, they adjust their prices after the trade happens (possibly on another exchange). This isn't eavesdropping, they are operating on public information, just very quickly. It's the foundation of all market making: adjusting prices according to order flow.


I'm going by memory of what I read in the book and would be happy to have any misunderstanding on my part clarified. Put simply, I think the book described things this way. (I'll use all convenient numbers and fanciful descriptions.)

A buy is tendered from Timbuktu. The offer will need to travel from Timbuktu to the NYSE. The Flash Boys find out about this buy offer before the sellers using the NYSE system do, so they insert themselves.

The buyer in Timbuktu sees a price of 100 dollars. As are all prices, this 100 dollar quote is "historical." The price will be what it is when the trade is actually effected. The buyer offers 101 dollars. The Flash Boys get ahead of the game, buy the stock at 100.50 and resell it for 101.

That's boiling it down to the essentials. I could be wrong about what the book says. The book could be wrong in its characterization of what goes on. Please, you tell me.


I haven't read Flash Boys since it came out, but I'm pretty sure it doesn't actually inaccurately describe how latency arbitrage works the way you just did, it just blurs together similar concepts enough to create confusion about the details, which results in outrage.

The key part that you're missing is that latency arbitrage works only when there are multiple exchanges, and there is only one exchange in your example. Your example suggests that HFTs somehow see the buy order before it reaches the NYSE, but that is not possible. In reality it would be something like this:

- Buyer wants to buy 100,000 shares at $100, but no single stock exchange (there are 13 in the US I believe, soon to be 14) has that many shares available at that price. - But there are 50,000 shares each available at NYSE and NASDAQ each, so they send orders to each. - Their NYSE order arrives first, and the trade happens at $100 for all 50,000 shares - The HFT notices, and seeing that demand is high for the stock, increases their price on NASDAQ to $100.01 for those remaining 50,000 shares. - The buyer's order on NASDAQ does not trade, because the $100 is no longer available

The "information leakage" is from public information only - that a trade happened on another exchange.

Note also that no part of this example discusses the HFT buying a certain price, then selling back immediately at a higher price.


Sorry I can't edit, I reformatted the bullets below:

- Buyer wants to buy 100,000 shares at $100, but no single stock exchange (there are 13 in the US I believe, soon to be 14) has that many shares available at that price.

- But there are 50,000 shares each available at NYSE and NASDAQ each, so they send orders to each.

- Their NYSE order arrives first, and the trade happens at $100 for all 50,000 shares

- The HFT notices, and seeing that demand is high for the stock, increases their price on NASDAQ to $100.01 for those remaining 50,000 shares.

- The buyer's order on NASDAQ does not trade, because the $100 is no longer available


"Making the world a better place" is one of the original jokes in the Silicon Valley tv show because it's such an absurd goal. If they are doing something illegal they should go to jail, but as long as they aren't actively hurting others, being a middleman in a transaction is something that many, many people do to make money.


When the dust is settled, I think HFT firms will emerge as a very minor evil compared to social media firms.


Are there any HFT firms that engage in shady data deals or startup acquisitions, or outright lie to the government about what they are doing?


Also, from the same show, Gavin Belson:

> I don’t want to live in a world where someone else makes the world a better place better than we do


I think you are thinking about "changing the world".

"Making the world a better place" to me has the connotation of providing a small positive contribution for others around you.



What about re-writing and infiniband driver requires moral flexibility?


the goal behind the rewrite


Cutting reaction time to make a few extra bucks? How does that require moral flexibility?

Is the immoral part that they can use their money to make more money? If by earning more money, one can afford to buy more food in bulk and save money on that and gas, or buy a washing machine and save money on going to the laundromat, is that immoral of one to do?


I think the sticking point is that this method of acquiring money is only available to those who are already have more money than any one person could ever spend, and the money that is acquired often comes from those who do not have enough money to retire yet, via institutional investors that manage insurance, pensions, and retirement accounts.

That is, people who could retire now and live without worry for the next thousand years or more are taking more money from people who are toiling away to try to retire by age 70, and making it more difficult to accomplish that goal.


Then what's being argued is that what's immoral is to have too much money.

An issue with it is that there's no objective, definite point at which we can say that a person has made too much money. I think anyone could consider that those that are making more than themselves are making too much. How much more they're making compared to us determines the certainty with which we can say they're making too much.


I would absolutely argue that it's immoral to have more money than 500 times the median individual income. That means anyone with individual wealth (after liquidating everything to cash) of more than about $33M is a selfish, exploitative asshole. That's not illegal, of course, but I can still think ill of their avarice.

500 times median individual income allows you to pay your fiduciary manager 2.5x median while you earn 12.5x median for doing nothing at all, forever. That is without a doubt a permanent luxury lifestyle, firmly wedged in the upper class, with a dependent business that is infinitely sustainable with a single client. But it isn't so much that one couldn't spend it all on luxury consumer goods, with a bit of effort. It's enough for up to ten full-time personal servants, while eating filet and lobster every night. Six security guards, at two per 8-hr shift, one personal chef, one executive assistant, one driver, and one house-cleaner. Seems like plenty to me, but as a filthy prole, what do I know?

Spending the money back into the economy is the saving grace of the wealthy. Letting the money go, so that it can be someone else's to spend for a little while, is why it is okay for the rich to have lots of money (but not "too much"). They keep the yacht builders and golf course architects in business.

When someone has "too much" money, they can't spend it fast enough to avoid creating a wealth singularity. They mostly invest it and lend it, weakly throwing it out in a long elliptical orbit, but that money accumulates more money on its journey through apolucre and then collides back at perilucre. Only spending it can send it out beyond the event horizon, and permanently lessen the mass of the hoard, and possibly keep someone else's star from evaporating too small to sustain its energy reactions.

A billionaire can pay their fiduciary management company $5M per year, taking $25M per year in investment income (adjusted for inflation, forever). They can fund a personal servant army/entourage of 350 people, with an average annual salary of $70k, still leaving $500k to spend on their own. The Queen of all the Commonwealth nations has about 1000 servants in the UK, distributed over several palace properties. You literally have to be a national institution to have that many employees.


Is that what hedge fund people do with their money, buy their first washing machine? Or are they buying apartments and leaving them empty to store their money?


> Is that what hedge fund people do with their money, buy their first washing machine?

I'm obviously not saying that. It's an example of how average people make/save more money from having more money. IOW, it's how average people use essentially the same tactic.


Could you explain this more? I don't know much about this world. I understand they are not making the world a better place, but are they making it worse?

Something that I have heard is that they are providing a service by providing liquidity to the market.


You are correct, HFT firms provide a valuable thing: liquidity in financial markets which leads to smaller bid/ask spreads.

They aren’t making things worse, lower transaction costs are good for everyone that participates in markets, which includes the OP.


Does it really matter if you save 1 or 2 cents when buying a bunch of stocks?


If your 401k has ETFs or mutual funds in it, the fund managers are rebalancing every month or every quarter. Saving small amounts of money on these transactions really adds up when you think about compounding over decades.


In theory yea but during a crisis or other high volatility situation where the market needs liquidity the most they’re the first ones to pull their bids/asks.


Even if that was true (it's difficult to prove either way since there is little data on black swan events), the fact that they provide liquidity during stable times can make up for not providing liquidity during black swans. The impact could still be net-positive.

Also, it's unclear what the alternative is. While HFT may not be needed, markets run by human traders were significantly more unfair than anything we have now. It's just that fewer people complained about it because nothing was transparent. Or do you believe human traders don't pull quotes?


I don't really have an opinion on how to make the market fair one way or another, I just advocate for retail investors to completely dispense with the idea that the market will be fair to them. I see a lot of people getting into day trading not realizing that the whole thing is completely rigged, from front-runners, insider traders, hedge fund managers with huge pockets spreading fake news (watch Jim Cramer brag about all his different market manipulation tactics: https://www.youtube.com/watch?v=gMShFx5rThI), etc. Unless you are prepared to engage in that kind of behavior as well (and have the resources to do it), expect to lose your money. Your only option is to buy and hold for the very long term.


I am a believer in markets and generally buy the idea that HFT produces value by providing liquidity, but I interviewed at an HFT firm where we spent most of the time talking about microwave networks that cut down transmission times by nanoseconds. I have a hard time telling myself the story that an arms race over milliseconds is creating as much value as it captures. E.g. from WSJ:

> [Jim Barksdale] spent an estimated $300 million or more to bury a fiber-optic cable that shaved three-thousandths of a second off communications between New York and Chicago


The industry as a whole provides net value to the market by via higher liquidity and tighter spreads.

The arms race is a necessity due to rising competition. HFTs cannibalize each other every year. People on the outside seem to think being in HFT inherently means you’re printing money but they don’t acknowledge how tough the business actually is. Many firms have either collapsed or have been bought out over the past decade.

Market makers specifically (who inherently have to operate in HFT time horizons) don't even compete with low-mid frequency hedge funds and props. They don't compete with retail investors. They strictly compete against other MMs to capture the spread.


Out of curiosity, why do MMs have to operate on HFT time horizons? Couldn't they operate on a somewhat lower frequencies by quoting wider? Sure, they won't see the same profits, but why is it impossible?


It's interesting the way you connect quoting with wider with lower profits. In a vacuum, clearly the opposite is true. But you're leaving out the part that you only stand a chance to trade and therefore profit if you have the very best price, so you can't quote wider otherwise your competitors will get the trade. If your quote is a million dollars wide, you won't make a million dollars less frequently - you'll never make anything at all.

That's all true for the very strictest definition of a market maker, which is pretty much necessarily HFT (in list US equities). But there are other types of traders that are successful of course, because their edge comes from thinking about the market in a different way. In situations where finely-tuned, data-informed, low-latency algorithms do not have the confidence to give good prices (e.g. illiquid securities or during times of volatility), these traders might be more successful.


Oh yeah, when I said "lower profits" I didn't mean per roundtrip, but overall lower profits over a longer period of time due to fewer trades happening at wider quotes. HFT almost always quotes minimum spreads, so my question was why you couldn't be successful quoting larger spreads (not $1M, but let's say 2-10x the normal spread) while trying to be "smarter" as opposed to faster, since with wider spreads you'd already be in front of the order queue when the price moves, in front of the HFT trader who has to react to the movement to quote his tiny spread.

I'm trying to understand where the market maker = necessarily HFT comes from. After all, we had markets makers well before HFT too. I understand that MM can be particularly profitable when doing HFT, but why is HFT a necessity?


Your intuition is good, I think it's the terminology/semantics that are causing you confusion. What you're describing is a valid way to make money as a trader, but most people don't call it market making. The wider you quote relative to other market participants, the more risk you take on - because your volume is lower, you have to hold on to your positions longer, exposing you to greater fluctuations in price. Market making is very much about not exposing yourself to this kind of risk.

In real terms, if you quote a penny wide market, there's a much greater change that you can both buy and sell in a short period of time to capture that penny. However, if you quote a 10c wide market (when everyone else is quoting a penny), you might buy shares at $10, but it might be a much longer time before anyone wants to buy them back from you at $10.10 - in fact it might be never, they could go straight to 0!

Again, quoting that 10c spread is perfectly valid, it just means that your edge begins to be less about capturing "flow" as much as it is about predicting the direction of the stock over a longer time horizon.


That's a good point and it makes sense, but couldn't you hedge the inventory risk?


I'm not totally sure what you mean by "hedge the inventory risk." How would you accomplish that? You can reduce your position size but that's not hedging, it's just reducing your exposure in the first place. You could use options, but that 1) exposes you to other risks and 2) is prohibitively expensive given the cost to transact in that market is much higher.

The best way to keep risk low as a market maker is to keep inventory low, which means you need to get out of positions quickly, which means you need to have competitive prices to increase your chance of interacting with order flow.


Traders (be it hedge funds, props, retail, anyone) will only "take your action" if you price competitively. You'll never get your orders filled. The open bid and ask as per whatever the exchange quotes are really the only prices that matter when it comes to what actually gets executed.

Also even if you do quote wider, to effectively capture the spread, your buy on one side and your sell on the other side still have to basically occur simultaneously which is where the demand for latency comes in so you really can't escape it.

That said there are ways to still be profitable even if you know you're not the fastest gun in the west across the most exchanges. Without going into too many details you'd have to selectively choose where/what you trade. Which is not trivial at all of course.


Hm, maybe I'm fundamentally misunderstanding something. Let's just say the price is a random walk. It's not directly relevant to the argument, but for simplicity. An HFT MM will make money by continuously quoting ask/bid at the best price, i.e. a lot of trades, capturing a very small spread each time. Given that it's a random walk, buy and sell don't always occur simultaneously either, e.g. in a trending regime where the HFT MM may start pulling quotes due to risk checks and/or inventory/hedging concerns.

So if I am an MM that quotes a wider but gets fewer executions at larger time intervals, shouldn't I be able to also make profit? After all, my queue position is in front of the HFT MM because I put in orders earlier (since I am quoting wider), latency here is irrelevant.

Can you explain where my logic is faulty?


I guess I would say, it depends?

Existing profitable MMs aren't all equally fast. So the slower ones that trade on the same exchanges or even the same indices have to be profitably trading at a wider spread.

HFT isn't a concrete term so I guess technically there's no hard line to draw for how fast your roundtrip times have to be to be profitable. But if you are trading wide enough where you think latency isn't a factor, aren't you really just predicting where you think the book will go "far" ahead in the future? MM is inherently a reactionary business (with some effort put into anticipating the price moving against you in the very very short term).


> But if you are trading wide enough where you think latency isn't a factor, aren't you really just predicting where you think the book will go "far" ahead in the future

Yep, or rather, predicting where the market will not go to avoid the price moving against my quote. My impression was that HFT is all about being fast, as opposed to smart, since you can't make complex predictions on nanosecond scales. Complex models don't fit on an FPGA. So couldn't you get an edge by being just a little bit smarter with predictions but slower and quoting wider spreads? And just to be clear, I'm not talking about minutes here, but maybe milliseconds to seconds, which I think wouldn't be considered HFT today?


There is trading activity in the milliseconds-seconds horizon as well. I'm sure all the big HFT players participate plenty. These just wouldn't be considered MM strategies.

Your original question was why MMs have to operate at HFT horizons. MMs by definition are liquidity providers (which means high availability and high volume at competitive prices). In some cases (DMMs) they're legally obligated to do so at some well defined baseline. And in that specific context HFT speeds are required.


To me, MM is the activity of providing liquidity with passive buy and sell orders - profiting from the spread while taking on inventory risk. That's also how exchanges define it, paying (or giving discounts to) traders whose orders are filled passively - the whole maker/taker incentive that was invented to attract customers a few decades ago. And we had human market makers well before electronic markets, and we still have them for illiquid markets today. They are (still now) called Market Makers even though they trade on minute scales!

So why is it not considered Market Making if I make decisions on millisecond or second scales? I don't understand how that is related to time horizon. So that's what I meant with original question, why can't I be a profitable market maker without HFT speeds? I still don't see the reason... Or are we just arguing about definitions here? Maybe when you say MM, what you really mean is HFT, but in my head the taxonomy looks completely different.

DMMs are a different story since that's basically just an SLA you have to adhere to, but not talking about DMMs in this case.


Slow market making is still market making, although rarely a good idea in my view. There are instruments with market makers operating at millisecond time scales. Not nearly as many as a few years ago, but they do still exist.


> Let's just say the price is a random walk

This is where your logic is faulty. On the time scale of for example days, the price is definitely not a random walk. If stock XYZ has a price of $100 at 9:00 am, and you put in a buy order at $99.50 and a sell order at $100.50, there are a number of ways for it to go:

1. The price drops to $99, your buy at $99.50 triggers and you now are long (expect the price to rise), the price rises to $101, your sell at $100.50 triggers, you make $1.00 and are back to your original position.

2. The price rises to $101, your sell order at $100.50 triggers and you are now short, the price drops to $99.00, your buy order at $99.50 triggers, you make $1.00 and are back to your original position

3. The price drops to $99, your buy at $99.50 triggers and you now are long (expect the price to rise), the price continues to drop to $95, you now have a share of XYZ worth $95.00 which you are offering to sell at $100.50. Either you exit your position (and lose $4.50) or stay in the position (in which case you have $99.50 less available to invest than before. Whether or not the position makes sense to keep, you are now a long-term investor, not a market maker.)

4. Same as number 3 except that the price rises to $100.50, your sell goes and you are now short XYZ, the price continues to rise to $105.00 and again you either exit the position and lose money or don't exit and are long-term short XYZ (and never make the money back if the price never drops back down).

In order to make a profit, 1 and 2 have to happen 10x as often as 3 and 4 for the particular values mentioned above.

If you widen your spread, you will make more money each time the random walk of the market goes from one side of your spread to the other, but that will happen less often (whereas large one-way market moves that more-or-less permanently move the price to a level where it no longer crosses your spread stay roughly as probable as before).

If you narrow your spread, you will make money more often, but less each time. HFT firms are an extreme example of this - they have very (very!) narrow spreads that they trade on millions of times per second, pocketing a fraction of a penny each time (unless the market moves, in which case they lose money just like any other market maker, but events that happen every minute are "rare" when you are working on the timescale of microseconds).

There is a phrase, "picking up pennies in front of a steamroller", used in finance. The basic idea is that there are pennies (spreads) lying on the ground for you to pick up, but the steamroller (an actual movement of the market) could come along at any time and crush your profits.


In short, someone else will quote a tighter spread and capture it.


> I understand they are not making the world a better place, but are they making it worse?

Most people would argue that they are not directly making the world a worse place, but rather that they are sucking in talent that could have used their skills in other places to make the world a better place. For example, many talented Physicists ended up in trading companies a few decades ago. Today, you can make a similar argument for companies such as Google or FB who probably have tons of extremely intelligent scientists working on ads.

> Something that I have heard is that they are providing a service by providing liquidity to the market.

It's unquestionable that they provide liquidity, at least most of the time. That's good. What's questionable is whether they are doing it in an efficient way. Their primary goal is not to provide liquidity - it's to make money. Liquidity is just kind of a side effect of their activities, which is an elaborate race to "beat" other firms through speed and algorithms. Most of the resources go towards that, but don't result in additional liquidity, most of which is probably not even needed. It's like saying "FB provides an important service by allowing you to message your friends" - sure, that's not wrong, but that's not their primary goal. And you don't need a trillion dollar to make a messaging app. The difference is that FB also does lots of other things, so it's unclear how much of their resources are actually wasted vs. potentially used for "making the world a better place" - it's not quite as obvious that they are wasting a lot of talent and capital.

The other question is what the alternative would be. Markets run by human traders were significantly more unfair than anything we have now, but HFT was never meant to happen, it was just result of markets becoming electronic and transparent, and people trying to extract more money.


> The boss says to build a thing, you build the thing.

Sounds like a typical entry-level job to me.

> They're not making the world a better place; they're not providing a valuable service; they're just exploiting and extracting and skimming some dollars out of the market.

Firms providing useful services through their trading allow our economies to prioritize resources more efficiently. Better resource prioritization increases prosperity, which makes the world a better place in a multitude of ways. The useful services provided (for example, increased market stability) go beyond the seemingly-simple benefits of "increased liquidity" and "tighter bid/ask spreads" that are often mentioned. This becomes easier to appreciate once you delve into the enormous number and diversity of traded instruments and their interrelationships. It's far more than just cash equities.

Firms pursing parasitic trading are harmful to markets. Their behavior tends to backfire in the long run due to a combination of regulatory action and natural market dynamics.

Characterizing all (or even most) HFT firms as harmful is inaccurate in my experience.


Wouldn't this kind of stuff make the server hugely vulnerable though? Like wouldn't one malformed input completely screw the whole thing up, or God forbid a carefully crafted malicious one? High speed complex systems running on tailor made c code doesn't seem particularly safe


Bugs have been known to cause some fairly major blow outs [0].

It's pretty/very rare for malicious code/data to get involved because this sort of thing is almost always co-hosted with the exchange. There's nowhere really to inject yourself. I'm sure it happens in other parts of the process, just not much in the very low latency parts.

[0] https://en.wikipedia.org/wiki/Knight_Capital_Group#2012_stoc...


Right. Does it take 15 minutes to "rewrite an Infiniband driver and pin it to a core"?

I ask because a friend was contacted by HFT firm but is concerned about work hours and cowboy coding.


I've worked at two of what are broadly considered to be the top firms. Most of these comments are inconsistent with my experience.

Everybody's talking about what it takes to write trading systems, but OP asked about "skills required to land a job" not skills needed to do the job. Aside from a few specialized roles (like FPGA dev or security), the firms I'm familiar with only evaluate general dev skills. The interview process is pretty much the same as you'd experience at a top tech company. They don't care at all if you know the languages they use. Once you're in the door, the firm will teach you everything you need to know.


Which firms are broadly considered to the top ones?


Two Sigma, Renaissance Technologies possibly. Jane Street like the other reply mentioned


What about Bridge water and Hudson river trading


Bridgewater is not an HFT, they are a hedge fund.

That being said - Bridgewater are looking for more than just skills. Bridgewater is very heavy on meetings and those meetings being recorded. You can ace the skillset, but would be completely inadequate.

Their interview process is great. It's very honest and revealing. I don't fit the company and I made the decision at their campus interview, their opinion matched mine as well.

But, unlike most other companies, you are shown exactly what the company is. Which is very good.

If you can land an interview, you like them and get an offer - I hear that it's a pretty good place to work.


two sigma, de shaw, aqr, etc.


Citadel.


Jane Street is one


Don't they also care a lot about pedigree? I heard that they only hire from Top 10 colleges and companies like Google and Facebook. Paraphrasing an acquaintance from Citadel - "You don't find us, we find you."


It's true that most of our recruiting is focused on a small set of top schools. But it's not because we think those schools magically make people amazing. We just have a small recruiting team, and the easiest way to find good people to interview is to let somebody else (i.e. the school) do most of the filtering for you. We're happy to interview people from elsewhere when we have reason to believe they'll be successful, but it's hard for a small firm to build the capabilities to find them.


To add onto that, firms like Citadel still do cast a wide net even if their targeted recruiting is primarily at top tier schools. They advertise in common business classifieds like Crain's, for example.

Firms like this also employ a wide number of third-party recruiting services and internal contractors, I know at least one. If you can impress one of these third-parties you can get in the door without a degree from Stanford.

It's true about not caring about if you write whatever language that they do - what I've found is that most firms are generally interested in your combined intuition for markets, math, and analysis. If you "get" market mechanics, have a solid grasp on mathematics, and have the creativity and skills to apply those skills in an innovative way, they could care less what your primary programming language is.

For example, if you have the market intuition to understand the common underlying drivers between RBOB gas and WTI crude, are creative enough to come up with a new form of analysis, and have the math skills to take that idea from conception to delivery, they really don't care if you have to learn CPP to integrate your intelligence and creativity into their infrastructure.

Source: Work in/around the industry building data processing for trading firms, funds, etc. Also received a couple of prop shop offers.


I can only speak to HFT.

For dev roles, Python experts (emphasis on expert) and experts in modern C++ have the easiest time. C experts and systems programmers with assembly expertise can also find a job, but the market is smaller for them (although higher-paying).

OS-level and systems programming are valuable. Understanding computer architecture is important, and computer systems as well.

Credentials are an important filtering mechanism for them, so if you didn't go to a top 10 school, your resume needs to make up for it (or you need to be a very experienced hire). Working at a FAANG company or a bank doesn't necessarily make up for not going to a top school.

Successful devs at HFTs usually have a ~50-hour workweek or are very efficient programmers.


I wonder How can someone become an expert at python. Even though i have worked for two global banks as an intern but now I’m exploring to land a position in HFT to gain more financial/tech experience to become more well rounded person


I've written python for a living everyday for a few years now. No means an expert but IMO there are two core skills:

Cleanliness and design. Learning and using language features that make code easier to build on, test, and deduce about. Basically writing code that's very nice to humans. Here python really shines.

The second part is writing code that's very nice to machines and runs really fast and correctly. Multiprocessing, writing parts of the code in a compiled language for extra speed, using buffers for speed, async, that kind of thing. Easy enough for specific problems, the issue is that these performance tweaks often make code harder for humans to understand.

Now writing a nice looking and well designed program is fairly easy. Making a really fast-but-ugly program is also fairly easy. The mark of a real expert in my opinion is combining these two abilities: writing code that's both human and machine friendly. As always, practice makes perfect.

To practice you need to practice both, and on real data. Don't just use toy examples, get your hands on some big messy data that takes hours to crunch. Don't just write toy apps, keep writing and adding features until it becomes a huge stinking mess, then learn from that mess and do it again.


Agreed. I totally agree with unless you aren't willing to try you can't really learn so pratice really matters


One thing that you can do, and that has landed me a couple of prop offers, has been creating your own trade analysis projects.

I was writing spaghetti mathematica code and had a poor linear algebra understanding when I wrote up an implementation of the concepts in Ganapathy Vidyamurthy's book Pairs Trading. It was terrible code that was 1200 lines of procedural, no functions, no objects code, but they could see that I could hack it when it came to the math, could learn on my feet, and had the drive and creativity to work out problems put in front of me without a ton of handholding.

The additional benefit there is that I got to come in and talk about something that I built and knew intimately during the interview. When they asked me about my Kalman filter implementation I could speak knowledgeably because I built it, the differences between other forms of hedging ratios because these were considered in the book that I'd had to pound into my head. It seems a bit scary to put your work in front of these people with advanced degrees from universities that wouldn't even respond to your application, but it transitions the interview from being asked questions at random to talking about something you put six months of effort into, even if it it kind of sucks too.


Besides the other comments, which are accurate, the two books that leveled up my Python personally are "Effective Python" and "Fluent Python", in that order.


I might buy those books to level up my python skills.


> I wonder How can someone become an expert at python.

I think it's the same as becoming an expert at anything. Lots of practice, and lots of feedback from people who are already experts. The latter is unfortunately pretty hard to find unless you already have a job writing Python.


Think about it this way - if you know Python inside and out, to the point that you can comment on internal design of CPython and it's drawbacks, that would make you an expert.

It also helps if you write a book about it ;)


I passed the interviews at one of the top stat arb hft firms and it sounds like there are a couple of responses from similar shops here. One thing people haven't mentioned: pedigree. I passed 3 rounds of interviews and my final interviewer was batting for me, when I didn't get the offer, he said the team was apprehensive because I didn't have the pedigree from MIT/Princeton like everyone else. He wasn't a fan of the decision because he worked at a string of failed startups himself prior to starting there, c'est la vie. Also for the curious, he said the salary range was 400-460k with ~3-5 yoe.


A hiring partner at an HFT firm once told me why they had a disproportionate number of people from MIT or Ivy League schools, especially for fresh grads: they selected for intelligence, coding skills etc., but they also needed people who could very quickly focus on the top priority tasks for the firm. (For example, if someone committed buggy code and the firm was losing out on profits because its algorithms weren't running, do you hunt down the bug or do you revert?)

And it turns out that kids from Ivy League schools tend to be very good at constantly being aware of these top-level priorities for the firm. This applied for almost every front and mid office role in that firm: DevOps, algorithm developers, traders, researchers. I can't speak for all the firms out there, but I think at least my friend would happily substitute pedigree for another item on a person's resume that demonstrated experience with running a live system where downtime is very costly.


this. i was involved in a lot of interviewing / hiring at one of the top quant firms. i was shocked at how much this factored in.


Why does going to good school really matter if you are bringing in top notch skills I think that's one the reason why financial companies are having a hard time retaining good tech talent but they pay really well compared to FAANG


The three biggest skills aren't directly tech: learning fast/efficiently, communication and execution under pressure, and perseverance/discipline to finish/deliver.

Where I work, our devops use a mix of python/ruby/golang/bash for day to day debugging and development. Ability to read, understand, and modify Python (or a similar scripting language) and a familiarity with Bourne/bash are probably the minimum for devops.

For operations, you'd want to bring some skills that add to the team in new skills or redundancy. You'll likely be trained/cross trained in many more. Familiarity with and ability to debug some of the following: databases, networked services (sometimes a pcap replay is all you have), systems troubleshooting, monitoring, queues, or specific hardware and software platforms we use.

At the HFT I work at, we hire Jr and Sr people. For systems people, there is a bit of a divide between trading systems engineers, who work directly with devs and traders on the care+feeding of some corner of our software stack and infrastructure systems that provide shared tooling and substrates (k8s, deployment tooling, continuous integration/delivery, configuration management tooling, additional debugging help, etc). We also have network teams, traditional IT service desk teams, and performance monitoring/improvement teams.

If you're not coming from trading, we still need all of the standard sysadmin and devops skills. We have SSH, Kafka, Zookeeper, MySQL/Maria, tcpdump/wireshark, Linux, Puppet, Docker, Kubernetes, ElasticSearch, Hadoop, etc. We have misc custom file formats but also loads of json , some xml, etc. We integrate open source and proprietary as much or more than we build. Outside of the execution stack, you'd recognize a lot of what we do at any medium-sized tech company.

If you want to talk about life at an HFT, my email is in profile. I came into HFT as an experienced hire from the startup world and currently do builds development.


Hey thanks for sharing I’ll send you an email and i would love to know more about HFTs since I’m currently an undergrad working for a financial company as intern at the moment and graduating soon On the side I’m exploring different career options and one of my top choices is to learn more about HFTs


HFT and Trading firms are largely like any other firms. They have job postings and the skillset they expect is largely what you’d expect.

https://www.virtu.com/careers/ has a devops role listed within the first 10 results on their careers page. It looks like basically any other modern ops job sheet.

Here is one for DRW https://drw.com/careers/job/1280794 again, not much different than any other firm.

Most software written at trading firms is the same as software written anywhere else. The only real differences are on the actual tick to trade path, where you will see the need for FPGA/ASIC programming, very low level network programming and C/C++ systems programming or on the Quant side which can vary widely but typically involves showing PHD level research skills in some hard math/science.


Suppose you have top notch data science and machine learning chops and also suppose quant shops are willing to hire you regardless of your financial domain expertise.

In such a scenario, is the 99th percentile of quant compensation significantly higher than the 99th percentile of tech company compensation (FANG etc)?

I've always considered this a fork in the road for many---finance versus say advertising--and I'm curious how others with more experience would describe the pros and cons of each.


I've done FAANG, and I have friends who've done the HFT shops.

HFT shops do indeed pay more. Perhaps at the top percentiles they're similar but at the median, HFT probably pays double, and it's cash, not RSUs that vest over many years. The downside: culture of always in the office (not sure how covid will affect this), software that is insanely specialized and uninspiring, and generally awful work/life balance. I'm sure some shops are different, but they expect you to put in a lot of time to earn that salary. Compared with FAANG where the burn-out is at little more prolonged (and of course the morally dubious business that is ad-tech).

I've learned to stay away from both and have never looked back. But I think working a FAANG or HFT is a good thing for any dev to at least look into while they're young and ambitious and can "afford" a bit of burnout to see what life can really be like (or not).


Counterpoint: I've worked in two HFTs, and both have very decent hours and work/life balance.


Yea, I've spent time in a prop shop and the hours were incredibly decent. A lot of people checking in an hour before the open and checking out a bit after the close. In a lot of cases coming in for the open, seeing what's what, then hitting the golf course.

Prop shops seem to have a pretty strong understanding of ROI in all things, including time spent, so if your killer strategy just doesn't have a ton to act on today go take an hour lunch and head home or wherever. The place I was at was known as an "arcade" or a bunch of unrelated strategies from various teams that happened to work out, so maybe it's different other places, but I can say for certain that I've done 90 minute lunches off site with senior traders in the middle of the trading day just because the volume in their primary product(s) was mostly just interns throwing 1 lots at one another.


Define "decent". Is it 80/60/50 hours per week? Because it's clearly not regular 40 hour weeks.

Because I can work in a very chill environment and earn 200k-250k + stock. I can also work 60 hour weeks for 300k + bonus.

I used to work in London on roughly $180k putting in about 20 hours per week.


Where were you working? Or maybe you can say a list of similar places if you don’t want to be specific


Were you paid those insane salaries?


HFTs are pretty much, here's a lot of money work all the time and forgo your life outside of office.


> (not sure how covid will affect this)

This is the big question for all of Wall Street right now. So far it’s not been too bad but there are gaps here and there.


I went from ads to finance. Pay is much better (at least in Europe, and I don't have good information about top tech companies like Facebook Palantir Google that also pay stock). Also, even though both are morally dubious, ads are non-consensual so IMO way worse. At least in finance, every participant (even the hard-working taxpayer contributing to his stock-index retirement fund) is there for the same reason - to make money - so while not contributing anything to the world (directly, you can still donate your earnings), at least you're not taking anything away, just playing (and hopefully winning) a game.


I work in ads now too, I've thought about switching into finance for similar reasons. I just get along with people who are at work for the money hahaha, we all seem to get along and not get too stressed out. No one is bent out of shape because their passion idea is shot down, everything is nice and measured, bonuses are given out to people who come up with ways to make more revenue so (at least in my experience) there's not too many politics.

Is there anything in particular you did to switch? Any specific tech skills you picked up? Or did you just apply and do normal interviews?

I've mostly stayed in ads because I'm really good at JavaScript, and a huge chunk of ad optimization/tracking is on the frontend.


No, I switched from backend programming in ads to backend programming in finance. I did a bit of JS, knew OCaml before, learned Python on the (ads) job, studied math and made programming languages as a hobby so I had a fairly good grasp of a wide range of fundamentals, which basically means I can do pretty much anything you throw at me, in interviews or at the job (anything ordinary - I don’t have any specialised skills like Google-scale big data or Visa-scale concurrency). I don’t think it would be hard to pick that if you’re really good at JavaScript, I guess curiosity was my strongest feature.

The best thing for getting hired, unfortunately, was my degree (math+finance @ Oxford). Recruiters chased me! I don’t care about the degree, but they do - not necessarily people who interview you, but HR/recruitment department, they use your pedigree to float your CV to the top of the pile

Also interviewing is huge hit and miss. I got rejected by like 5 companies in a row (often initial rounds), then got 2 offers at once (and one of the companies said I was one of the strongest candidates ever).


Thanks for the info! A common pattern I’ve seen for anyone who’s successful is failed interviews, it definitely is a crap shoot.


Ads are completely consensual.

You explicitly go to Google, Facebook, some website. No one is pushing ads to you PC without you making a request to.

I mostly dislike ads and adtech, because their value is overstated. However... You aren't entitled to stuff that people publish. Thus placing an ad blocker when visiting my site, you're being an asshole.

Would you pay Google $500 per year for all of their services? Then $200 to Facebook. Then your local news portal another couple of hundred.


Absolutely much higher in HFT. I worked in HFT, my 3rd year bonus (at age 25) was 1.9m as maybe a p75 member of a high performing team. Even the median, across the front office at that firm, for 2-3 years out was 600k-1m.


I'm a FANG software engineer from a top 3 CS school with experience in low-level networking. I am currently starting the process of interviewing with HFT firms.

Would you be willing to share the name of your firm, and more generally your experiences, here or in a unicast channel?


Yes, 99th percentile quant compensation is significantly higher. But it's a bad comparison. Google alone hire mores more people into these positions than all quant firms combined. 99.9% at FANG might be more comparable.


If you want to pursue money, then yes both are your best options. Not really a significant difference, you’re just a cog in some billionaires machine extracting your soul for $$$.

Avoid both and Choose to make a difference in people’s lives.


It is very difficult to make a positive difference in anyone’s life with his given skills.

The best he can do is not actively make anyone else’s life worse, so go with finance, and adopt a shelter animal.


>It is very difficult to make a positive difference in anyone’s life with his given skills.

Based on what? Anecdotal, but my partner is a data scientist and statistician full-time . She regularly volunteers or contracts her skillset to a range of projects, including medical research and criminal justice. It's very impactful work - some of the research will massively improve people's lives. And there is definitely enough work to mostly focus on those projects if someone wants to.


Can I ask where she finds these volunteer projects? I have that skill set and that day job and haven't found any volunteer places that make use of specifically the data science/ML/stats. I've looked unsuccessfully a few times.


Mostly from past colleagues/professors she did research with. Universities are a good place to look as they often have other groups reaching out to them for expertise.


There are plenty of opportunities for people with their skill set in the realm of biomedical research.


From the anecdotal experience of developing such software as a side-project for myself, the hardest parts technically were dealing with concurrency and race conditions caused by it. Other skills for prosperity is understanding statistical significance and randomness. Also, writing reliable software and designing both the best-case and worst-case scenarios is required when interfacing with remote systems: brokers return error or exception cases saying you were too slow all the time, which means your software is dependant on that information and must run in probabilistic state conditions while waiting for the answers to remain performant.


When dealing with race-conditions, is the skill required just the ability to identify candidates where the race-condition will occur and then apply the relevant locking features around the mutations? What are the implications of identifying a scenario where there is no race condition? Does it just result in a performance hit?


In my case, I still have unexplainable race conditions in my software, so take it with a grain of salt. But yes, identification and understanding both the locking and synchronization are hard. I don't think there are many other definitive solutions than modeling your software in a predicate language like TLA+ or Alloy, especially once your software grows hence its possible states diverge.

> What are the implications of identifying a scenario where there is no race condition?

No race condition? Great. It's totally possible there are some not-so-concurrent parts of your software that can run in what I deem a performant manner.

> Does it just result in a performance hit?

It's much more than that. A bug I have is very serious and it goes something like this: you set a limit order to buy X shares. The limit order gets a partial fulfillment, and you immediately set stop losses and take profits for X shares. However, the limit order gets complete fulfillment before the two other requests are done. If you now try to update the previous orders, for example, it might be that the update call gets registered at the broker first, but the creation gets there last, which means you have bought X+Y shares, but you have stop losses and take profits for only the X. You might now completely lose Y unless you monitor the software all the time. Things like these might happen everywhere, and the real trouble starts when these instances with plausible race conditions of their own start communicating with other parts which might also have race conditions.

And the requirement for the concurrency is not only a performance: you might want to collect data in thread N, while you have different strategies of amount M, which all by default subscribe to N, but only selectively when they are doing their strategies. In such a sense, I don't think that doing even a semi-serious trading software without concurrency is possible.


What language are you writing it in? There are some common tools that can detect race conditions dynamically (i.e. at runtime). Especially easy in a language with a GC where you can lean on the reference counter.

Go for example has a race condition detector built in to the tool chain (go run/test/build --race). They won’t tell you how to fix it, but they’ll tell you which lines are in the critical region that the programmer missed.


I am indeed writing it in Go, but I have somehow missed the race condition detector... So thanks for reminding me of it! Once I get back to programming it more I'll look up how to properly make use of all the tooling -- the last time I ran money on it I simply made a service which phoned me every time a trade was happening, so I could observe _any_ bug in real-time.


Ah great! I hope the pointer saves you $5 :)

Go’s support for race detectors is super ergonomic. You need a unit test for the parent function that’s spawning the routines. Run that unit test with the race flag, and it’ll catch it for you. If you’re curious about how it works, this post is good: https://blog.golang.org/race-detector


From 4 years in a large public quant house (not HFT): everything upstream of trade execution is Python with very heavy use of numpy, scipy and pandas. This has pros and cons, on balance I'd prefer a better type system, but that everyone in the org can share code has tremendous value at scale.

Briefly, the faster your execution the faster everything else needs to be. Java should be fast enough for almost anything short of HFT + colocation which is super expensive infra wise.

The skills are not different from other backend roles, but you will need to exercise more math with emphasis time series and stats.


Agreed with the rest, you should just look at job descriptions. Different firms use different technologies, but a devops person will probably be building tooling for monitoring live trading, or GUIs for themselves and traders. These tend to not be as performance-sensitive.

If you want to work on the trading systems, you should be good OS-level and network-level things. And you should probably know C/C++. I think some firms might still use Java.

Good firms have probably been around for a couple of years, so it's unlikely that they'll use the cool new languages of the day.


Cool new languages don’t provide any competitive advantage. You will not be doing HFT with Rust or Haskell or whatever.


That's not true. Source: I work at an HFT. Rust is very interesting for Greenfield work. The major down side is millions of lines of legacy C++, the more useful already using C++17 or C++2a, which typically provides a lot of what you'd get out of Rust's stdlib and ecosystem but already packaged and integrated. When you choose Rust at an HFT you have to worry about integration with codegen tools (generating efficient Java/C++/$HDL and reasonable throughput Python for protocol definitions is table stakes at any HFT I've heard of) and build pipelines (which might already have distributed building/caching infrastructures and fancy packaging/deployment.

Rust has some benefits (and still integrates reasonably well at the ABI level), but modern C++ compilers are no slouches. Rust provides a friendly dev experience, which is a valuable thing, but a lot of the ecosystem advantages are old hat at companies with mature codebases.


I think Jane Street is using OCaml I’m not sure why did they decided to go with functional programming even though most popular firms are still using C/C++ Do you think using functional programming might have advantage over these programming languages

Just curious to find out


Jane Street has some blog posts talking about why they chose OCaml.

I'm very torn on this. I've used Rust to quickly prototype things that I think could be used I prod. It's fine. In some places it is better than what we had for C++, in most places it is very similar for experienced devs. I don't think Rust let me complete my code any quicker than if I had done it with standard C++ tooling.

The main issue I see with something other than C++ is compiler maintenance. gcc and clang generate very good code. There exists a good body of well optimized C++ for various use cases (various kinds of latency and throughput). It takes a lot of commitment to maintain and extend a compiler to keep it on par with gcc/clang and also still maintain a good stdlib for trading.

I think a huge benefit of owning your compiler in a functional language would be easier/better codegen, particularly the ability to sidestep some of the shittier hardware languages with a better DSL (since you already have some compiler and tooling expertise in-house). This matters at lot for HFT since at the most critical places, you want to use FPGAs or better.


> you want to use FPGAs or better.

What are those used for? I only did slower signal trading bots and this sounds interesting as I make hardware as well.


Jane street isn't in the HFT business, it's more like day trading.


I see. They are the only firm is pushing so hard on the use of functional programming. Everytime you do a google search related to FP you'll see them on the top


Nobody has mentioned the K language and Q language; and the Kdb+ product from KX Systems. I know many institutions and HFT's use the K Database. It's fast because it crunches data in the CPU cache which is insanely fast.

Reference: https://code.kx.com/


kdb+ would be used for analysis or slower signal generation. it's not low latency for trading applications.


Trading firms have many positions available other than the HFT algorithms. There are teams that support those to enable desks (read: startups) to get off the ground quickly (like YC!), analysis teams for doing research for future strategies, accounting, shared service teams, as well as governance teams like risk, compliance, treasury. Depending on the team you're on, your job may be drastically different. I find myself in a role focusing on devops, developer tooling, and team automation, but others on my team focus on data ingestion, financial models on top of the data, UI development for end users. If you're a skilled programmer, there will be a role for you in a sufficiently large firm.


These days I would say you should get into OS development and learn about unikernels. Linux should be a solved problem right now and the future would be in OSes that don't have interrupts enabled and you have full control over the CPU cores.


`Linux should be a solved problem right now`

This is a joke right? Unix is not even a solved problem and it's been around 50+ years.


I see I’m currently programming mostly in python at my day job do you any good resources i could consume to gain more knowledge on OSes


This is not a joke: Read the Intel manual, maybe check out some of the learning repos on github that solves all the glue-stuff that isn't important. I have one such repo here:

https://github.com/fwsGonzo/barebones


Thanks for sharing that Out of curiosity do you work for trading firms


I started learning kernel internals from these books, I highly recommend all of them.

Operating Systems: Three Easy Pieces (free online) - Arpaci-Dusseau

Linux Device Drivers, 3rd ed (o'Reilly) - Jonathan Corbet

The Linux Programming Interface - Michael Kerrisk

The Design and Implementation of the FreeBSD Operating System (2nd ed) - McKusick, McKusick, Watson

Solaris Internals - McDougall, Richard, Mauro


Andrew Tanenbaums book is good for the theory. Real world is a bit blurred so it's also worth reading about some modern development like eBPF (very handy for tracing too)


For ultra low-latency trading, I'd look into FPGAs before going that route.


Worth to mention is the https://lmax-exchange.github.io/disruptor/

A High Performance Inter-Thread Messaging Library used for HFT.


I used to work for a firm that did FIX parsers for hft. FIX is the standard protocol for financial data. Company’s claim to fame was the fastest parser on standard hardware as opposed to an FPGA and handling the many many dialects of FIX.

A lot of work and skill went to memory layout (minimize cache missed), lock free data structures and spending time in perf looking for ways to shave microseconds off a function.

God knows how I got the job, I was super junior , but that’s the kind of work we did and presumably what other companies would want you competent with


HFT firms would likely use the exchange binary protocols where available over FIX. Ie: OUCH/ITCH, Pillar etc.

With that said, FIX is still relevant on many exchanges and in wide use by the broker/dealers etc...


C/C++ is most common. Good luck getting their attention if you didn’t go to MIT, CMU, Stanford, etc.


I went to a couple onsite recruiting “mixers” for hedge funds and HFTs in NYC. I was an intern for a financial services company, and didn’t go to one of those schools, but I guess I had a strong set of work experiences.

Every other student there had (to me) a shockingly naïve understanding of software engineering, and many of them were done with school at this point, and had interned at big companies... 90%+ went to a school like the one you mentioned, and started looking through me when I shared the school I went to.

Maybe HFTs and hedge funds feel they need to hire from these schools, because they assume that the pool of candidates outside of these schools is even worse?

The actual engineers I spoke to were either very bright but kind of self conscious that they were “marrying down” for money, or very excitable and coming from non-eng backgrounds (physics, etc).

Can someone correct me if my impressions were wrong? I don’t want to name names, but these were two pretty successful companies, one was a Hedge Fund and the other was an HFT firm.


I'm not sure why HFTs can often feel the need to hire from these schools. I think it's a little different in NYC, but in Chicago, it tends to be the devs that couldn't land jobs in silicon valley that end up working as devs in trading.

Generally speaking (so obviously not for everyone - but for most) working as a developer in trading was not anyone's first choice. Go figure what this means for the kids from brand names schools who end up working there. I say this is as someone who went to work at an HFT firm after MIT.


Did you like it ?


I didn't graduate college. I work at an HFT. Nobody cares where you went to school or what your major might have been. I work with some people that dropped out of high school. The only things that matter are whether they believe you can currently help the company and if you can reach agreement to some terms under which you will do so.

It is true that HFTs are more easily accessible to top schools but that's largely due to employee alumni networks and HFTs sending recruiters to school mixers and competitions. We sponsor competitions/hackathons at places like CMU and MIT (and send recruiters/reps to network/scout). If you go to $StateSchool, just apply through the usual channels (check websites for internships/graduate roles). If you can pass the automated tests, you'll get a phone/video chat screening.


Citadel notably interviews people from all over. Chicago trading firms are also more egalitarian, like Belvedere or Wolverine or DRW or Akuna.

Source - got an offer from Citadel previously without a top school or C/C++ expertise.


Maybe they didn't attract top talent and had to branch to other schools.


Wait how come if you don’t mind sharing your experience


My interview loop was mostly UI related. All of these trading firms and hedge funds require UI expertise at some form, either for WPF/QT apps or web UXs for reactive charts, tables, etc.


Wow that nices so It's easy land a postion with these expertise too but I guess it hard to get your recognized in the first place


The loops were imho, pretty tough but focused on library specific knowledge while implementing algorithms in the form of live coding.


Even with the experience you have Won’t get there attention That’s crazy


This + willingness to work absurd hours.


Agreed i heard from few friends they worked crazy hours plus it was a high stress job


Some time before HFT was as popular, I worked at a Wall St. trading firm (though in the back office clearance and settlement area). The devs who supported the traders had some wild "high stress" stories; it was pretty routine and commonplace for them to be screamed at nonstop by multiple traders during the entire trading day, then everyone would go out for drinks/dinner afterwards. Daily.

There was a paramedic on the trading floor. At least once a trader had a heart attack and the other traders were just casually stepping over him post-collapse, because... paramedic on the trading floor.

It was my first job post-college; in the first or second week I was there, a company wide email went out that stated the policy for in-office birthday parties was being changed in that strippers would no longer be reimbursed. Out of office it was still ok.

Anyone interested in those times should read "Liar's Poker"; it's a good overview, at least from what I remember, since where I worked was that same firm.


Those days are long gone. Technologists are highly respected now. Also the backgrounds of traders have changed slowly. More cerebral, less jocky. So the cultural and pay gap has reduced


I used to work in HFT, but haven’t for five years. For core developers, there’s heavy use of C/C++ with a deep understanding of low level programming. On the trade strategy development side, it’s usually some combination of a columnar database, Python/R along with rewriting performance sensitive areas in a lower level language. I won’t be surprised if there was an uptick in the usage of GO the last few years as well.


I worked at one of the top tier prop shops in Chicago. This is my experience there:

Fresh grad devs are generally evaluated on their potential and not what languages and specific skills they know. The people they end up hiring for fresh grad dev roles tended to come from the same six schools. Said schools are generally not top tier (for developers) and are local to Chicago.


Compared to New York, I think you'll find out more trading jobs in Chicago.


Not exactly known for HFT, but Man AHL use their own library arctic with Python/Pandas and MongoDB. See https://www.youtube.com/watch?v=FVyIxdxsyok - The presentation touches on performance considerations.


Well you can take a look at their job openings pages:

https://www.hudsonrivertrading.com/careers/

Looks like c++, python, and linux sysadmin stuff.


Do you work at HRT. just curious


Besides searching on Glassdoor or Indeed, how can someone find a list of companies that are doing this type of work? Are they limited to the east coast?

I'm not very familiar with the HFT industry, but the skills that they require (C++, computer architecture, OS, networking, & performance) are ones that I'm interested in and would love to deepen my experience with. Are there companies on the west coast (more specifically southern California) where one could develop this experience?


They'll probably be located close to an exchange so that they can colo the servers, but not all exchanges are on the east coast.


They're actually mostly in Chicago! You can google proprietary trading.


They usually ask for C/C++, but what they really mean is C++.


Not just "C++" but usually they want C++ experience that is very relevant to precisely what the hiring manager wants.

Maybe I'm sour-grapes, but I got pretty far through a HFT loop only to get turned away because I didn't have any experience with the particular boost library they were using. (A library that will be mostly obsolete by C++20) They said that this was common in the industry.


>because I didn't have any experience with the particular boost library they were using. (A library that will be mostly obsolete by C++20)

Brave of you to assume they'd be able to use C++20. Unfortunately HFTs are just as susceptible to "stuck on an ancient version of GCC" as any other C++ shop, so maybe you dodged a bullet there.


HFT firms use all sorts of technologies. But to be clear, you want to be closest to trading - that's where the big money is; so either a) idea generation (quant work) or b) execution (dev work) For the execution piece, C++ would be the most viable option.

On the quant/research piece, python/R/kdb are common tools used, but the real skills are the statistics/math and market knowledge.


DevOps - standard tools, depends on the firm

Trading Systems - C++, networking, memory management.

* I work at a HFT firm building algos for clients


Nice building algo requires heavy math knowledge correct me if I’m wrong Most firms look for masters or Phds for that type of role


"Building algos for clients" may refer to implementing the algos designed by traders/quants.


Here's a nice (old) blog of someone in the industry: https://mechanical-sympathy.blogspot.com/


>How can a person excel at the technologies required by these firms from my fintech experience with the financial departments there ... excel in Excel. it's a whole programming-parallel-world


You’d see that mainly in over the counter and manual trading desks. So in the front office of a bank or corporation hedging commodities or interest rates for examples.

I think OP is asking about programming skills implying automated, systematic trading and algorithmic execution on exchange traded products.


Couldn't agree more, I have met people doing entire risk modelling in excel. It's a pretty powerful tool but nowadays everyone in financial world in emphasizing on the importance Python and Pandas. Even Non Technical people in financial industries are encouraged to learn Python for instance departments like Audit and etc


For HFT? Absolutely not. For trading? The original poster needs to clarify what they mean by "trading" as this is probably still the case for most tech-driven prop trading firms.


You’d be surprised at how many traders and QRs in HFT (or at least in OMM) often reach for Excel. Granted this is way more common among older people in the industry. And as a technologist OP wouldn’t have to worry about writing or maintaining Excel scripts :p


Excel is a very effective tool for many things but suggesting that it would be useful to spend time learning Excel to prepare for HFT is really bad advice.


Yup mostly tech driven trading shops use technology that’s why they have competitive edge compared to banks


for currencies / commodities

zmq/java - lmax

then there is forex c++ mt4 metaquotes

more hardcore like cheetah-solutions fpga / hdl

don't know about asic

some insides but now inactive https://mdavey.wordpress.com/

there are also options / stocks and cryptocurrencies


C++ was big. Comfortable navigating a very large and complex codebase, being able to understand complex rules-based systems, and of course knowledge of equities and financial markets.

But they'll teach you everything you need to know as long as you can pass the interview.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: