top | item 2828538

I am an HFT Programmer

326 points| marksu | 14 years ago |developers.slashdot.org | reply

229 comments

order
[+] zedshaw|14 years ago|reply
This is a huge load of bullshit. 99% of the "banking programmers" are some of the worst coders in the world. A vast majority of them just babysit a Bloomberg terminal, barely understanding the supposed math they use all day. Others just babysit an Excel spreadsheet, or worse, develop whole applications in Excel then try to get a real programmer to "build it". The lower echelons are even worse and just make shitty C# and Java web apps that are huge wastes of money.

The supposed "C++ optimizer" guys are some of the worst. They're the guys who go off and make algorithms they think are blazing fast, and sure for one tiny little use maybe, but then when you actually see the code it's a huge convolute mess for nothing. It's usually riddled with bugs, not in source control (Clearcase), only if it is only because the Compliance Dept. told them to, and they refuse to share because they're too damn competitive.

I've even seen projects by some of the top guys that were built by hand. No make file because the dude didn't trust make.

Don't even get me started about these jackasses that think their huge monolithic shitpiles of Java code are somehow superior, yet the only reason their code can actually run is because some bank sunk millions (and maybe billions) into infrastructure just to run that crap even moderately fast. I had one project where the damn process used so much ram per request they had to go buy an Azul box just to make it run even at 2 req/sec. That was their "cream of the crop" coders.

Finally, they constantly do this thing where they say, "Oh man my code is so awesome it's written in C++ and is so fast. No you can't see it. Oh but I make $500k a year!" They equate how awesome their code is by how much they make, but rarely have any idea of what other people's code is like.

Honey, if all you can make from your corrupt financial masters is $500k while they make billions and trillions then you're not a very good coder. And if I can't see your damn code, then you're a damn liar.

Take it from a guy who thought he'd run into some quality in the finance world. There is none, they just have so much money they can't help but make tons of it.

[+] rgarcia|14 years ago|reply
Banking != HFT.

I've worked at both a bank and an HFT firm, so I think I have some perspective you might find interesting.

To make a broad generalization from my experience, "Traders" at a bank are mostly non-technical Excel junkies. It seems like in your experience they also went by the title "Programmer", which I agree is a gross misnomer. Besides that, I think the most important thing to realize is that at banks, non-technical people run the show. The technical people are at the disposal of their non-technical overlords, and thus they spend their every waking hour implementing terrible specs like "do {some incredibly specific task}, and make it fast." Even worse, they are far down on the ladder of responsibility; a "banking programmer" has no feel for the big picture. This all culminates in what you describe: highly specialized/one-off/non-generic piece-of-shit code. But whatever, their MBA overlords don't care about the means, just the ends.

To make another broad generalization, "Traders" at an HFT firm are predominantly go-getter CS majors from top schools. Thus, if they have an idea, they implement it themselves. Any delegation of duty is done with strict specs, and bugs or terrible design in the finished product will get noticed. Incentives abound for writing good code: scalability/genericness is rewarded (have something that averages $1k trading symbol XYZ every day? You're a millionaire if it generalizes to many symbols), speed is rewarded (just the nature of the game), and bugs should lose you money (otherwise they are just unknowingly optimized around).

tldr: banking is like you describe, but there is plenty of quality in the HFT world.

[+] jpz|14 years ago|reply
There is a lot of crappy developers that's true.

If you look at the serious pieces of infra inside the front offices for pricing and risk however, there are some smart people that have done some good software.

Quite often however those projects are degraded as stewardship of these projects is inconsistent, and long tenure is not always there, so you don't get continuity in terms of engineering talent.

Frequently this is due to the fact that IT is treated as a cost rather than an enabler of profit, and salary increases do not keep pace with the market worth of fulltime employees - leading to job hopping.

For the non-managerial part of the financial developer's career, it is often a better trade to be an independent contractor on a good daily rate with tax breaks, than take the chance upon fluctuating market conditions and bonuses.

As software developer bonuses are not tied to material outcomes like the front office but are generally more qualitatively judged, this leads to insecurity.

The developers that hang around for many years and end up being the stewards of these good systems that slowly rot, are quite often the ones that are incurious about contracting or moving, or have no better options.

We are routinely picking the top few percentile from the best colleges - the banks don't lack talent - but what they lack is management with good engineering discipline, and good projects sometimes turn bad.

For the professional developer who is actually skilled, this provides unbounded opportunities - it is often easier to make a really big impact with relatively little effort by pruning an overrun garden than rebuilding a very large amount of function points from scratch.

Finally, it is incorrect to say that version control systems are not used. Simply not the case.

[+] jrockway|14 years ago|reply
So true. Finance attracts the most incompetent egomaniacs possible. I love getting lectures about how to design software from someone who has written:

    if x == 0:
        return "Monday";
    elif x == 1:
        return "Tuesday";
    ...
This should be a criminal offense.
[+] sausagefeet|14 years ago|reply
> I had one project where the damn process used so much ram per request they had to go buy an Azul box just to make it run even at 2 req/sec

I either worked on the same project as you or very closely related one at BSC. The upside of this was I got to play with Azul hardware for a year.

[+] ig1|14 years ago|reply
It sounds like you had a bad experience at a single team in a single bank and are trying to extrapolate those experience to a sector that employs hundreds of thousands of developers.

Yes, there are plenty of shitty programmers at investment bank, there are also lots of top-tier ones.

And yes how much money your code makes is more important than how well factored it is. It doesn't matter if your code is the most beautiful code in the world if it doesn't work, shitty code that gets the job done is better. Regardless of whether you're working in finance or on a web app.

[+] veyron|14 years ago|reply
Fast C++ is an oxymoron. Real men use C and assembly. And yes, I bootstrapped my own HFT
[+] illumen|14 years ago|reply
Maybe it's different in London compared to NY. There's plenty of decent makers in Finance in London. There's people who use all the best practice techniques in software development. People who wrote code you use every day.
[+] gaius|14 years ago|reply
some bank sunk millions (and maybe billions) into infrastructure just to run that crap even moderately fast

Why, were they running Ruby on Rails? </snark>

[+] apaprocki|14 years ago|reply
So one takeaway from this gem of a post is that if you don't write open-source code you're a shitty programmer?
[+] jasonkester|14 years ago|reply
Quick quiz:

Given the ability to charge $100/hr for your time (which is what this guy's rate works out to), would you prefer to make:

  a.) $500,000 by working 100hr weeks

  b.) $250k by working 50hr weeks

Me? I tend to lean toward secret option c: make $100k by working 25 40hr weeks, then spend the rest of the year squandering it on a beach with tall cold beers, good surfing/climbing and good wifi.

Gotta keep them priorities straight.

[+] hugh3|14 years ago|reply
How to get a really good salary:

1. Be really smart

2. Be willing to do something that's deadly boring to most smart people

Me? I'm a scientist. I'm not gonna write your goddamn binary tree pricing algorithm or remove your varicose veins or argue about some dull point of legal text in court. But I'm sure I'd be a lot richer if I did.

(In other news, man, those grapes sure look sour, I'm glad I can't reach 'em.)

[+] blix|14 years ago|reply
Replace one of your examples of 'boring work' with "writing grant proposals" or "performing the same experiment over and over again" and you have the perspective of the non-scientists.

I think you're confusing "deadly boring to most smart people" with "deadly boring to me".

[+] Maro|14 years ago|reply
> I'm not gonna write your goddamn binary tree pricing algorithm

I'm not in the banking industry, but writing a very efficient binary tree pricing algorithm sounds like super-interesting work.

[+] Astrohacker|14 years ago|reply
3. Be willing to work for a corrupt industry.
[+] sixtofour|14 years ago|reply
"2. Be willing to do something that's deadly boring to most smart people", ...

... and super lucrative to their employers.

Otherwise shelf stocking might be a good route to riches.

[+] Goladus|14 years ago|reply
> 2. Be willing to do something that's deadly boring to most smart people

... And work really hard at it.

[+] bfung|14 years ago|reply
Programming skill is only a small part of why Wall Street Programmers earn top salary. The major factor is that their industry is very close to the money, and their jobs are close to the money. As a result, it's easy to measure someone's worth in terms of currency. In trading, if your group is making money, and you can convince everyone else (or just the boss) that you are worth x% of the profits, then there you go. As your industry and job function moves further and further away from the money, it gets harder to measure your performance in terms of raw "dollars", but the game to convince everyone else your currency worth still applies.
[+] orijing|14 years ago|reply
It's true, and it's somewhat discouraging. When I was in my last year in college, I applied to various types of companies, in different stages of life, plus a quant fund.

In the end, while the salary/potential bonus for the fund was very enticing (despite not having graduated yet), I stuck with the middle-of-the-road tech company. (I also looked at Google and Dropbox but decided to go to FB). Google was desperate for people, and threw money at everyone who had a Facebook offer. I like that they offered $$$, but I knew that most people there aren't compensated as well, which suggested that future compensation might not be as enticing. Dropbox was actually really cool (the people I met there), and I was thinking about it a lot, but in the end, I just wanted to stay where I've been, and work in Palo Alto. (I know, it's weird: All my friends want to work in SF).

But it sucks, because while everyone thinks I took FB for the money ("It's pre IPO!"), that's the farthest from the truth. In fact, they're so surprised that I decided not to work in New York. "Are you stupid? That's more money than any of your peers make out of college!" Not to mention, the people there I met through two straight days of technical questions (compared to Google's easy-peasy 4, 45 minute sessions) were some of the smartest I've met. And I like working with smart people.

I was afraid that if I'd gone on that route, it would affect me as a person. Don't get me wrong: I've studied financial institutions and believe that they produce value, but in the end, it's more awesome to tell friends and family that I ship products rather than arb derivative contracts. I figured, the money will come.

What the hell are you gonna do with 500k a year, anyway?

[+] jamesteow|14 years ago|reply
"What the hell are you gonna do with 500k a year, anyway?"

Buy a house? A car? Invest in your own future business?

I agree with the sentiment of your post. I prefer earning less but working with intelligent, sensible people while also believing in my work because my mental health supersedes material needs.

[+] illumin8|14 years ago|reply
Dude, I'm glad you took the FB offer. Don't discount the value of money. Stay there until the IPO, get your much deserved money, and then have the freedom to work wherever you want to work for the rest of your life.

You must be very intelligent to get so many offers from some of the best companies, but if you don't know what to do with $500K yet, please don't spend it all. Save it and retire. I'm not saying retire from coding or doing what you love, but having F-U money means you can continue to do what you love no matter what happens. This is worth more than having a fun job.

[+] TheEzEzz|14 years ago|reply
Squirrel it away for 5 years then retire on 5% returns on a million bucks ($50,000) a year?
[+] cpeterso|14 years ago|reply
> What the hell are you gonna do with 500k a year, anyway?

Donate it to a charitable cause?

[+] weicool|14 years ago|reply
With 500k a year, you could buy a lot of Priuses.
[+] wallflower|14 years ago|reply
I have a friend who works in trading. He's very sharp and very smart and has friends who work for D.E. Shaw. I used to ask why he didn't go work for D.E. Shaw and he said that he would never survive the interview gauntlet there. And most importantly, he would not be smart enough. Now, I know how good at math my friend is (he used to win Games t-shirts - from the magazine and studies math at graduate level). And now when I talk to him about HFT, he's like even if I could bluff my way into an HFT job they'd fire me after three months once they found out.

My math abilities will never ever approach my friend's. If he is not confident about his ability, it speaks volumes to me about the ability and sheer analytical horsepower of some of those working in HFT.

Yes, they may be financial wizards who cause far reaching effects but they are doing what challenges them.

[+] cletus|14 years ago|reply
I worked for a time in finance and investment banking. Problem-wise it can be pretty interesting but it's important to distinguish between two classes of developers.

1. Traders; and

2. Non-traders.

Engineers who are traders are typically called "quants" (quantitative traders) as they write software that employs trading strategies to make money, as one or more of spread trading (trading between the bid-ask spread), prop trading (taking a position in the market) and arbitrage (of which HFT is merely the latest incarnation; some may dispute this definition).

Traders of all kinds have their bonus defined as a percentage of the profit they make. That percentage can be as high at 10%. In 2007 there were some Wall Street traders who walked home with $50m+ for the year. I remember seeing an AmA on reddit from a quant who took home $20m.

While maths is obviously important, it is not (IMHO) as important as psychology. It takes a special kind of individual who can hold a position worth billions of dollars and make rational decisions. Human psychology is typically completely wrong for trading: people hold on to losers too long ("I'll sell when I get my money back") and sell winners too soon.

I know enough about myself to know I could never do that. Some can and they get rewarded for it.

The second class of engineer, the non-trader, earns a respectable salary with benefits as compared to other software engineers. They are however the second worst paid employees at an investment bank (the worst are support people). All those business types who join IB, assuming they survive, will typically have a salary and career trajectory that will dwarf that of any engineer within a few years.

The only way for an engineer to make real money is to be a quant, found a startup or join an early stage startup. In the last few years the competition for engineers has heated up to the point where engineers are (or can be) more adequately compensated for their contribution.

The other thing that happened is the cost of seeding a startup went from $5m to $50,000 in the last decade, almost all of which is engineer time. This makes engineers just that much more valuable.

As far as not having some kind of positive impact, working in investment banking can be exactly that. People like to demonize the finance industry with some justification but it does a lot of good too.

You want to buy a house? Well the only reason you can get a loan is that investor (and/or depositor) funds are matched to you. In the last few decades securitization (MBS ie mortgage-backed securities) have revolutionized this market. On the other hand, the subprime collapse should, in my mind, lead to criminal prosecutions across the entire finance and insurance sectors.

Spread trading (or "market making") is also misunderstood. People see market makers as scalpers when in fact they're providing a valuable service: they're creating liquidity. The reason you can buy or sell shares at any time (rather than waiting for a seller or buyer to show up) is because of market makers.

IPOs are a complicated business. They're possible because of the finance industry as well. Although, curiosity, VC as it exists in the Internet startup world is almost completely unrelated to the finance sector. It's basically a byproduct of university endowments.

Still, I think I'm done with that industry (I now work for Google) typically because IB types aren't, in my experience, very nice people to work with plus you're near the bottom of the totem pole.

[+] MarkPNeyer|14 years ago|reply
they get paid well, but they're also doing work of dubious value. i left trading because i wanted to do something that i knew would make a positive impact on the world.
[+] flatline|14 years ago|reply
Back in the 90s I worked for two different commodity traders as it seemed like a good way to make a lot of money fast, which was very appealing to my 20-some-year-old self. I rapidly grew disenchanted by the entire thing. While I respected the men I worked for, everyone who's successful ends up driven by the two ghosts of the trade: greed and fear. That's not how I wanted my life to be.
[+] bignoggins|14 years ago|reply
This is slightly OT, but can anyone recommend a good book for understanding the modern finance industry (IB, quant, trading) and its impact on the economy? Finance in general is just a giant black box to me.
[+] bwanaaaa|14 years ago|reply
Here is where the coders of Wall street can help us understand--making their efforts more transparent. They dont have to reveal details of their code--but a few blogs about what they are doing, what they are achieving, and they aim for would be nice
[+] thisuser|14 years ago|reply
Capital Vol. 1 by Marx is classic and still more applicable than anyone wants to admit. Ease into the terminology over the first few chapters, things are defined carefully.
[+] gte910h|14 years ago|reply
That hourly rate is pretty crappy for that level and amount of work. (<$100)
[+] Bungholio|14 years ago|reply
Compared to what the top traders make, 0.5Mil / year is pretty embarrassing.
[+] libria|14 years ago|reply
From "Anonymous Cowards" calculations it was more like $74/hr if you consider overtime/oncall:

$500,000 divide by 52 weeks = $9,615 / week

$9,615 / (40 hours + (60 hours overtime x 1.5)) = $73.96 hourly wage

[+] Maro|14 years ago|reply
Yes, consultants make more, but I'm under the impression that most consultants can't fill 8 (or more) hours a day?
[+] tdfx|14 years ago|reply
I was pretty shocked with I saw that guy said he hoped to make $500k for the year. Sounds like the profits aren't making their way down to the developers.
[+] scythe|14 years ago|reply
That comes to about $74/hour; he's rich for working 100-hour weeks.

I don't know what good the money is if you don't ever take the time to spend it, though.

[+] benthumb|14 years ago|reply
This fellow's braggadocio is off-putting. Especially the dig he makes at the expense of Google. I mean, I wish he'd clarify what he's talking about when he says that the "engineering talent is just not there"... just not where?
[+] gaius|14 years ago|reply
Ermm, at Google? Seems a simple enough sentence construction to me.
[+] paganel|14 years ago|reply
> Another HFT programmer here. I once had to make a run-time modification to an algorithm to keep about $100 million from going at a lower price than what the traders wanted. Sometimes market conditions change so fast that the traders demand the ability to make rapid adjustments to the algorithm. They're willing to take the risk. They can't wait for the safe development cycle.

Someone should post this next time the issue of "TDD and sudoku-solvers" comes up on HN.

[+] pdovy|14 years ago|reply
Argh, guys like this give the rest of us a bad name. It's ridiculous to claim that we're somehow universally better than developers at Google or anywhere else.

One of the big arguments in that Slashdot thread seems to be backlash over developers bragging about how they change software that handles millions of dollars in the middle of the day without any testing. Let me tell you, any HFT firm worth it's salt is very conscious about risk controls. I mean honestly, what kind of business are you running if you're routinely exposing yourself to potentially massive losses because of one developers error? Not one that would be around very long.

I can only speak to where I work, but we are not coding by the seat of our pants. Yes, traders do make intraday changes to their strategies, but they can do that because their software is backstopped by a tiered risk infrastructure that limits the damage their software can do.

[+] thinkbohemian|14 years ago|reply
TIL slashdot commenters are fairly mean and biter. Good post, and thanks for the intelligent and well reasoned comments HN.
[+] bwanaaaa|14 years ago|reply
So many intelligent replies here. And to think some of the best coders do not live in the US - think of Skype (Estonia), Tim-Berners Lee, Linus Torvalds, etc... Their contributions tower above anything done by any one person on Wall Street. Yet Wall Street has only contributed to the common good by paying taxes. Even then they seek to game the system and have also managed to get the government to give them more than they ever paid (think bailout). Their scrooge-like aversion to philanthropy, charity, education, or any research to help the human condition is what annoys. Certainly those of you who code for the street have food in your belly, but when will you decide to fix your monstrous employer? They don't even have to know.
[+] tmsh|14 years ago|reply
I used to work in HFT. From about 1999 (right out of high school) until 2008.

In response to the OP, zedshaw and a couple of others (who make good points), I'd say:

* obviously if you're good at your job in HFT after a while you don't have to work 100 hour weeks. People wait for you. There are levels of support. You still get woken up once in a while, but not if the firm is well structured and the support training / delegation is good.

* people are right in that the closer you are to the money, the more financial upside (and downside) you usually have.

* there are some very mediocre programmers, like in any sector -- however, they tend to not last as long because the trading side is very demanding (in terms of quality) and that filters down pretty quickly.

* do the people who really know what they're doing in the trading and HFT space have an OCD level of awareness of all levels of their code? sometimes. and it's easy to then conclude that this must not be found in other fields/areas. i can't speak for the rest of the world, but there are exceptions everywhere i've been.

in fact, i wouldn't even say it's the norm that in HFT people are more capable of deep diving into assembly or whatever. however, basically there are a handful of people in HFT who have been fortunate enough to grow up in that industry and have made mistakes without being fired -- and those people are very bright and careful about their code, and the large purchasing price for quality/reliability and quickness delivered does affect things on a macro scale probably. there's also basically a lot of hard-core russian programmers (from the many different technical universities in russia) who are quite rigorous with their code and trust the idea of finance more than the idea of startups or silicon valley even -- but this is probably a generalization (just my experience perhaps).

most software rewriting is trivial once you know what you have to do. and most software projects don't 'know what they have to do' until half way through. i used to work with a guy who made a point of rewriting ALL trading-related code every two years. another guy didn't trust OSS because he thought it was mostly hobbyist. they're both sort of wrong -- but it's a different culture/mindset. and these guys weren't idiots. respectively, they were some of the lead developers / architects for some of the largest algorithmic shops in chicago.

but my point is that programming for HFT or real-time trading requires that you really know what you're doing down to each line of code, so that you can react when things do break (and they will break). if you can't react quickly, you will eventually not find yourself on interesting projects and you might even get fired.

so ironically you have to slow down and really get to know how to do programming very carefully, and then scale that up so that you can react really quickly later (with something like binary search). this is a useful thing to practice in some ways. other people probably learn variants of it in other fields.

* the recession hit large parts of the financial sector pretty hard. i went back and visited chicago somewhat recently (now work in SV). i can't speak to everyone, but if i were an undergraduate or someone trying to figure out career trajectories for the first time, i would feel much more secure in even the startup space than in financial services at this point. because you know most of that is going to be replaced (with automated, distributed technology) in our lifetime.

[+] ebaysucks|14 years ago|reply
1. Works 12 hours a day on average 2. Works 100 hour weeks

Stopped reading there.

[+] dadads|14 years ago|reply
I like how the slashdot discussion rapidly turns into a moral debate.
[+] ntkachov|14 years ago|reply
They are specialists. They specialize in optimizing the crap out of very specific algorithms. I would much rather take a pay cut than work all day on optimizing stuff. For the money that they pay the work sounds extreamly boring (imho)