Pros and Cons of Certain Quantitative Languages

Joined
6/11/15
Messages
14
Points
11
Hello!

Currently I am studying business mathematics in Germany. It is scheduled I will finish the studies in one year.

I have heard, that a lot of quant employers consider programming skills as important as mathematical skills. Therefore I want to learn a quantitative programming language.

I have found the quantitative programming language synopsis on quantinvestor.net . Following this synopsis I am thinking about to learn R. Can I trust this valuation of the programming languages with regards to quantitative analysis?

Martin
 
Last edited:
Hello!

Currently I am studying business mathematics in Germany. It is scheduled I will finish the studies in one year.

I have heard, that a lot of quant employers consider programming skills as important than mathematical skills. Therefore I want to learn a quantitative programming language.

I have found the quantitative programming language synopsis on quantinvestor.net . Following this synopsis I am thinking about to learn R. Can I trust this valuation of the programming languages with regards to quantitative analysis?

Martin
R is a useful tool but not a programming language as such. Not many employers would pay much attention to R on your CV. It's like saying you have a driver's license. It does not distinguish you.

This list you posted is not so useful.

C++ is still the standard what employers (seem to) expect.

Maybe they think if you can make it in C++ you can make it anywhere :)

hth
 
Last edited:
R is a useful tool but not a programming language as such. Not many employers would pay much attention to R on your CV. It's like saying you have a driver's license. It does not distinguish you.

This list you posted is not so useful.

C++ is still the standard what employers (seem to) expect.

Maybe they think if you can make it in C++ you can make it anywhere :)

hth
this is not necessarily true. It all depends on what you want to do. If you want to do quantitative analysis, learn R (or Python).
 
this is not necessarily true. It all depends on what you want to do. If you want to do quantitative analysis, learn R (or Python).
Fair enough.

edit: But employers may want to see C++ on the CV.

Candidate 1: R
Candidate 2: R, C#
Candidate 3: R, C++
 
Last edited:
R is a useful tool but not a programming language as such. Not many employers would pay much attention to R on your CV. It's like saying you have a driver's license. It does not distinguish you.

C++ is still the standard what employers (seem to) expect.

To what kind of position are you referring to? Quantitative developer? I am more seeking for a quantitative analyst position with main task statistical analysis. Isn't it true, that R offers by far more statistical procedures than C++?

This list you posted is not so useful.
Why not. Can you go into detail? As far I am familiar with this the synopsis seems to be very useful. At least it seems to be the most detailed comparison of programming languages in regards to quantitative analysis available on the net so far. And the evaluation criteria seem to be derived from practice. C++ is of course always nice to have to show programming know-how. However I am not sure I will become a talented C++ programmer.

Martin
 
Last edited:
To what kind of position are you referring to? Quantitative developer? I am more seeking for a quantitative analyst position with main task statistical analysis. Isn't it true, that R offers by far more statistical procedures than C++?


Why not. Can you go into detail? As far I am familiar with this the synopsis seems to be very useful. At least it seems to be the most detailed comparison of programming languages in regards to quantitative analysis available on the net so far. And the evaluation criteria seem to be derived from practice. C++ is of course always nice to have to show programming know-how. However I am not sure I will become a talented C++ programmer.

Martin
It is just a personal view, as the posters say themselves. Putting ++, + in nice little boxes is naïve.

Here's my 2 cents on C# vs C++

http://www.moneyscience.com/pg/blog...cial-markets-an-interview-with-daniel-j-duffy
 
Python and C++. Python for research, soft realtime apps, and getting things done in general. C++ for the most performance sensitive applications.

R is not a good language to build infrastructure in, even statistical infrastructure. The foundation is crooked.
 
Python and C++. Python for research, soft realtime apps, and getting things done in general. C++ for the most performance sensitive applications.

R is not a good language to build infrastructure in, even statistical infrastructure. The foundation is crooked.
I know no Python really. Is there anything to be said for mixed C++/Python application?
Just askin'.
 
Is there anything to be said for mixed C++/Python application?
Just askin'.
Yeah, I've done various things with combining C/C++ and Python. At a very basic level, I've used Python as a high level wrapper to interface with a database and feed input parameters into a C++ function.

It's also possible to directly inherit C++ objects as Python objects using boost-python. I've used this as well.

The most advanced applications I've done with this sort of approach is writing Cython.
http://cython.org/
Cython is pretty amazing in that you can use Python data structures, but access it at C-esque speeds because it's compiled.
 
Yeah, I've done various things with combining C/C++ and Python. At a very basic level, I've used Python as a high level wrapper to interface with a database and feed input parameters into a C++ function.

It's also possible to directly inherit C++ objects as Python objects using boost-python. I've used this as well.

The most advanced applications I've done with this sort of approach is writing Cython.
http://cython.org/
Cython is pretty amazing in that you can use Python data structures, but access it at C-esque speeds because it's compiled.
wow! Thanks.
actually a lot. Interoperability is not that difficult although it's easier with C.

R makes it very easy to work with C++ by using RCpp.
Thanks.
 
Looking at things differently maybe OP's question could be 'which combination of languages is optimal' as there is no best language for _all_ things IMO.


"At a very basic level, I've used Python as a high level wrapper to interface with a database and feed input parameters into a C++ function."

I use C++ -> C++/CLI -> C# -> ADO.NET for database access.
 
I use C++ -> C++/CLI -> C# -> ADO.NET for database access.
Yeah, there are various ways of going about this. Many things can interface with both C++ and databases. I tend to go Python only these days, but a lot of the heavy duty math that my Python code does is ultimately in C or Fortran (conveniently wrapped for me by someone else).

I rarely code C++ day to day, but it's an important piece.
 
Really the combination of languages is you want one compiled heavy duty language and one higher level interpreted / research language. The former is meant to be industrial grade, building things that last and need to be stable. The latter are meant for rapid development.

Examples:
Compiled: C, Java, C++, C#
Higher level (quant specific): Python, MATLAB, R

Of the higher level languages I listed, Python is the only one engineered well enough that I'd trust it in production. This is from personal experience with Python and R, and observing people who do MATLAB.

But TBH, there is a lot to learn, a lot of different languages have interesting concepts to teach. I know some Lisp, some Haskell, some ML; just picked up bits and pieces to expand my knowledge and have fun. Of course bash scripting is very helpful. I'm not even a software developer.
 
Code:
! A fortran95 program for BS option
! By djd
!
program main
  implicit none
  integer anyKey

  real*8 S,K,T,r,v
  real*8 BlackScholes
  real*8 price

  S = 60.0
  K = 65.0
  T = 0.25
  r = 0.08
  v = 0.3

  price  = BlackScholes(S,K,T,r,v)
  write(*,*) price

  anyKey = system("pause")

end

!
real*8 Function BlackScholes(S, X, T, r, v)
      ! Put
        real*8 S,X,T,r,v

        real*8 d1, d2
        d1 = (Log(S / X) + (r + v**2. / 2.) * T) / (v * Sqrt(T))
        d2 = d1 - v * Sqrt(T)

        BlackScholes = X * Exp(-r * T) * cdf(-d2) - S * cdf(-d1)

        Return

        End

!
  real*8 Function pdf(x)

            real*8 x,A
            A = 1.0/Sqrt(2.0*3.1415)

            pdf = A * Exp(-0.5*x*x)

            return
   end

!

real*8 Function cdf(x)

            real*8 DPI,x,L,k,a1,a2,a3,tmp,pdf

            a1 = 0.4361836
            a2 = -0.1201676
            a3 = 0.9372980
            DPI = 3.1415926535897932

            L = Abs(x)
            k = 1. / (1. + 0.33267*x)

            tmp = a1*k+ a2 * k**2. + a3 * k**3.

            cdf =  1.0 - pdf(x)*tmp
            if(x.lt.0.) then

                cdf = pdf(x)*tmp

            end if

            return

        end
Yeah, there are various ways of going about this. Many things can interface with both C++ and databases. I tend to go Python only these days, but a lot of the heavy duty math that my Python code does is ultimately in C or Fortran (conveniently wrapped for me by someone else).

I rarely code C++ day to day, but it's an important piece.
FORTRAN 66?

I wrote my first FORTRAN program since literally 30 years a few months ago :D
At first I got lots of errors and then I realized not to go beyond column 72 or somethin'
lots of flashbacks; I was searching for my punchcards:)
 
I don't write it, it's just Numpy is a wrapper for Fortran BLAS libraries.
 
Is Fortran even used anywhere these days? There's a course at my uni that uses Fortran 95 in the context of mathematical programming (root finding etc), heard its quite easy.
 
Thank you for your already helpful informations, guys.

However we did not speak about the statistical/ mathematical libraries at all. I am picking out some typical statistical issues in quantitative analysis.

Are there libraries for
- Missings handling
- Matrix and dataframe data type
- Robust regression
- Alternative GLM distribution plugins, e.g. Tweedie's Poisson Gamma distribution (for running a GLM with Tweedie Distrubtion for instance)
- Decision Trees (CART and CHAID)
- Support Vector Machines
- Neural Networks

available in

Java, C++, Python, MATLAB, R?

Martin
 
Is Fortran even used anywhere these days? There's a course at my uni that uses Fortran 95 in the context of mathematical programming (root finding etc), heard its quite easy.
Yes, but maybe not so much in finance. No real idea.

Same question with COBOL; 80% of all the world's software runs on COBOL.
 
Back
Top Bottom