Operating System Choice

Im putting together a trading platform, that will have a windows client, with a python IDE for algotrading...
Until last week and for the last year, I've been working on the Linux end of the system...
last monday, I had the "pleasure" of doing a full python install on windows (with numpy, pandas and scipy), documenting every step to generate a bash script which will end up being an install wizard...

So I fired up a virtual machine with a fresh install of Win7 and get going....

At first I tried to do a straight up install, get each package and set them up... that didn't go too well, I quickly realized that on windows Python is not very slick at taking care of requirements, so although pandas claimed to have installed correctly on the nice looking gui installer... attempting an import quickly lead to an error for missing requirements...

So, I go for approach #2... new VM... with a new fresh install... this time I try to setup PIP and Easy_install, and let them do the heavy lifting... turns out that getting pip to work on command prompt is not exactly an easy task, there's plenty of tutorials on how to do it, none of them is simple... so I go with easy_install, and things are going ok, till I get to numpy and I start getting errors about a missing .bat files... which turn out to be issues related to a missing C++ compiler... so I start looking into visual studio and install VS2008 and VS2012... none of which actually fix the problem...

so I find on one of the tutorials a recomendation to instead use anaconda, pythonxy or a couple other all-included scientific python packages... after reading a few licenses I decide to go for anaconda, which has a wonderful package manager called "conda", I install the minimalistic version (miniconda_ fire up a command prompt and write a single command "conda install --yes numpy pandas etc.... " (in the same manner i would use yum or apt-get to install on the linux side...)

what i learned from the story.... Windows is friendly, as long as you stay within the script... once you start trying to play with non-microsoft-approved tools... things get a bit too painful...



PS...
I also found that there is no OpenMPI for windows!!! so no multiparallel processing unless you write to their own little proprietary controller which happens to be available only on the server version of Windows!

Are you talking about trying to use Windows for the server end with all this?

For the client or server targets, have one devel machine with windows... then once you're solid on a given build of your app:

py2exe

That will package the app, all libraries it depends on, and an interpreter, into a windows executable. The target server running in production then doesn't even need python installed... same with the target clients.

Or, an alternative if you want to continue to do development entirely on Linux but still want to have a stand alone app with all dependencies / imported libraries built in: look into pyinstaller

Both options aren't perfect, but the alternative of installing python + pandas (and in my case: ZeroMQ, Bokeh, and Numpy) to a client is worse... packaging it up with tools like this is the way to go. (The apps I built out were for algo trading via an API, and some graphical representation of stats data on said algo strats, nothing fancy like a full on trading platform. But py2exe helped a lot when I had to roll out to a few clients.)
 
Are you talking about trying to use Windows for the server end with all this?

For the client or server targets, have one devel machine with windows... then once you're solid on a given build of your app:

py2exe

That will package the app, all libraries it depends on, and an interpreter, into a windows executable. The target server running in production then doesn't even need python installed... same with the target clients.

Or, an alternative if you want to continue to do development entirely on Linux but still want to have a stand alone app with all dependencies / imported libraries built in: look into pyinstaller

Both options aren't perfect, but the alternative of installing python + pandas (and in my case: ZeroMQ, Bokeh, and Numpy) to a client is worse... packaging it up with tools like this is the way to go. (The apps I built out were for algo trading via an API, and some graphical representation of stats data on said algo strats, nothing fancy like a full on trading platform. But py2exe helped a lot when I had to roll out to a few clients.)
the server is all C and runs on Linux...
I need python to put a friendly face on the client side. :)
thnx for the tip, I'll look into those tools, they may be the best way to keep it simple :)
 
I would rather say that it is the overhyping of the open-source crowd who trumpets their ware to be cross-platform. Cross platform means you install it and it just works, thats what I am used to when I install a Windows app on my Windows machine. I am not surprised you have tons of issues with apps that were not designed to run on Windows machines. Please do not blame it on Windows if the Python crowd cannot design functional packages and libraries that work on Windows machines.

No multi threading and parallel processing in Windows? That statement alone made me smirk ;-) Some of the currently world's best parallel processing libraries are written natively for .Net not even C++ (I can currently only come up with a very small handful of dialects/languages that manage multi threading better than .Net core [in tandem with add-on libraries like TPL Dataflow] such as Erlang).


Im putting together a trading platform, that will have a windows client, with a python IDE for algotrading...
Until last week and for the last year, I've been working on the Linux end of the system...
last monday, I had the "pleasure" of doing a full python install on windows (with numpy, pandas and scipy), documenting every step to generate a bash script which will end up being an install wizard...

So I fired up a virtual machine with a fresh install of Win7 and get going....

At first I tried to do a straight up install, get each package and set them up... that didn't go too well, I quickly realized that on windows Python is not very slick at taking care of requirements, so although pandas claimed to have installed correctly on the nice looking gui installer... attempting an import quickly lead to an error for missing requirements...

So, I go for approach #2... new VM... with a new fresh install... this time I try to setup PIP and Easy_install, and let them do the heavy lifting... turns out that getting pip to work on command prompt is not exactly an easy task, there's plenty of tutorials on how to do it, none of them is simple... so I go with easy_install, and things are going ok, till I get to numpy and I start getting errors about a missing .bat files... which turn out to be issues related to a missing C++ compiler... so I start looking into visual studio and install VS2008 and VS2012... none of which actually fix the problem...

so I find on one of the tutorials a recomendation to instead use anaconda, pythonxy or a couple other all-included scientific python packages... after reading a few licenses I decide to go for anaconda, which has a wonderful package manager called "conda", I install the minimalistic version (miniconda_ fire up a command prompt and write a single command "conda install --yes numpy pandas etc.... " (in the same manner i would use yum or apt-get to install on the linux side...)

what i learned from the story.... Windows is friendly, as long as you stay within the script... once you start trying to play with non-microsoft-approved tools... things get a bit too painful...



PS...
I also found that there is no OpenMPI for windows!!! so no multiparallel processing unless you write to their own little proprietary controller which happens to be available only on the server version of Windows!
 
I would rather say that it is the overhyping of the open-source crowd who trumpets their ware to be cross-platform. Cross platform means you install it and it just works, thats what I am used to when I install a Windows app on my Windows machine. I am not surprised you have tons of issues with apps that were not designed to run on Windows machines. Please do not blame it on Windows if the Python crowd cannot design functional packages and libraries that work on Windows machines.

No multi threading and parallel processing in Windows? That statement alone made me smirk ;-) Some of the currently world's best parallel processing libraries are written natively for .Net not even C++ (I can currently only come up with a very small handful of dialects/languages that manage multi threading better than .Net core [in tandem with add-on libraries like TPL Dataflow] such as Erlang).

Native C++ in Visual Studio offers Parallel Patterns Library (PPL)and Asynchronous Agent Library. PPL is portable (cross-platform). Corresponding .Net parallel extensions TPL and PLINQ offer the same for managed code in .Net
 
I would rather say that it is the overhyping of the open-source crowd who trumpets their ware to be cross-platform. Cross platform means you install it and it just works, thats what I am used to when I install a Windows app on my Windows machine. I am not surprised you have tons of issues with apps that were not designed to run on Windows machines. Please do not blame it on Windows if the Python crowd cannot design functional packages and libraries that work on Windows machines.

No multi threading and parallel processing in Windows? That statement alone made me smirk ;-) Some of the currently world's best parallel processing libraries are written natively for .Net not even C++ (I can currently only come up with a very small handful of dialects/languages that manage multi threading better than .Net core [in tandem with add-on libraries like TPL Dataflow] such as Erlang).

Forrester analyst Jeffrey Hammond

"The real world isn't black and white -- and there are open-source companies that sell proprietary software (e.g., Red Hat) and proprietary companies that use OSS to augment their commercial software and make it more attractive. As developer adoption of open-source software has grown to the 70 percent-plus level, I think most business units at Microsoft realized that treating it like 'a cancer' was self-defeating -- they lost that battle a long time ago."

http://www.cnet.com/news/dead-and-buried-microsofts-holy-war-on-open-source-software/
 
The thing is that windows has no package manager... no tool that you can just tell, install this or install that... so when you install a piece of software and there are missing requirements (like compilers) these dont get automatically taken care of... this is a basic functionality of all the UNIX based OS that happens to be missing from windows for some reason...

I ended up finding an open source solution to the problem (anaconda) which happens to work like a package manager for windows...


I would rather say that it is the overhyping of the open-source crowd who trumpets their ware to be cross-platform. Cross platform means you install it and it just works, thats what I am used to when I install a Windows app on my Windows machine. I am not surprised you have tons of issues with apps that were not designed to run on Windows machines. Please do not blame it on Windows if the Python crowd cannot design functional packages and libraries that work on Windows machines.

No multi threading and parallel processing in Windows? That statement alone made me smirk ;-) Some of the currently world's best parallel processing libraries are written natively for .Net not even C++ (I can currently only come up with a very small handful of dialects/languages that manage multi threading better than .Net core [in tandem with add-on libraries like TPL Dataflow] such as Erlang).
 
Forrester analyst Jeffrey Hammond

"The real world isn't black and white -- and there are open-source companies that sell proprietary software (e.g., Red Hat) and proprietary companies that use OSS to augment their commercial software and make it more attractive. As developer adoption of open-source software has grown to the 70 percent-plus level, I think most business units at Microsoft realized that treating it like 'a cancer' was self-defeating -- they lost that battle a long time ago."

http://www.cnet.com/news/dead-and-buried-microsofts-holy-war-on-open-source-software/

Microsoft is the cancer of the world. The world is handcuffed by Microsoft and the world needs to remove the handcuffs and use an open-source operating system.
 
Take a look at OpenMP (the most prevalent C++ parallel programming API) and compare that with the performance and ease of use of TPL Data Flow, Rx, Task Parallel Library and then tell me which one takes a fraction of the time to develop parallel and multi threaded code in at equal performance metrics. Dr.Dobbs showed in 2013 that you can sit the world's top C++ and C# coders side by side and have them code up their best devide-and-conquer algos and the C++ engineer would not be able to come up with a significantly faster algorithm and that only at a multiple of time it would have taken the C# coder to write and test the code.

Native C++ in Visual Studio offers Parallel Patterns Library (PPL)and Asynchronous Agent Library. PPL is portable (cross-platform). Corresponding .Net parallel extensions TPL and PLINQ offer the same for managed code in .Net
 
The danger I see with a lot of the scripting languages, and I include R and its various packages in that, Python, Ruby, ... is that you have people plucking away at libraries they have never thought about nor developed themselves; often times with questionable or completely lacking backgrounds in mathematical and statistical training. Nowadays everyone with a 70 IQ and larger can call himself a "quant" just because they were able to kickstart Python and the numpy extensions and run couple functions they never every thought about. The danger of open-source in general is that it does not require people to think carefully anymore. At least when you have to pay for what you use , most run a careful analysis of the trade-offs and how it benefits their projects.

Open-source is great for those who generally apply a keen interest and attention to details in whether a specific project solves their problems or not. But from own observation the percentage of those who really apply a discerning mindset is relatively low. I would always recommend a total beginner to learn an OOP language than a scripting language because it forces critical thinking and requires to think in terms of core algorithm levels. I do not see the same level of rigor applied by most who peruse Python or R, among other scripting languages because a) a lot beyond core functionality does not even exist, and b) a lot of the core/grunt work is already done, all that is left is to apply what already exists. One could say it offers efficiencies and a lower learning curve but I would argue that the same arguments are disadvantages when wanting to learn how to merge computer science and trading. Sure, if time was not a constraint I would always opt for C/C++ but I just found C# to strike the optimal balance. I concede that is my own personal view and I have the freedom of choice because I run my own company and am not forced to adhere to anyone else's standard of practices.

Forrester analyst Jeffrey Hammond

"The real world isn't black and white -- and there are open-source companies that sell proprietary software (e.g., Red Hat) and proprietary companies that use OSS to augment their commercial software and make it more attractive. As developer adoption of open-source software has grown to the 70 percent-plus level, I think most business units at Microsoft realized that treating it like 'a cancer' was self-defeating -- they lost that battle a long time ago."

http://www.cnet.com/news/dead-and-buried-microsofts-holy-war-on-open-source-software/
 
Back
Top