• 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 is C++ good for Quantitative Finance? Top 3 reasons

Apply this to C++. Can you come up with a training scheme so that you get to the level of Polter, for example?

The materials aren't there to take one from novice to expert in a structured way. Anyone on the novice-expert spectrum (shy of being an expert himself) will either be groping tentatively in the dark or needing an expert's mentoring and guidance. This is what makes it an unnecessarily time-consuming process, along with lack of clear criteria on what expertise in C++ comprises.

Contrast this with chess. There's a plethora of top-flight training material out there for anyone on the novice-grandmaster spectrum. Even an amateur has a clear idea of what areas a master is better in and what he needs to do to rectify his own corresponding weaknesses. For every specialised area -- say rook-and-pawn endings, the nuances of the Sicilian Najdorf, or the subtleties of positional play -- there exist monographs and/or instructional DVDs. Grandmaster trainers like Dvoretsky are around who can raise one from a 2200+ level (already master) to 2600+ level in three years. There is nothing remotely comparable in C++ or coding generally, where one is most likely groping in the dark.
 
Yeah, C++ is < 30 years old and Software Engineering about 50 years. Chess is as old as Methusalah. C++ is much more complex.

So, no comparison with chess. IMO it is the wrong analogy.

Almost forgot: software developers can't/won't document their work. Shows the immaturity of the field.
 
Yeah, C++ is < 30 years old and Software Engineering about 50 years. Chess is as old as Methusalah. C++ is much more complex.

So, no comparison with chess. IMO it is the wrong analogy.

This isn't correct. As a tournament player I argue that chess is vastly more complex than C++. There is much more to learn both in terms of ideas and by way of detail. Furthermore, the serious literature for strong players has only exploded in the last two decades or so, with offerings by publishers like Quality Chess, New in Chess, and Gambit Books, as well as Russian/East European publishers like Chess Stars. Also, the explosion of chess software such as ChessBase, Fritz, Rybka, etc. There is no comparable effort (that I know of) with regard to coding instruction. Most of the books seem to be addressed to beginners or are reference manuals.
 
It's just an opinion. Apples and oranges.
Well, at least yours truly is dong his bit by working on the 2nd edition C++ 11 for computational finance as we speak.

Up to now, software developers 'learn to do' on the workfloor, for good or bad. With any language, you learn by doing and do by learning(books).
 
I just began reading the first edition. Loved the analogy of the chapters with martial art belts...
 
What about the speed of c++ as compare to MATLAB and python is c++ much better than these programs in-terms of speed?
This is the wrong question to ask. C++ might have the fastest execution time but if the development time is longer and the complexity is higher, you might lose the opportunity.

If you are so bent on speed, learn assembly language or Verilog.
 
As a follow up to the speed question, You should follow the following guidelines when programming in any language (http://c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast):
  1. Make it work
  2. Make it right
  3. Make it fast
As you can see, the "fast" part is the least of your worries. Oh, when it comes to speed, use a profiler. Anything else is just BS.
 
As a follow up to the speed question, You should follow the following guidelines when programming in any language (http://c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast):
  1. Make it work
  2. Make it right
  3. Make it fast
As you can see, the "fast" part is the least of your worries. Oh, when it comes to speed, use a profiler. Anything else is just BS.



Some developers start with 3. Which tends to end sadly.
 
this is right but very shortsighted.

This was an answer to the original question. Maybe you mean focusing only on speed is not correct? For most cases I would tend to agree.

And there are applications in which speed _is_ the top concern.
 
Oh, when it comes to speed, use a profiler. Anything else is just BS.

Yes and no. This is optimisation after having written code. In-depth knowledge of data structures, algorithms and object lifecycle complement profiling.

In the prehistoric days you had to estimate running time and memory size before sending the job to the mainframe. Now the process is much more ad-hoc.

And if you write multi-threaded applications then just using profiling is not enough. Task and data decomposition are a must, up-front.
 
Sorry to bring up an old thread that's had every topic discussed to death, but I've been looking for a discussion like this for a while (not sure how I missed this one) and it's been very informative.

As someone who has decided to jump into a language to bolster my resume, I'd love to ask here in 2015 what language my time is best spent on. I've got a bit of experience in Python, and will probably continue to add skills in that area, but I'd really like to add C++ as well. Is this a wise decision? Currently I have nothing but time...
 
Sorry to bring up an old thread that's had every topic discussed to death, but I've been looking for a discussion like this for a while (not sure how I missed this one) and it's been very informative.

As someone who has decided to jump into a language to bolster my resume, I'd love to ask here in 2015 what language my time is best spent on. I've got a bit of experience in Python, and will probably continue to add skills in that area, but I'd really like to add C++ as well. Is this a wise decision? Currently I have nothing but time...

Your question isn't really a question... if you have time then go for it!!
 
Good point :) I just seem to read so many opinions all over the place, and mostly wanted to make sure C++ was still going to be a valuable asset to add. Sounds like it is though, based on what I'm seeing here. Thanks!
 
Sorry to bring up an old thread that's had every topic discussed to death, but I've been looking for a discussion like this for a while (not sure how I missed this one) and it's been very informative.

As someone who has decided to jump into a language to bolster my resume, I'd love to ask here in 2015 what language my time is best spent on. I've got a bit of experience in Python, and will probably continue to add skills in that area, but I'd really like to add C++ as well. Is this a wise decision? Currently I have nothing but time...
Python is the new Matlab ... nothing wrong with that. But no substitute for a full-blown mature and rapidly evolving language such as C++.
Coming down the line C++11, 14,17.
 
Python is the new Matlab ... nothing wrong with that. But no substitute for a full-blown mature and rapidly evolving language such as C++.
Coming down the line C++11, 14,17.
most
I completely agree with Mr. DD. As such, of the more features are being added to C++14, c++11. for ex. R value references, move constructor and move assignments, among few will boost the performance of the code which use STL containers. !! May be in future C++ will take over completely on Java and c# atleast w.r.t. server side programming. !! lets wait and see. (Of course not the web services ).

cheers.
 
Siva,
Of course, C++ must be augmented by decent CS savvy, yes?

1. Abstract data types (ADTs)
2. Algorithms
3. Good background on object, generic and functional programming
4. Writing well-structured programs and code
5. etc.?
 
Back
Top