You asked about 'building an automated options trading system with realtime greeks/PnL' as a specific example. To be clear, this can be a very low bar to clear. You don't need a large amount of memory or cubic time algorithms to compute PnL. Between myself and the immediate colleagues I've worked with, we've dealt with automated options trading systems written in C, C++, Java, C# Mono/.NET, Scala, Objective C, Go. All of the languages are suitable.
There's advantages to all of them:
- For server-side programming, the general experience is that you can quickly get a good runtime performance to development time ratio in a language with concurrency primitives baked into the language, such as Go, or a language inspired by a functional paradigm, such as Scala. This makes it easy for you to build components like a spooler, PnL or risk server etc.
- For network-side programming, sockets and threading, it's often easier to do this in C/C++ because of a large amount of examples behind this and libraries that provide access to low level facilities, but it's not impossible to do this in nearly any other language.
For scripting, it's often easier to do it in an interpreted language with an out-of-box REPL environment, like R (R Studio), MATLAB (MATLAB IDE), Python (IDLE, iPython). OCaml (utop), Groovy (groovysh). Type inference also helps.
Performance-wise, there's no clear winner in speed among the compiled languages, provided you are not exploiting compiler-specific tricks or abstractions around architecture-specific primitives. A skilled developer in C#/Java can easily out-optimize an unskilled developer in C++, and vice versa. The memory management practices will be different of course, which is why you'll find 1 language 'faster' than the other if you stuck to a particular paradigm. In the former, you would want to minimize the odds of your objects getting promoted into the tenured generation, which when filled, would trigger a garbage collection cycle; in the latter, you want to be careful with where you make memory allocations.
Yes it's OK here if your provide exactly enough context.
Which technology is the quickest between python or C#?
is clearly off-topic.
But something like:
Is Python fast enough to perform a crossing moving average indicator over 1000 symbols and send orders within 2 seconds?
would be OK. Obviously, the more details you provide the more interesting the question is because it makes it more specific and hence can be answered more precisely.