Page 1 of 1
Does NT outperform TS optimization?
Posted: Tue Aug 28, 2007 3:50 pm
by cmehh
Hi Guys,
I am a long time TS user, but getting more and more unhappy with their package. My main concern is the average speed of an optimization.
I understand that a couple of you have switched from TS to NT and I am hoping that you can share some information with me.
I have heard from a friend that he has bad experience with the NT backtesting speed (lagging a lot behind TS), but I am guessing that he missed something.
Any help or numbers (like optimizing a standard system macd crossover for example, on a couple of days intraday averages xyz minutes) are highly appreciated.
Thanks a lot for your help and guidance.
cmehh
Posted: Wed Aug 29, 2007 2:22 am
by dbw451
Hi cmehh,
I've never used NeoTicker so I cannot comment. I have built several systems in TS and understand your backtesting speed pain. For backtesting, I use AmiBroker because it's backtesting speed runs circles around TS. I coded a simple MACD crossover system in AmiBroker for a speed test:
Buy=Cross( MACD(), Signal() );
Sell=Cross( Signal(), MACD() );
Short=Cross( Signal(), MACD() );
Cover=Cross( MACD(), Signal() );
I executed the above system on 3 months of 1 minute YM futures data (3/6/06 to 6/5/06, market hours only). The backtesting execution results were:
execution time: < 0.5 sec (my best guess is about 1/3 a second)
trades: 283
Also, my computer is 5 years old (2.4 ghz) running Win XP pro. Newer processors would have better performance.
I would also be curious to know about the speed of NeoTicker (and Ninja Trader and OpenQuant - all three of which use .Net/C# for scripting).
Regards,
David
Posted: Wed Aug 29, 2007 12:19 pm
by dbw451
cmehh,
Since my execution time on my last post was sub-second, I decided to iterate the backtester 1000 times. I parameterized the MACD fast and slow variables and made them Optimization variables. AmiBroker's backtester iterates over optimized variable values. I set it up where the MACD fast is 50 increments and slow is 20 increments making 50 * 20 iterations (i.e. 1000 iterations). Here's the AB code:
fast = Optimize("fast",12,5,54,1); // try 50 different values for fast
slow = Optimize("slow",26,10,67,3); // try 20 different values for slow
dMACD = MACD(fast,slow);
dSignal = Signal(fast,slow,fast/2);
Buy=Cross( dMACD, dSignal );
Sell=Cross( dSignal, dMACD );
Short=Cross( dSignal, dMACD );
Cover=Cross( dMACD, dSignal );
The execution time for 1000 iterations was 80 seconds. That averages to 0.08 seconds per iteration over the same 3 months of 1 minute data. If I multiply that by 4, that would estimate a speed of 0.32 seconds per 1 year of 1 minute data.
Regards,
David