• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Why banks need C++ developers more than ever

As banks everywhere look to build up their systematic trading teams as a matter of strategic urgency in the face of competition from electronic market makers like Jane Street and Citadel Securities, a new wave of demand for C++ developers has been unleashed.

Justifiably known as one of the most difficult coding languages to master, banks need engineers proficient in C++ to work on the low latency trading systems that are key to winning business from quantitative hedge funds.

Earlier this month, Goldman Sachs' CEO Stephen Scherr said the bank had boosted its entire equities franchise by building a "tech stack" that was "aimed at the systematic clients in prime." Now, Goldman is hiring C++ coders to work on systematic market making systems across the firm. The bank currently has around 25 technology jobs in systematic market making globally, many of them specifying C++ as a prerequisite. It's also looking for a C++ software engineer to work in the franchise data strategies group that feeds real time data to the Marquee risk and pricing platform - even though most Marquee jobs are in Python.

As other banks also focus on the imperative to improve trading infrastructure and upgrade data capabilities, they too are looking for C++ expertise. JPMorgan has been looking for a London-based global head of electronic market technology who's conversant in C++ since January. Morgan Stanley wants multiple "strong software developers" coding in C++ to join its algorithmic trading team in Montreal, Canada.
rush.jpg
 
Last edited:

Daniel Duffy

C++ author, trainer
C++ is one of the few serious programming languages that helps you develop into a competent developer. The various skills that you learn cannot readily be developed in other languages because many of them treat you like a child, or hide important details that you will never get access to or even reach an impasse because they are too inflexible.

My top 8+1 reasons for learning C++

1. Multiparadigm (no other language comes near), Objects, modular, templates/generics, functional programming models

2. It is non-trivial, you learn something.

3. Good way to learn various aspects of computer science

4. It is nice for engineering applications

5. It will be with us forever

6. Learn C++ and after that all others are easy to learn. Believe me.

7. Interfaces with Python, C# etc. (many Python libraries are C++).

8. Yuge installed base

9. Impress people at cocktail parties with statements like "I have just written a parallel Monte Carlo option pricer in C++17/C++20, with lambdas,futures and variadics".
 

Daniel Duffy

C++ author, trainer
Some useful do and don't when designing applications in C++.

1. Multiple inheritance was not a good idea. C++ does not support interface keyword. The
AI community used MI a lot in the 90s.
2. Not evertyhing is an object. Behavioural commonality is not structural commonality.This
messes up class hierarchies.
3. Deep class hierarchies are usually incorrect and not maintainable, especially with MI. For
CAD, all you need is depth 1 and make sure each class has 1 major responsibility. Combine
with composition and Visitor pattern. Separation of Concerns is key!
4. "Tiny classes" are not classes; they are not even objects. Just think of many many
Command classes. Just use lambda functions.
5. Virtual functions and multiple classes are not needed; instead, use a single class with one
or more std::function instances.
6. (Sapir-Whorf) At the time. some developers used GOF patterns left, right and centre.
What happened in many cases is life started with the (GOF) solution and work back to the
problem. Like Newton-Raphson, convergence is not a given.
7. Classes are context-sensitive (aka unstable). Many classes live in the head of their creator
who may have incomplete information about the problem domain.
8. Our group had 1-7 on our radar screens for some time. Especially for fixed-priced
projects. For developers on an hourly rate things can be slightly different. Parkinson's Law
and gold-plating might kick in.
9. Class hierarchies are neither sufficient nor necessary.
 

Daniel Duffy

C++ author, trainer


Python has become a necessary language to learn if you want a job in finance. However, while students everywhere are becoming minor Python coders, the fact that C++ is harder to master can be a differentiator when it comes to getting a job. At the same time, more recent versions of C++ are easier to use than those that came before. C++ 20 has improved support for large-scale dependable software, says Bilokon. "The light-weight abstractions promised by C++ are now easier to attain. These changes are driving a renaissance of C++ on Wall Street and in the City, and in high-frequency trading centres such as Chicago."
 
Open question. How do I transition from Java to C++?
What is the best path / route to take ?

With such trends in the market for C++ with financial firms going wild to hire C++ developers, it is a golden opportunity.
For my self, I have some C++ experience, but none in any industry.
So how would I make one interested in me? (Reading your book Financial Instrument Pricing Using C++, 2n Endition,
great book, enjoying the read so far. But thats not going to be enough to become an expert in C++ and land a job)
 
I am based in London, so any suggestions can be related to the area.
In fact, what are the thoughts on bootcamps for re-specialization ? Can I land a C++job afterwards?
That is not go down in compensation due to change of fields.
 

Daniel Duffy

C++ author, trainer
I am not able to say if C++ will get you a job in London, Maybe, it depends.
Do you know finance?

some C++ experience
Can you quantify that? My 2nd edition may or may not be too advanced.

A C++ programmer has no problems learning Java. The other way around is trickier (Java protects you from raw memory).

The best way to learn C++ skills is to do the QN C++ course. It is an investment but ==> skill.
 

Daniel Duffy

C++ author, trainer
financial firms going wild to hire C++ developers
yes?

edit: If I were in your role/position in general, I would have C++ and Python in my toolbox.
 
Last edited:
Knowing finance not the extent of front office. But I have been working in banks on various areas. Not a stranger, but defiantly were not aware of many financial terms I have encountered in your book.

As for my C++ knowledge. I don’t have any professional experience, not in writing any applications. It comes from uni, and self studies, which all came before smart pointers where a thing.
For now I feel that I am at the right place with the book. Some concepts were more advanced, but I think I needed that to progress.

The said, I did some Rust in past and that was for a company.

Now I am not against QN course. It is perhaps a worthy investment. Does it provide with help getting a job afterwards?
 

Daniel Duffy

C++ author, trainer
BTW do you know that I provide C++ code for purchasers of the book? BTW I have an upcoming PDE/FDM book laying the foundations for the maths part of the C++ book?





On jobs: I am only the originator of the course :) taking it means you learn the real stiff and don't get bad programming habits.
You could inquire around.
 
Last edited:

Daniel Duffy

C++ author, trainer
It comes from uni, and self studies, which all came before smart pointers where a thing.
In general, I am not at all impressed with how in general many universities do C++ training. Self-study is not always optimal e.g. plucking silly examples from internet.
The QN course has 10 well-defined modules. It's a bit like getting judo belts white-> yellow-> ...
 
Top