Quote from hftvol:
So, after you vectorize your back test how are you gonna handle conditional branches? You basically can only vectorize what is repetitive. Anything else you need to loop through. By the way I process backtesting code inside loops at a rate of about 5-6 ticks per second which pretty much blows away any vectorized code you could write in amibroker or R or matlab. I heavily peruse concurrency and parallelization an I run everything in C#. I have not even hit the ceiling I could easily outsource certain matrix computations in some of my correlation strategies to a GPU. So much to c# not being up for the task.
'Quote from hftvol:
So, after you vectorize your back test how are you gonna handle conditional branches? You basically can only vectorize what is repetitive. Anything else you need to loop through. By the way I process backtesting code inside loops at a rate of about 5-6 ticks per second which pretty much blows away any vectorized code you could write in amibroker or R or matlab. I heavily peruse concurrency and parallelization an I run everything in C#. I have not even hit the ceiling I could easily outsource certain matrix computations in some of my correlation strategies to a GPU. So much to c# not being up for the task.
Quote from hftvol:
why did you leave out C#/.Net? Its extremely fast to develop, soon the number of libraries for C# will surpass those available in C++, if it has not already.
Quote from comintel:
In those cases where backtesting is about massive iteration, maybe C# is better.
But I do not think backtesting should always be about massive iteration.
Rather, I would prefer to test just a few ranges of parameters and explore the statistics of the results.
Quote from vicirek:
C++ still rocks and with new VS2012 you have access to C++ AMP which lets you use GPU accelerators that nicely integrate with VS.
I guess that C++ AMP will be available in C# environment few years later.
Anyway any of the .Net IDE is best suited for fast development and project management is the best in its class not mentioning that applications perform extremely well in terms of speed.
I do not even know why people would venture into other languages except for those who do not want to use Windows platform or develop cross platform applications.
Quote from hftvol:
When I develop new strategies I make a clear distinction between
* profiling ideas
and
* rigorously testing ideas
I use R/Matlab very extensively for profiling purposes. If an idea looks palatable then I will move to the next stage and run massive (hundreds of millions of tick data) back tests in my C# testing framework. The framework is 100% identical to the live trading systematic architecture with the only difference that the historical data feed is located in-process with the strategy engine in order to avoid an extra serialization/deserialization step otherwise needed to send messages IPC to other modules. Also the execution engine (which incorporates a fill simulator) is in-process when running historical data for the same reason.
There is no way a solution in Matlab or R would even come close to -performance-wise. Even when running Matlab in parallel mode it still cannot reach the throughput I see in my engine. I tested it and that is my experience.
But whatever suits others, use it! Someone was correct in saying that one should use those tools that one is most proficient in and feels most comfortable with. Hard to beat that.
Quote from comintel:
Perfect! I think we would all admire your approach and agree with it!
I have the impression that the original poster is only at the stage of profiling ideas. If I am right, R could work well for him at this stage.