You need scalability if you need to execute a lot of trades (lets say at least 100's an hour), or monitor/trade many instruments in parallel. Python does not provide a good way to build multi-threaded or near-real-time "back-end" (non-web) applications. Also, because of the lack of strong typing - once a program/system reaches certain size & complexity - it becomes hard to maintain, especially when multiple people work on it. So, to summarize - Python does support scale as well as some other languages for application performance or the size (lets say something over 50-100k lines of code). However, the strengths are: great library support and flexibility of a scripting language that allows very fast turn around from development to production. It is a great language for learning programming and building prototypes fast.
python can easily handle 100s an hour 100s a second is better with another language. You can use python in conjunction with a messaging layer to handle realtime events.
I have to read a lot of books to understand this. But it is good to know that Python can handle medium freq intraday trading. Thanks for the input 2rosy.
2rosy, I think you are right, you could solve the problem with a messaging tool, however it complicates the infrastructure setup. Have you done something like this? What did you use for the messaging layer?
Everywhere i worked had a messaging layer from tibco rendezvous to rabbitmq, zeromq , solace,jms .you name it
checkout the blog at quanstart.com they cover trading systems design in python and C++, elaborating in many key components (like the backtester) with detailed and well explained examples.
In Python, Zipline http://www.zipline.io/ offers framework functionality (and it happens to be the backend for https://www.quantopian.com/ )
Yes, I'm familiar with those tools, and used some of them in the past, I was just wondering if you built/used an actual real world trading system written with Python + a messaging middleware solution, and what were the reasons developers picked that combination instead of C++ or Java?