Geting Started with Backtesting Software / Languages
It's time for me to get into backtesting / automated trading and generate some quantitative ideas.
I am fairly technical and have decided I'm happy to learn to code (I'm not a total stranger, e.g. can write SQL, VBA, etc) but:
- I'd like to learn a language that will pay some real benefits down the track, e.g. C# or Python
- Having said that, people might suggest it's still better to start with, for e.g. Amibroker and their language to "make a start" and "generate some momentum" before freaking myself out with a real language!? I'm open to that
Where should I start ??
- Mostly EOD strategies for STOCKS and I need PORTFOLIO TESTING capability
- I want to develop skills in a language / software package that is going to be around for 10 years - as much as possible, I'd like to make an informed decision from the start and not have to learn something new in a few years (?)
So far I've seen: Amibroker; Multicharts; NinjaTrader; TradingBlox; TradeStation; TradersStudio; TradingBlox; and what appear to be the new generation (?) Quantopian and Quantconnect ...
I like the idea of getting into Quantopian and learning Python, but maybe I'm trying to bite off too much to start with?
Would it be wiser to start with Amibroker and build the basics, then move over there?
Any advice on how to make the decision on which way to go? I'm fearful of the potential time-wasting here if I get this wrong. I've only been on this for a few days, but liking the idea of Quantopian or otherwise Amibroker to start with, and take it from there ...
there are number of tools, data sources, and languages and packages that allow you to 'model' and test an idea.
there are a number of tools/platforms and languages you can use to implement a proven idea.
I think it is difficult to find a 'catch' all.
While python allows you to do RAD and validate and test idea's. C++ will allow you to code production grade high performance modules. I know some people will not agree, but that is my idea. If you don't know C++ then C# might give you results with lower entry (c# will protect you against yourself, C++ will not), you can compare it with ABS/ESP on your sportscar ;-)
The following 3 users say Thank You to rleplae for this post:
For me, it boiled down to how much time you want to invest in slinging code vs. implementing strategies to test. I dabbled for a year or so a long time ago with Metatrader/MQL4 (since it's syntax was very "C-like"), but ran up against platform limitations that pushed me towards NinjaTrader and MultiCharts. While I liked NT initially, I was able to develop & test a lot more strategies MUCH more quickly with MultiCharts (in EasyLanguage) than with C#, so ended up going the MC route for the past 4-5 years.
With a few hundred strategies under my belt (pretty much tested "everything" ), one gets to the point where they realize that nothing works "all the time", but a FEW work "most of the time" (until they don't) and it becomes critical to deploy a decent set of money management (and strategy selection) rules along with your buy/sell/pattern matching logic.
I'm now at a point though where backtesting with MultiCharts takes too long so I'm building out my own platform with R & Python that takes better advantage of multiple core processor/servers. If you're in it for the long haul, you'll most likely end up bumping up against similar limitations with most retail packages at some point and will end up rolling your own since backtesting optimization (e.g. using cached "bars" and per-bar calculations vs. generating each time) can save a boatload of testing time.
The following 2 users say Thank You to Fu510n for this post:
Thanks Guy, that's awesome. I'm comparing RightEdge and MultiCharts.NET at the moment. Or possibly even start with MultiCharts (easy language) and upgrade into the .NET C# environment later... Although my thinking was to not waste time with a custom language and just get to work (slowly is fine) with a real language that will serve me better in the long run. Hence C# or Python. Apart from Quantopian, I'm not sure who else uses Python, so that has me comparing MultiCharts.NET and RightEdge at the moment (C#).
I'm considering 'fast-tracking' my progress by employing help in the coding at the early stages too ... Let me know if you know of anyone? It's going to be a long-term decision to slowly try and get more automated in my trading, so I have realistic expectations and just want to make an informed decision from the outset so that I have a platform that will see me through for a number of years - while also teaching me to code.
I have used the trial version of TradingBlox in the past to test variations of the Turtle strategy on futures. When I tested it, it was one of the few (if not the only) backtesting suites that did portfolio-level backtesting and I believe it was also the first suite to fully use multi-threading. I have not used a lot of other backtesting engines, but TradingBlox backtested the Turtle System (10 years of data) on an old P4 2.4Ghz pc instantaneously. I never needed to learn the coding language, but most people find it pretty easy.
The biggest con with TradingBlox at the time was that it could not implement any autotrading strategies. Orders were exported into a file at the end of the day, and that file could then be submitted to brokers, but this was not really what i was looking for. However, if you just base your trades off EOD data, then this could work for you.
The following user says Thank You to grausch for this post:
I hear that Amibroker is also very fast. I think the top packages out there are the moment include: TradingBlox, TradersStudio; Quantopian and Quantconnect for web-based tools with free data; Genovest; OpenQuant; Quantshare; Trade Station; etc ... BUT, I would REALLY like to learn C# or Python (for other reasons) so if I can get a package that uses that - even better.
RightEdge and Multicharts.NET are what I'm looking at presently ... Not that I have time or the expertise to literally test-drive them all ... Hence these posts : )
Last edited by waverider; August 9th, 2016 at 04:57 AM.
The following user says Thank You to waverider for this post:
In Amibroker you can use general purpose languages such as C/C++, .Net, .. too.
As for AFL here AFL (and C) | Unofficial AmiBroker Users Forum (3rd party) are some collected quotes by Tomasz Janeczko. AmiBroker is not a "starter" software, it is a fully fledged professional software. It has more capabilities than other softwares (being more expensive).
The following user says Thank You to prouser for this post:
Can anyone comment on using MultiCharts for Stock Scanning?
I'd like to replace my current scanning software (Beyond Charts) with software that does Scanning AND Back-Testing.
For scanning I'd like to:
- Have easily configured watchlists (ideally, the data provider (like Premium.net) provides nice lists with their data - like 'S&P500'; 'S&P1500', and so on. I can also then customise / merge / amend these to create a distinct watchlist of stocks that I will scan every day.
- EOD data only. My current software automatically downloads all EOD data whenever available, so when I wake up in the morning, turn the computer on, the downloads complete, then I just have to hit "scan". Don't suppose MC is this effective?
- Because data is already downloaded, scans are very quick.
Can I do all this with MC? What about other platforms? Can MultiCharts.NET be used to build customised modules to do these things?