What programming languages are most useful?

Hi, I will be interning at BB S&T this summer and was wondering which programming language(s) are most useful on trading/structuring/strategy desk. I interned in S&T previous summer at non-BB European bank and was on a trading desk where almost everyone was programming/automating some of their tools. Also got tasked with creating a ETF dividend analysis tool, which I quite struggled with (managed to complete it in the end using VBA but it was very inefficient and clumsy made). This year I want to be more prepared in terms of technical aspects, so apart from VBA, which language is the most common/usable/practical? Is it Python?

 
Best Response

Honestly, you can do a lot with a whole bunch of languages. Python, Ruby, R, Pearl, Java, and C++ all come to mind, as does Matlab. I would suggest looking at all of 'em and seeing which one works best for you. The other thing to consider is that not every language is right for a given project.

Personally, I haven't written code in years, but I can still write Java and C++ fairly well and have been meaning to pick up either Python or Ruby (which is to a large extent, the successor for Pearl) at a more advanced level. Either way, once you know the basics of programming logic and a language's structure, it's pretty easy to go and pick up another language. At the end of the day though, the language I would use to code in depends on the project. If I'm doing something short, sweet, and to the point I'd use a compact and dynamic language like Python or Ruby. If I'm aggregating larger data sets, C++ and Java are my go to choices because they are far more effective than using Python or Ruby.

If you are just starting starting out and really don't know squat, I would focus on Python or Ruby. Both are extremely easy to learn. If you want to take a much more utilitarian approach and learn how to code in an object oriented fashion, learn C/C++ or Java. I've even found three different websites which would point you in the direction above.

 

Oh... one other thing... sloppy code is broken and disorganized code. No matter what language you learn, learn to properly format your code, use a set standardized naming convention in all of your code, and use comments in order to make sure that either you or whoever is reading your code knows exactly what you are doing or trying to do. That last part is important, especially when trying to debug code.

 

I feel that it's not the tool you should be trying to pick to use, but the knowledge of how to use the tools to do what you need. For example, if you understand that you are ultimately moving to a Hedgefund that has a focus on Asian-commodities that trade using some sort of algorithm, then you would firstly understand the applications of the algorithm and the logic, then look at the existing libraries, or the most likely libraries and the language they are written in so that you can get as close to gaining a practical skill set as possible. The language itself is easy to pickup, a hundred or so commands, but the complicated part is the architecture in your code, the logic underlying what you are trying to solve, and the tools that would best model what you want to do. Most of the time, if you are aiming for HF, they will have their own language they make you use, if you're going to that kind of a Hedgefund though.

 

Python ftw! cuz it has ML libraries. It highly depends on the problems you want to solve in the future, since you're going to S&T you want to trade, that's data analysis and data analysis is Python, R and Matlab.

You killed the Greece spread goes up, spread goes down, from Wall Street they all play like a freak, Goldman Sachs 'o beat.
 

Like everyone else said, Python is a good choice. It's easy to do all sorts of simple but useful things, such as cleaning up Excel, scraping websites, data analysis, quick and easy functions, etc.

If you were on an electronic/algo desk, being able to read or at least having some exposure to C++ would be helpful if you ever wanted to look at the execution code.

 
 

+1 For Codeacademy.com

Found it really really enjoyable to work through during downtime at work, throws you straight in thought without any real theory/grounding before it so make sure that's the way you want to learn (in practice I think its probably the only way to learn to code effectively, by doing).

Has improved my VBA skills in tandem which has been great for automation at work as we cant use python.

 

Can anyone chime in on compliance restrictions on coding?

I've heard from a friend that getting compliance/IT approval to code anything outside of VBA is extremely difficult at one of the bigger Canadian banks' trading floor (outside of the quants/algo traders). If the desk needs it, they can either build it in excel/vba, or get IT to build a tool for it.

 

I agree with everyone who is saying that Python is a good place to start. It's very approachable and is a good medium for learning the fundamentals of coding. Outside of Python, Java and C++ are pretty widely used, but it unlikely that you will have to do anything too crazy with these in a vanilla S&T role (as opposed to a quant/strats/structuring/etrading role). If you are working in vanilla S&T, I would suggest familiarizing yourself with tools such as MatLab, R, and Mathematica (you could almost put Python on this list as well). When it comes to certain types of statistical analysis and modeling work, these will save you a ton of headache compared to VBA.

I would worry more about picking up the fundamentals of computational logic than mastering a specific language- a lot of banks are using antiquated and/or in-house languages due to legacy infrastructure. For example, Goldman S&T uses an in-house language called Slang for almost everything, and you would be able to pick it up just as fast as anyone else as long as you have decent object-oriented programming fundamentals. Other banks such as MS have also invested a lot in similar systems, so I wouldn't be surprised to find some degree of this at any BB.

I have some first-hand experience coding on a BB trading desk so feel free to PM if you have any more/specific questions.

 

Languages are the tools you use to implement the solutions to problems. Different problems require different tools, and those tools have different properties.

If you need handle things memory handling, being close to the metal, ASM, C and C++ will do just fine. C in conjunction with ASM is widely used for Embedded systems, systems programming, hardware drivers, etc. Not something you'd use in Finance, unless you're doing work between the network and consoles. Maybe some optimization for python, at most (CPython). People usually start with C, just to understand computer better, since you HAVE to deal with memory management, and the underlying theory behind Data Structures. It's useful to learn, but that's about it, for the layman programmer.

C++ is a very big and well-defined language, used for almost everything. It was (and still is) extremely popular during the 80s/90s/00s. In fact, there's tons of quant books and Finance software written in C++. It's C with classes and a broad range of libraries.

Then you have Java, which is another heavy hitter in enterprise software. You'll see Java again and again in Fiance, without checking the actual numbers, I think it's the most used language in Financial software. C# and Python are also very popular. Python is a great language IMO, which you can jump straight into. It's being thought more and more as the first language these days.

You could write a book about all this stuff, but the general route used to be (when I started 15 years ago, still relevant today):

Dabble with HTML/Javascript/PHP -> Get a thorough understanding of C -> Pick one OOP language (C++, Java, C#, Python, etc.) and get good with it. Learn the libraries, etc. || Learn Data Structures and Algorithms on while doing that -> Learn Networking and Databases (SQL, etc.) -> Functional Programming (Haskell, Clojure, Scala, etc.) || Learn the basics of AI (In which case you'll start to look at R, Matlab, and such languages).

With all that, you should be able to pick up pretty much all languages and paradigms pretty fast. You'll probably spend some years learning, but keep at it. There's just so incredibly much to learn, so you have to pick some specialization. It's INCREDIBLY hard to be a rock-star generalist. (Notice that I didn't even mention web development, other than some basic HTML and scripting, and networking)

 
tackytech:

Languages are the tools you use to implement the solutions to problems. Different problems require different tools, and those tools have different properties.

If you need handle things memory handling, being close to the metal, ASM, C and C++ will do just fine. C in conjunction with ASM is widely used for Embedded systems, systems programming, hardware drivers, etc. Not something you'd use in Finance, unless you're doing work between the network and consoles. Maybe some optimization for python, at most (CPython). People usually start with C, just to understand computer better, since you HAVE to deal with memory management, and the underlying theory behind Data Structures. It's useful to learn, but that's about it, for the layman programmer.

C++ is a very big and well-defined language, used for almost everything. It was (and still is) extremely popular during the 80s/90s/00s. In fact, there's tons of quant books and Finance software written in C++. It's C with classes and a broad range of libraries.

Then you have Java, which is another heavy hitter in enterprise software. You'll see Java again and again in Fiance, without checking the actual numbers, I think it's the most used language in Financial software.
C# and Python are also very popular. Python is a great language IMO, which you can jump straight into. It's being thought more and more as the first language these days.

You could write a book about all this stuff, but the general route used to be (when I started 15 years ago, still relevant today):

Dabble with HTML/Javascript/PHP -> Get a thorough understanding of C -> Pick one OOP language (C++, Java, C#, Python, etc.) and get good with it. Learn the libraries, etc. || Learn Data Structures and Algorithms on while doing that -> Learn Networking and Databases (SQL, etc.) -> Functional Programming (Haskell, Clojure, Scala, etc.) || Learn the basics of AI (In which case you'll start to look at R, Matlab, and such languages).

With all that, you should be able to pick up pretty much all languages and paradigms pretty fast. You'll probably spend some years learning, but keep at it. There's just so incredibly much to learn, so you have to pick some specialization. It's INCREDIBLY hard to be a rock-star generalist. (Notice that I didn't even mention web development, other than some basic HTML and scripting, and networking)

Overall, java is the most widely used programming language. With that said, I have never heard anyone say that it is the most widely used in finance. From what I have heard everyone say, C++ is the most widely used in the finance world.

 

Lots of people recommending Python. Python is great and easy to learn, but starting with C will prepare you to be a better developer and give you the foundation to easily pick up almost any other language.

If quick hacks are your goal, Python. If being proficient is your goal, start with C then C++.

 

While loads of people are (sensibly) recommending Python, I'd say that's not nearly as important as being able to use SQL well. If you want it to be a big part of your job then C# or Java are worth learning, the concepts are transferable and hedge funds love C#.

C and C++ are not that useful unless you want to be a Software Engineer full time.

 

SQL is great if you are dealing with databases. Otherwise, it's a pain in the ass to work with. Considering we don't know what exactly he will be dealing with, it's easier to suggest a more multipurpose language than go with SQL unless you are a back office developer or handling database management.

 

I think you have your answer man - if the companies/roles you're aiming for explicitly state C#, go for that. If it makes you feel better, call up current traders/researchers at options trading prop shops for an info interview and ask directly what they'd suggest you getting experience in.

That being said - my observations when applying to US-based PT is that straight trading roles asked for Python/R scripting knowledge and that only the more quant trading/research roles asked for C++ experience (that was always considered a plus on top of the Python reqs).

 

Exactly.

I want to make a decision made keeping the future in mind. I don't want to be classified as a developer quant and would like to enter as a trader because I believe there are much better coders out here for developer quant positions. Also, I dont think developer quants trade that much.

I just want to prove that I have the necessary motivation to be a trader by implementing some projects on my own.

"The markets are always changing , and they are always the same."
 

I think Python is great as a scripting/modeling language. At my firm, lot's of analysts/associates in trading use Python for fundamental models/strategy backtesting/that sort of thing while the quants use something else e.g. the systematic trading quants use Java.

Python is also very popular for quant research/trading roles at HFs.

 

Python for US based stuff. More companies are turning to Python from C++/Java because of automation tools and versatility.

What I believe is that C# is being required is more for development environment.

No pain no game.
 

No programming language will really make you stand out in front of ER, IB or S&T recruiters (unless you are applying to quant firms ofc). VBA for ER and IB is like a tiny cherry on top of a sundae - kinda nice to have, but not needed at all. Python. Java and VBA may help a bit for trading, but will not be the deciding factor that helps you get an interview either

 

I am well aware that excel and PP are generally the only programs used in IB and I am comfortable with both of them.

I am only interested in programs like R and python on the side as I use them in some of my stats classes and was just curious if anyone who has worked in IB has come across any uses for programs other than excel and PP while working in the industry haha

 

I wouldn't recommend learning a programming language unless it is just something that you want to do for yourself. Almost nobody in RE knows anything past VBA and you will most likely never use it.

I learned SQL back in college because I am a nerd and it took almost 8 years before I used anything I knew. We were going through the build out/testing of a BI platform about 3.5 years ago and knowing about database construction/SQL was helpful because I could help liaison between IT and the FO to get things built properly. We built the DB in Oracle and used Business Objects as the front end, but recently decided to move to Power Pivot (which uses DAX expressions) so we could integrate reporting with another newer system that is being constructed now. So basically my knowledge was useful for like a split second, but because I'm not a tech person who is always learning new programming languages, I'm obsolete (yet still tied to this project that is taking about 7 hours a week in meetings out of my schedule).

 

Coding isn't a necessary skill for IB. VBA can be helpful (excel macros) but most major IBs will have an in-house team that will code up anything you need.

That said, coding is a tremendously useful skill in case you decide not to pursue IB. And it may be a relevant skill depending on your career track after IB (e.g. Python for machine learning-driven trading at a hedge fund).

 

denont,

What type of coding are you interested in pursuing? I know Python is a big one right now, C ++, visual basic, and myriad other specific programs for very specific applications (such as CNC machining).

My older son is in a double degree of Electrical Engineering/Computer Engineering. I've told him, in no uncertain terms, to learn as MANY languages as possible while in school, even if it meant teaching yourself a few.

Don't know what you're looking into, but I can tell you that a good coder, regardless of industry, makes serious bank. Hours can be grueling, but if that is what does if for you, just start taking different coding classes and you'll be surprised that you will have 10 - 15 languages under your belt by the time your graduate.

 

Molestiae in consequatur et est. Suscipit adipisci vel facilis quia officia. Animi et voluptatum error voluptas quis. Placeat in ut id. Ab minima numquam qui voluptatem omnis eveniet.

Quia qui laudantium veritatis qui veritatis dignissimos. Mollitia aut sit incidunt. Consequatur optio tenetur ut id dolor voluptatem aut. Iste animi enim similique necessitatibus aut. Soluta earum ducimus sit repellat consequuntur quod. Incidunt dolor officiis recusandae nostrum.

I'm an AI bot trained on the most helpful WSO content across 17+ years.
 

Et tempora reprehenderit ea sequi corrupti est non. Velit optio dolorum dolores ut. Adipisci aut officiis maxime id nisi. Officiis quis maxime nostrum iste ipsa ad necessitatibus. Qui quia magni et corrupti odit illo.

Ullam hic ea blanditiis ut quos ex aliquam esse. Deserunt et qui debitis. Quo est qui qui eos sint omnis omnis.

Eius qui rerum fugit officia omnis tempora. Voluptate quaerat earum id pariatur non. Dolorem ipsum et blanditiis harum.

Dignissimos nisi dolore natus sit et et et. Optio non minus saepe non libero. Vero fugit sunt id iure sint adipisci omnis. Eaque ratione impedit reiciendis quaerat. Quia veritatis ut tenetur sequi facilis.

just google it...you're welcome
 

Tempora dolores totam tempora aut sapiente. Blanditiis saepe voluptatum omnis eos magni eius. At incidunt nulla suscipit qui et.

Saepe sit vitae ex iusto et illum. Ex earum facere voluptates mollitia. Nesciunt eveniet qui tempora in ut. Quo ut cum quasi animi impedit.

Ut debitis quibusdam quos sequi sit aut. Neque voluptate blanditiis sed illo recusandae minima nostrum. Ab in inventore dolorem officia. Voluptas placeat rerum consequatur vel est dolore porro.

Nemo eos porro adipisci sit nobis quaerat. Inventore atque facere ullam quae nisi. Beatae delectus minima nulla quidem.

Career Advancement Opportunities

March 2024 Investment Banking

  • Jefferies & Company 02 99.4%
  • Goldman Sachs 19 98.8%
  • Harris Williams & Co. (++) 98.3%
  • Lazard Freres 02 97.7%
  • JPMorgan Chase 03 97.1%

Overall Employee Satisfaction

March 2024 Investment Banking

  • Harris Williams & Co. 18 99.4%
  • JPMorgan Chase 10 98.8%
  • Lazard Freres 05 98.3%
  • Morgan Stanley 07 97.7%
  • William Blair 03 97.1%

Professional Growth Opportunities

March 2024 Investment Banking

  • Lazard Freres 01 99.4%
  • Jefferies & Company 02 98.8%
  • Goldman Sachs 17 98.3%
  • Moelis & Company 07 97.7%
  • JPMorgan Chase 05 97.1%

Total Avg Compensation

March 2024 Investment Banking

  • Director/MD (5) $648
  • Vice President (19) $385
  • Associates (86) $261
  • 3rd+ Year Analyst (13) $181
  • Intern/Summer Associate (33) $170
  • 2nd Year Analyst (66) $168
  • 1st Year Analyst (202) $159
  • Intern/Summer Analyst (144) $101
notes
16 IB Interviews Notes

“... there’s no excuse to not take advantage of the resources out there available to you. Best value for your $ are the...”

Leaderboard

1
redever's picture
redever
99.2
2
Secyh62's picture
Secyh62
99.0
3
Betsy Massar's picture
Betsy Massar
99.0
4
BankonBanking's picture
BankonBanking
99.0
5
kanon's picture
kanon
98.9
6
CompBanker's picture
CompBanker
98.9
7
dosk17's picture
dosk17
98.9
8
DrApeman's picture
DrApeman
98.9
9
GameTheory's picture
GameTheory
98.9
10
bolo up's picture
bolo up
98.8
success
From 10 rejections to 1 dream investment banking internship

“... I believe it was the single biggest reason why I ended up with an offer...”