Choosing a good platform for strategy modeling, simulations and signal generation is critical. The bleak reality is that most back testing software is horribly bad. They are geared towards consumers with limited knowledge and experience and they cater to what your average get-rich-quick technical analysis guru claims that you need. I’m often asked for my views on simulation platforms, and in this post I’ll show you my own perspective and choices.
Non-coders need not apply.
Forget about drag-and-drop system building. That’s not how you make real trading models. If you’re not prepared to learn simple programming to construct your strategies, so you can understand and control every detail, then you probably shouldn’t be doing this at all. You don’t have to be an expert programmer, but you do need to be able to write a bit of code. Let me say that again.
If you are not willing to learn about coding, you should give up all efforts to enter the field of systematic trading.
This is not rocket surgery. Learning enough programming is not that difficult, assuming that you’re of average intelligence or above and not afraid to crack open a book. There was a time when professionals thought themselves too good to learn how to type. Why would a lawyer type? He’s got a secretary. The Mad Men days are in the past and a lawyer who can’t type properly is now reduced to a big helpless baby. Learn how to code. Just do it.
What’s important in a simulation platform?
We all value slightly different things. This article is of course written very much from my own point of view. I value flexibility.
Most consumer level platforms draw a very narrow box around you. They won’t let you do anything outside of that box. They assume that you want to do a minor variant of some standard system and nothing else. They’re not for professional use.
A big problem with these consumer grade platforms is portfolio level logic. Most don’t have it. Some have it, but just as a horrible after-the-fact implementation they slapped on top of an old platform just to get Portfolio in as a marketing check box.
The development architecture and environment is very important as well. The more they simplify it to cater to lazy people, the worse the platform tends to get. I have a severe allergy against proprietary scripting languages and closed platforms.
Here’s what I want to see:
- Industry standard development language. Not “C-style environment” or some other way to say that you have a closed scripting syntax which vaguely resembles a real language. I want the real deal.
- My preferred language is C#. Not necessarily because it’s best, but because it’s certainly good enough and if you’re in an all Windows environment it’s a great language to standardize on.
- Extremely open architecture. I want to be able to do absolutely anything. Things that never even occurred to the people developing the platform. I want to be able to change or add any functionality I like. I hate being boxed into a corner when coding. Nobody puts Clenow in the corner.
- Infinite possibilities. Didn’t I just say that in the last point? Yes, but it’s worth saying again. I want to be able to make and plug in dll’s for anything. New visualizations, data adapters, broker adapters, database connectivity etc etc.
- Proper portfolio logic. This is rare in affordable platforms. The ability to back test trading models on thousands of instruments, as a real portfolio. This should be done the proper way, in the proper order. More on that later…
- Currency handling. Most platforms assume there’s only one currency in the world. The United States Dollar. If you trade instruments across multiple regions, this assumption breaks down fast.
WealthLab versus RightEdge
I’ve mentioned WealthLab and RightEdge in the past. They are both pretty good, but my preference clearly lay with RightEdge. I like them because they are both based on CLR, which means that you write proper C# code. They can can both be extended and modified by plugging in your own DLLs. They can both do portfolio level simulations, though they differ in the implementations. Despite the apparent similarities, they are very different to work with.
WealthLab is user friendly. Chart manipulations is easy. Making a first simple system doesn’t take much time. It feels like a comfortable environment. The documentation is good and there are plenty of samples you can work from. If you make mistakes, you tend to get quite polite error reporting, making it easy for novice coders to debug.
RightEdge looks like a compiler when you open it. That’s because it basically is a compiler. If you’re not used to a compiler, this can feel like you’ve just been parachuted into the jungle. There is definitely a steeper learning curve to get started with RightEdge.
Before you can really do anything, you need to get your data into the application. Both platforms of course come with some default adapters to get data from various free sources. For professional use, you’re likely going to want to get data from some custom source though. After all, you can’t rely on Yahoo data and such for real life use.
The good news is that it’s quite easy to build data adapters for both platforms. No real difference there. There are samples available that you can modify. Essentially, you make your own DLL in Visual Studio that implements their interface. There will be an interface similar to (pseudo code): Public DataSeries GetTheData(Symbol, StartDate, EndDate) and you just put your own code that to scurry off and fetch from your database or whatever source you prefer. Easy.
A key difference however is what happens to the data after your DLL provides it. WealthLab will ask your DLL for a fresh data delivery every time the application needs it. Every time you open a chart or run a simulation, your DLL will be bothered.
RightEdge on the other hand has it’s own optimized data storage. When your DLL returns the data, RightEdge will put it in that data storage. When a chart is requested or a sim is performed, RightEdge will get the data from there. Faster, more efficient, but could lead to data duplication and maintenance issues.
My solution is to flush the data storage daily and replace with fresh data from my primary source (my in-house MySql). That avoids issues of data duplication and discrepancies. I do this with simple scripting, using a good old bat file.
Writing your own data adapter does require some basic C# knowledge. Just. Learn. It.
Here we start hitting the first weakness of WealthLab. The architecture of WealthLab is clearly not built for portfolio testing. It’s very obvious that this was an after thought. WealthLab processes one instrument at a time, going over each day for that instrument before moving to the next instrument. This is not how the real world works. It has the unfortunate implication that the trading logic itself is totally unaware of anything happening to other instruments. It doesn’t know the current portfolio holdings or even portfolio value. How could it, since all instruments are not processed yet.
WealthLab iterates bars in a for/next loop. This will likely shock programmers. Here’s how the process works for WealthLab:
protected override void Execute()
for(int bar = 1; bar < Bars.Count; bar++)
//process each bar
Yes, this does seem quite primitive…
RightEdge on the other hand has a correct and modern implementation. It’s event driven, processing each bar as it comes in. This works the same way whether you use static daily data or dynamic intraday streaming real time. The RightEdge way looks more logical. NewBar is called each time a new bar comes in, whatever the frequency might be.
public override void NewBar()
This also means that WealthLab has a dangerous potential for data snooping. When you’re in that loop, you have access to all data. You could just read the whole series. If the variable bar in the for/next loop above is 5, you could still check out what bar 6, 7 or 500 holds. You can read the future. You can also trade the future in WealthLab. Or the past.
RightEdge is not aware of any data that you would not be aware of in reality. When NewBar comes in on June 10, 2011, you have no way of accessing the data as of June 11. You also cannot trade on past prices or on future prices. You can trade now, or you can set limit/stop orders. Like in real life. This avoids the all too common mistakes of trade on information that was not available in reality.
All position sizing algos shipped with simulation platforms are bad. Don’t use them. Building your own is not that difficult. Well, it is in WealthLab.
Let’s say you want to do some simple portfolio level sizing algo. Take the classic ATR sizing, Turtle style. Easy math. You just take the current ATR as a proxy for vola and size your position to have a certain portfolio level risk. There’s only one problem. For this simple calculation, you need to know the portfolio value. Now, obviously, the way that WealthLab iterates one instrument at a time, your code won’t have access to that information. At the time when your code makes a trade, it hasn’t processed other instruments and therefore the portfolio value is unknown.
WealthLab first iterates all instruments as shown above, registers when we’re supposed to buy and sell, and first when it’s done with all of it, it goes back to figure out how many shares/contracts to buy or sell. Ugly.
In WealthLab you have to make your own position sizing DLL. Yes, you are unable to properly change position sizes in the application and you have to program your own DLL in Visual Studio just to set position size. Quite a mess, isn’t it. I made a volatility adjusted position sizer a while ago and published with full source code here: http://tradersplace.net/store/volatility-based-position-sizer-for-wealthlab/
So what about RightEdge? The same thing that needs to be done in a complex plugin DLL for WealthLab can be done in a single line of code for RightEdge. No need for ugly workarounds, since RightEdge implemented the data engine right from the start.
long numberOfContracts = (long)(Math.Max(1,SystemData.AccountValue * _riskFactor /
(_atr.Current * _point_value *
SystemData.AccountInfo.GetConversionRate(Symbol.CurrencyType,SystemData.AccountCurrency, QuoteType.Last) )));
If you want to do serious simulation work, you need to account for currencies. And I don’t mean trading currencies, I mean currency attribution. If you deal in international equities, you’ll have a currency exposure on open positions in foreign markets. For futures it’s less of course. There you only have FX exposure on your open P%L. Still, you need to deal with this problem.
RightEdge does it realistically again. You mark each instrument with the base currency, provide time series for currency translations, set your account base currency and your simulations will be done properly. Sure, the documentation for how to do this is lacking a bit, but it still works fine. Yes, if you bug me enough I’ll write a tutorial for how to use this feature.
As far as WealthLab is concerned however, there’s only one currency. There is simply no way to solve this problem for WealthLab. All your instruments need to be in the same currency, or you’ll end up with a huge but invisible error.
Price and sales policy
WealthLab costs $800 upfront and has a yearly maintenance fee of $150. Compared with many competitors, the pricing is quite far. The only problem is that if you live in North America, you’re only allowed to buy this product if you have an account with Fidelity. That’s quite a severe limitation.
RightEdge is unaffiliated with banks or brokers, and has no yearly fee. It costs only $500 once off. Actually, you’ll get a $50 discount on that if you use coupon code Tradersplace or tell them the magical phrase Clenow Sent Me.
WealthLab is not a bad system for quick-and-dirty modeling. It’s very easy to get something done fast and just try out how it looks. It’s not in my view a good system for heavy duty, real world stuff though.
I’ve tried implementing highly complex models on both platforms, and it’s very clear that WealthLab is struggling both in terms of functionality and performance.
Here’s an example of a strategy that I run daily on RightEdge:
- Equity momentum stock picking model.
- Considers over 4’000 stocks across all developed nations, including delisted stocks.
- Checks for which stocks are part of a given index constituents list on any time and only trades those.
- Ranks all stocks that were in the index on a given trading day on a complex set of criteria.
- Implements strata logic, keeping track of which stratum a stock is part of, based on the ranking.
- Sets portfolio limits in terms of strata, geographic allocation, sector allocation etc.
- Automatically constructs a realistic portfolio of the very best stocks, within the allocation constraints set.
- Constant rebalancing of risk and adherence to allocation constraints.
Doing this in RightEdge took some time and coding, but there were no technical issues. In WealthLab, I ran into a wall quite fast. Several walls. In the end, just to get a second platform going, I had to put much of the logic inside a database server, as WealthLab just couldn’t handle something like this.
Do I get paid for peddling these platforms?
No. At least not yet.
I contacted both companies to see if I could make a deal with them. I was recommending them anyhow, so why not. My suggestion was that they offer a discount to people I refer to them and that they give me a little something in return. Daniel at RightEdge quickly agreed and offered a $50 discount for users who enter my coupon code ‘tradersplace‘ when ordering. I get the same amount myself. So far, no one actually used that coupon code. I know that people bought after I recommended them, but so far they all forgot to enter that code… Oh well.
And WealthLab? Well.. they are a bit larger organization and that can be seen in their responses to such requests. It took a couple of months for them to get back to me, and then they came with a counter suggestion. They proposed that I change my business model. They suggested that I become a full time online seminar provider, doing training sessions on how to use their software. Hm.. Well, it’s good to know that I have options in case I blow up my hedge funds.
If you want to be a part of the systematic trading field, get things done right. Don’t make half assed solutions. WealthLab is a good gateway drug to get started with, but RightEdge is the good stuff. Having two platforms is not a bad idea if you have the time and patience for it, but if you go with one my suggestion is RightEdge.
Creativity is important in this field. Coming up with a hair brained idea and testing it out. Sometimes an oddball out of the box idea might actually lead to a huge breakthrough. If you’re stuck with a simulation platform that doesn’t allow you to be fully creative, you have a problem. Then you’re stuck implementing stone age technical analysis models.
Thanks, really worthwhile – I’m at the early stages of looking into this – do you have any opinion on http://www.quantconnect.com or http://www.ninjatrader.com/?
I hear good things about NinjaTrader, but I never used it. I should probably take a closer look soon.
I’m not so sure about QuantConnect though. What is there to gain from moving to a browser? All you accomplish is to lose control and flexibility. It’s neat technology and kudos to the guys who made it, but I don’t see why anyone would want to use such a solution.
Hey Andreas, Why use QuantConnect?
– We have 15 years tick resolution data FX and equities and are growing this library all the time. And its free.
– We have a massively parallel cloud stack allowing you to backtest 5-10 years of tick data in minutes vs days. Allowing iterations faster than ever before.
– Its native C# – infinitely extensible and powerful. There’s zero language limitations unlike Ninja or Tradestation. No way to loose flexibility.
– We have hundreds of open sourced algorithms people are sharing to the community for others to learn and grow from.
– We provide it all for free and are looking to monetize from trading revenues with brokerages.
– We do introductions to partnering hedgefunds when people generate strategies with over 3.0 sharpe and less than 5% drawdown. Scale your strategy once you’ve got one working for maximum profit.
– We are algorithmic traders and have made every beginner mistake possible before our strategies started making money. Given this and given quants spend 90% of time building engine when they should be focused on their strategy we believe we can help people get to market faster.
You have 15 years of tick data? Hm.. That’s actually pretty significant.
Tick data access is usually out of reach for non-pros due to the costs and the difficulties of making a proper setup for tick level analysis.
Can you share where the data comes from? Cleaning tick data can be difficult as you know, so it would be interesting to know who’s supplying it to you.
For the tick data, I’ll add you to the Sites I Like here.
As I mentioned to you before, Jared, I like what you’re doing. I have still have some reservations about moving to a browser, but I’m not really your target audience. It might be a good platform for others.
Just out morbid curiosity: If your platform really has zero language limitations, and it has all this very valuable tick level data, what’s stopping me from writing a ‘trading system’ which actually just dumps your tick database to my own server?
Thanks Andreas, we provide list our sources here: https://www.quantconnect.com/data We have tick-trades time-stamped to the nearest second, and trade-bars at second and minute level for all 16,000 equities (no survival bias).
QuantQuote has proprietary algorithms for cleaning data – they pre-clean it and give us the tools to backward adjust the data for splits and dividends.
Re-curiosity – it is a concern and we’ve had to shutdown a few accounts. We monitor traffic and logs, and suggest signing up with real identities but thankfully people have had a lot of integrity.
Damn you for forcing me to question my comfortable preconceived notions, Jared! I was perfectly content with dismissing your solution from the outset.
I’m not your target group, but I’m starting to think that your solution could actually be very interesting to many people.
Here’s what I see now:
Your primary selling point is, or should be, the data access. Apart from us hedge hogs, very few people have access to tick data or properly dividend adjusted data. (splits and corp actions are easy)
Being able to model in such an environment could be very valuable to serious people who want to break into the business, hobby developers, smaller trading firms and even for larger firms as a sandbox environment.
If your environment actually allows for data theft, from a technical perspective, then it does seem quite flexible. I had of course expected you to say that this was not possible, and thereby negating your previous statement about zero limitations…
Ok, Jared, you’re starting to convince me that QuantConnect might actually be really good.
Andreas – thanks very much for the detailed, authoritative and occasionally humorous comparison of RightEdge to WealthLab. It was well done. As someone who’s struggled recently to evaluate both platforms armed with only anemic coding skills, your evaluation is much appreciated.
Your focus on RE’s edge (pun intended) in handling portfolio-level simulation is key; This may explain, for example, why I got different results on RE and WL running two identically constructed trading systems using the same data and matching money management rules. The difference between them was only 20-60 basis points — but still, enough to make you worry that something’s not right. Thanks for explaining what’s really happening under the hood.
Also, I noticed something else strange with WL — if you run the same exact system several times in a row, you’d sometimes get different simulation results.
Yes, it’s true that the Philistines out there (including me) without, yet, good C# coding skills will be unable to leverage RE for anything other than very basic systems testing. However, I’m guessing that many out there would still prefer to bypass WL altogether and use RE as their primary systems testing environment — even as their coding skills progress.
One bright spot is how RE ensures that system testing code is the same — whether you’re creating in drag and drop, or in a .Net language. This allows a new RE user — who’s struggling to fix a problem using the DnD GUI — to simply plug in and run some custom-built code provided by other RE forum members. In contrast, within WL, I’ve not been able to get this to work consistently.
It remains to be seen if — and when — RightEdge will be able to make its application more user friendly without dumbing down the app’s tremendous flexibility and power. I don’t know if this is actually worth the risk — but if they were successful in this, it would result in a significantly larger user base, which would bring benefits to all.
Separately, I’m taking up a collection to buy Andreas a t-shirt that reads “Nobody puts Clenow in the corner!”. Please contact me for details.
What do you mean, occasionally..?
Haha. Keep your day job(s).
Ha! You think I have a day job!
This is actually expected behavior in wealthlab. It happens when you generate multiple orders at the same point in time but don’t have the equity to execute them all. It then randomized which orders to take. The way you avoid this is to define a ranking for your simultaneous orders then you will get consistent results for each back test .
True. I used to do exactly that when I used RE for equity modelling many years ago. Calculate a ranking value and use that to prioritize trades.
I wish you had written this one year earlier.
I also came to the conclusion as you that most of the SW available does not let you do whatever you want the strategy to do. To make matters worse, I prefer to use Linux which reduces your choices to none.
I started building my simulator, back tester and portfolio management tool using Python and use Pandas (Python for data analysis library) to do most of the coding. So far, so good. I just started incorporating futures, hopefully, I will finish it soon.
However, after reading your article, I feel I have made one mistake. Just like wealthlab, I am running my “strategy” over each instrument over the desired range of date (for backtesting) and then build the portfolio for the instruments which have triggered. I thought this was faster for some reason. Well, it is what it is for now, but I will keep in my mind what you have blogged while building the next system.
Thanks for writing.
Dear Mr. Clenow,
A few months ago, after reading your book, I decided to buy a Matlab license as an entry step, because the home version is quite cheap and there’s plenty of documentation available for developers, which minimizes the risk of getting stuck for a long time, trying to program the tool to do what you want.
RightEdge looks really powerful and suitable as a long term solution, however I found some negative review about the quality of user documentation, so I fear the learning curve might be very steep at the beginning.
In your experience, how is the quality of the developing material with RightEdge? Apart from C# programming issues, when starting from scratch, can you rely just on the user documentation and code examples available on-line?
The documentation is not great, but the bigger problem is in terms of expectations.
Most retail traders are used to being hand held by simulation software. Point and click, quick and easy way of doing things. RightEdge is clearly built for people who are comfortable with a compiler type environment.
RightEdge doesn’t try to teach you how C# works. It gives you an object model and drops you in the deep end. There’s no attempt to guide you as to the differences between using an array, a cue, a stack, a dictionary, IList etc. To be fair, I don’t think it’s the responsibility of RightEdge to teach C#.
There are example systems included as well as sample plugins for various things. It will scare off people who don’t know anything about programming and are not willing to learn, but if you’re familiar with the basics of using Visual Studio, you’ll be right at home.
I include regular code examples in my weekly analysis report as well, with real life type solutions.
Great article Andreas.
I am wondering thought, can you really do anything with RightEdge? Let’s say I want to use some third pary .NET statistical library, maybe run GARCH or something, repeat it multiple times with varying parameters and then plot results as a function of parameters with some third-pary charting library, do some Monte Carlo runs and after that put some sophisticated risk managment on top of all that, optimize parameters for that, etc. Can stuff like that be done with RightEdge? Are options really limitless as long as you know how to code?
Yes, I believe you can do anything. Of course, if you get into the really extreme things, you might end up using so little of the original application that you start question why you didn’t built from scratch…
If you prefer, you can view RightEdge as just a set of libraries. You can do your entire strategy in Visual Studio if you like, just referencing the RE libs. Pick the stuff you want, like the core time series engine, and build your solution around it.
What you’re describing should be possible right in the applications IDE. Either build everything right in there, or make a helper DLL to take care of some duties. I often build these helper DLLs for convenience.
Good. It’s always nice to know that the option is there if needed. Writing your own stuff from scratch can be time consuming and error-prone and is probably not worth it (given the price tag of RightEdge), unless your into, as you put it, really extreme things.
Again, thank you for taking the time to write this up. It’s great to hear how a professional does it. I have sketched out how I would like to develop my system, and I have chosen to at least start with python and associated libraries (free compared to $500) to build my simulation framework. I can easily pull data from a database, code up signals, keep track of positions and manage risk in numpy arrays. Would you still recommend something like RightEdge over a custom framework in python (or matlab if you want to spend the money)?
Also, I thought your book was awesome. Maybe these questions have been answered somewhere already, but I’m interested in hearing more about your background and career progress. Also, it seems as though trend following fees are being compressed and offered more and more as retail products. What are your views on the future of this industry?
Thanks, J. Many hedge funds build their own frameworks from scratch. It makes sense if you have the budget for it. If you’re a retail trader or a smaller institutional trader, it tough to justify the time spend on constructing and maintaining such a solution though.
In terms of technology, I’m quite agnostic. I look for pragmatic solutions only. C# makes the most sense for me in my environment, but there are many valid choices of environments. Consider the time you’ll spend both building and maintaining it though. It’s probably not worth saving a few hundred, unless of course the fun of coding it is part of your motivation.
My background is an unusual one. Perhaps I’ll write some day about the amazing experience and unlikely path I’ve been walking. The story might actually make for a good book, if I would turn out to be capable of actually writing a real book. And for all of you who just fell out your chairs (or cocked your guns) don’t worry too much. I’ll keep your names out of it…
The business is changing for sure. Most importantly, regulations are creating huge entry barriers and knocking out small players. Strategies are getting more complex as assets consolidate with a few large players. Low cost replication strategies are becoming available, putting pressure on single strategy managers. The world is changing and we with it. Those who don’t, go the way of the dodo.
The code ” Clenow Sent Me ” didn’t work! 😉 (So I used tradersplace Instead 😉
Enough jokes. I really like the way you are showing me as after work trader insights in to the work of a pro. It greatly inspires and improves both my thinking and my trading. I hope you will be here fo some more time!
Anyways, I had to move from my old trading software as it was quite limited. Glad I got your book at the right moment, considered both, WL and RE and bought WL because I got easier access to it (user friendly). Still had the feeling though that RE is more “trading”,
I am learning the ropes with C# now … and after reading your article considered RE again – and just bought it. I appreciate much what you already did for smoothening the learning curve with it but if you can afford some time and have further ideas – keep’m coming!
Btw: starting searching for the seccond book by Author Andreas Clenow. As I like the style you write, I bet this will be as great a read as your actual one.
I’ll do some more posts later on about how to make systems and plugins in RightEdge. I also plan to include more full systems and design ideas with RightEdge code in my weekly research report. Did I mention that I offer a weekly research report? And that you can sign up here? http://www.followingthetrend.com/clenow-futures-intelligence/
Oh, I did, huh…
I’ll probably do a second book sooner or later. It takes a long time to write one though… I’m considering venturing into equity strategies with a follow-up book. The complexity goes up significantly in that area, but for some reason most people seem to skip over that. Handling dividends, survivor-ship bias etc opens a whole new can of worms.
A. Loved your book
B. I have a license for Ami-Brioker that I have let expire and am contemplating the upgrade. Do you have any insights to possible short comings of that platform? Would this product be a comparable to WealthLab for a back up to RightEdge?
Thanks in advance for your response.
Thanks, Brian. I never used AmiBroker, but I know some people who do. Nick Radge (https://www.thechartist.com.au/) for instance loves it.
My understanding is that it uses some proprietary scripting language, and for me that’s a deal breaker. It might not be for everyone of course, depending on what you need.
I never used it, so I might be wrong here, but it seems to me as if AmiBroker is a pretty strong platform. The core weakness is likely that it seems to be a closed platform, which triggers an allergic reaction for me. If anyone reading this has interesting experiences to share, please chip in.
I got your book, just starting to read it. Any thoughts on developing on Seertrading, Multicharts, Tradestation, Ninjatrader, Trading Blox or Trade Navigator?
Also, what is the name of the hedge fund you manage?
I’ve got limited experience of them. You can’t try them all, or you’d spend all your time learning and testing new platforms.
Seer Trading: Never heard of it. R integration seems interesting though. The native multi system simulation seems interesting as well. Seems like you have to use FXCM or IB though, which is a huge negative.
TradingBlox: Seems to have very good functionality built in. Too closed platform for my taste. Extremely overpriced. Who pays $4,000 for retail trading software?
MultiCharts: Looks quite interesting. Over priced, but a little less extreme than TradingBlox. Hard to tell from the docs if it can do complex tasks or not. Built in Bloomie real time adapter is a nice extra.
TradeStation: Last time I used this, admittedly some years ago, it was strictly low end retail. I’d be very surprised if they managed to enter the field of complex portfolio simulations.
NinjaTrader: Seems ok and I know people who use it. A worrying phrase in the docs is “C# based NinjaScript”, which makes me worry. Either its real C#, or its a proprietary scripting language similar to a real language. And I’m allergic to scripting languages.
TradeNavigator: Never heard of it. Doesn’t look promising from their own marketing: “Unlike other analysis platforms that use Pascal, C# and Java, Trade Navigator uses English and simple math symbols to allow for easy implementation of strategies”. That seems to say “We think you’re an idiot who don’t understand computers or simulations”.
My funds: The only fund I manage that open for new investments is the Globalanced Systematic Fund. I very deliberately avoid mentioning my asset management business on this website, as regulations around hedge fund marketing are getting very strict and I don’t want this website seen by regulators as fund distribution.
I use Trade Navigator and my experience using it has been excellent. I’ve been using it for 2 years now. I do not use overly complicated functions but for what I use it for it has been fantastic. I am technical trader, use of EMA’s and support and resistance in the futures, forex and CFD markets.
I know one of the best futures traders in the world ( Peter L Brandt) uses their platform…that’s where I learned of them.
Hi Andreas, hi all,
1.) Absolutely outstanding book you’ve written, Andreas. Many thanks for writing it.
2.) AmiBroker: When reading the part about Wealth Labs’s portfolio-level testing, you could as well described AmiBroker portfolio testing.
As with Wealth Lab, the portfolio-level testing part has been added late in AB’s development (the old – individual instrument-based – backtester is even still there as an alternative). So as with WL – two separate runs, the first one calculating the entry- end exit-signals within the single instrument’s array (AB is heavily array-based), the second one doing all portfolio-based calculations (position sizing, etc).
Thus, the first run (the one in which your “normal” code is run) has no clue about all portfolio-based variables (equity, cash, etc), the second – porfolio-based – run (that can be accessed via AmiBroker’s “Custom Backtester Interface” – which AmiBroker’s manual regards as “the advanced stuff”, and which is a completely separate part of code within the main code file) has no clue what instruments are or have been processed. So the difficulties come in when a calculation needs information from both of these runs (i. e. position sizing, risk management, etc).
Of course there are ways for solving this. The easy ones are fixed functions like “SetPostionSize()” which bridge the gap between the first & the second run with some simple out-of-the-box position sizing algorithms which are rather inflexible, the more complex ones involve many rather awkward & errorprone workarounds.
If you have a knack for slightly more complex position sizing & risk management algorithms, AmiBroker can be a real pain in the a**.
The favorite sentence from AmiBroker’s developer is that “you can do *everything* with AmiBroker”. While this might be true, oftentimes the process of reaching an often rather simple goal is surprisingly and unnecessarily complicated, error-prone, time-consuming, and in the end frustrating.
On the other hand, primarily because of AB’s heavy use of arrays (generally, you don’t loop through the bars, but rather manipulate the complete e. g. price array of a given instrument with one single function), it’s very easy to code indicators, scans, and quantitative research (the kind Cesar Alvarez or Quantifiable Edges’ Rob Hanna does). But imho it’s really not ideal in the way of efficient for serious portfolio-level system backtesting.
Thanks, Torsten! Excellent write-up on Amibroker.
I’ve got a couple of people I trust who are urging me to try out AmiBroker, so I might have to test it myself. It sounds very much like they’ve landed in the same trap as WealthLab though.
One thing that puzzles me is that people I trust are claiming that AmiBroker has a built in method for only considering stocks that were part of a given index at a given date back in time. Taking historical index constituents joiners/leavers info into account. I’ve got a pretty complex solution for that myself, so I’m quite curious if this is really solved by Ami.
The position sizing and risk management mess created by the dual run hack makes it a non-starter for heavy duty work though. Still, from what I hear, it sounds like a good competitor to WL. I’ll have to give it a spin soon.
Funny enough, I replied to a thread on LinkedIn recently about C# trading platforms. A guy working for WealthLab quickly jumped in, assuring everyone that with their platform you can get rich in no time by spending just five minutes every evening at the computer. Amazing that they don’t just fire people dumb enough to make such claims in public. It reflects very poorly on their organization.
Historical index constituents: Yes – but it’s not really a build-in functionality of AmiBroker. I guess your friends are using the Norgate Premium Data database ( https://www.premiumdata.net/ ) – which currently is the database of choice for AB users (as it’s of good quality & nicely integrated into AB).
While the version of the database offered on Norgate’s site (v3.x) doesn’t have the historical index constituents functionality, the non-public alpha version of v4.x does (plus some more improvements). Norgate’s developers have written a plug-in for AmiBroker which adds a couple of historcial index constituents related new functions to AB’s scripting language (AFL).
While this version has been labeled “alpha” for several years now (don’t ask me why), generally it’s working pretty well. As a Norgate subscriber, you can just send them a message about being included as an alpha tester.
Speaking of Norgate, RightEdge sounds pretty promising, and I really would like to test-drive it sooner or later with Norgate’s database. But in order to do that, I obviously have to code a data plug-in. And coding plug-ins generally sounds somehow intimidating. While I’m sort of confident that I can learn C# (I coded assembly language as a hobby as a teenager), in order to play & learn with RightEdge, I need something to play with, i. e. data. For which in turn I need a data plug-in… Additionally, I guess one has to solve that historical index constituents thingy by oneself, as there’s no related plug-in for RightEdge as there is for AmiBroker (yet?).
Regarding AmiBroker, in order to get an overview of its concepts, you could just read the following pages of its manual:
Understanding how AFL works [concept of arrays in AB]:
Back-testing your trading ideas:
Pyramiding (scaling in/out) and mutliple currencies in the portfolio backtester:
Interesting, thanks. I’ll take a look at Norgate as well. My current data sources are priced beyond reach for retail traders and I’ve been searching for a good equity data provider accessible to retail.
As for plugins, data providers etc: RightEdge comes with enough sample code for most people to figure it out. Of course, you’ll need Visual Studio to make the compiled DLLs. If I like the Norgate data, I might even make an adapter and publish the code here. I’ll check with them if they have an API for the historical constituents data. Should be easy to make a RightEdge adapter for that too.
In my current solution, I’ve made a RightEdge indicator that shows 0 for days where the stock was not part of the specified index and 1 if it was in. The indicator queries my MySql db in the constructor and builds a time series out of it.
Ah, I think I found the Achilles heel of Norgate. They don’t adjust for dividends, nor do they provide dividends info. Oddly enough, they say that the reason for this is to “stay in sync” some index providers who don’t adjust for dividends… Sounds like a pretty poor excuse for not handling data properly.
In reality there are dividends which can greatly affect returns over time. Portfolio models using stock ranking and selection mechanisms will end up picking the wrong stocks without this info.
Not so fast :-). Both of these issues have been addressed in the alpha of v4.x (that’s what I’ve been refering to when speaking of “some more improvements”).
The plug-in has an “options” window where you can change the behavior regarding a) date padding and b) adjustments for corporate actions. While v3.x only adjusts for Capital Events and Special Cash Dividends, in v4.x you additionaly can choose to adjust for Ordinary Cash Dividends.
Historical dividend info is there as well; the Norgate plug-in puts it into the “Aux2” array for each symbol in AmiBroker.
Now it’s getting interesting! They really need to update their website with this info.
You’re welcome, Andreas. I would contact Richard Dale of Norgate – he’s pretty open to sensible suggestions.
I’ve asked them about supporting RightEdge some time ago, but they’ve never heard of it at that time (but obviously it’s been put on some “to-do” list).
PS – just a personal observation: I am aware that AB has plenty of very happy users. But over time, I’ve got the impression that this user-base – apart from the basics – is not very interested in (dynamic) position sizing and more complex risk management (e. g. dynamic control of position risk, sector risk, portfolio risk, directional risk, etc). I. e. I’ve very rarely seen discussions (let alone code examples) about such topics within AmiBroker’s community. Personally, I’m very interested in those things, which probably is the reason why I tend to constantly run into walls with AB. Another topic would be multiple systems with AB. While I’ve seen several discussions about it, I’ve never seen a real solution (AB’s developer said it would be “possible”, though).
I just spoke with Richard at Norgate and I’m very positively surprised. Their low prices and quite horrible website set my expectations low, but they actually seem very professional and their data looks very interesting.
They seem to have some critical data that to my knowledge no other retail data provider holds. If they can deliver what they promise, they seem severely under priced.
I’m going to try out their data and if it all seems as good as it sounds, I’ll help them integrate it into RightEdge. I’ll report back with my findings later on…
Great to hear that, Andreas! I think I’ve made a good decision when choosing them as my data provider – imho they’re absolutely excellent.
Just don’t persuade them to increase their prices – we small-timers need some affordable quality data as well 😉
Also, it would be fantastic if you could help them integrating into RE. When one is just starting out on a new platform and/or programming language, having to do one of the harder things (i. e. coding plug-ins) right at the beginning is probably sort of challenging.
What about Matlab, or Matlab + C#? Since most trading ideas go nowhere, a fast prototyping language that is flexible seems ok.
Absolutely. Matlab is just fine, when used by someone skilled in the platform. I know of at least one billion dollar hedge fund using Matlab as their main modelling platform.
Matlab might not be the most intuitive language environment for beginners of course. For those who already learnt Matlab during university studies, it’s a great platform to continue using.
I’m all for quick prototyping. Getting the job done is more important than getting all the details right from the start.
Thanks for the great book it’s now one of my favorite books.
I am new to systematic/strategic trading after going through your book I came to know about Rightedge. As of now for I been using Amibroker but I am currently working on developing my own automatic trading system. Currently bit confused and require a little help.
1st I am planning to buy rightedge , but as I still own Amibroker lifetime license I am not able to make the decision if should explore rightedge or continue with learn Amibroker AFL language (I do not really like the AFL codes).
2nd how an ideal algo system should look like.
Database on separate system Mysql?
For charting, strategies and backtesting rightedge or amibroker ?
Whats for Trade execution?
Can you please help.
I never used AmiBroker, but I hear it’s good if you’re not much into programming. I prefer standard architecture and strong APIs, so RightEdge is more for me.
Please tell the guys at RightEdge that I referred you, and you’ll get a discount. Use my coupon code, ‘tradersplace’. I get a small fee ($50), but more importantly the more people I refer the more they’ll listen to my improvement suggestions.
I’m planning on doing a post about my views on how to set up the infrastructure, databases etc. In brief, I get my data from various sources and have my own C# applications collect, standardize and push into a MySql. From there I make data adapters for RE to fetch data from my DB.
You can do execution straight from RE if you like. I don’t though. Mostly because I’m a control freak and I don’t want a computer to take over my executions. We execute everything manually here.
I guess you’re already in the process of evaluating Norgate – but at least for everyone else – Cesar has recently written a nice post on their “eternal alpha” software:
Hi Thorsten, i know this is almost two years since your post but as an AmiBroker user who is also interested portfolio management, dynamic position sizing and more complex risk management i was wondering if you stuck with AmiBroker?
If yes, I’d be happy to get in touch to discuss how to best use Amibroker for those purposes.
Hi Larry P, I am also very interested in this topic. You can contact me at firstname.lastname@example.org
I truly enjoyed reading your book. It really made me curious to learn more about trading based on trend while at the same time focusing on volatility and diversification. However, your book focuses on the professional with an institutional investor base.
Personally, I find it hard pitching to investors a simulated result without any hard track record. Thus, I would like to ask you how a ‘newbie’ without any coding and future trading experience can become a ‘professional’ trader. In fact, one of the major hurdles is the small cash base in a retail portfolio.
I would like to implement strategies for my own personal retail portfolio resulting in sane, realistic investment returns. I would be interested in your opinion pertaining to starting in this field with a retail portfolio constraint by a low cash base while at the same time having no experience in this market. Is it possible to replicate your strategy i.e. with mini futures? And how to gain in a quick manner coding and future trading experience without allocating to much time in coding rather than in finding profitable strategies.
Again, I would like to point out that your book is superb and that it really motivated me.
With scandinavian greetings,
Getting in is tough. I’ve never taken the traditional route with anything, so I’m sure if my own path is of much help.
I generally believe that having a solid science background is very helpful. It’s more useful to have a degree in physics than in economics. I say that despite the fact that I have a degree in economics myself.
Since you’re in Europe, you could use CFDs to trade in smaller scale. It’s a little more expensive to trade, but would enable you to take smaller positions. Expect to lose money early on, so don’t trade big.
My view is that you need to have a good understanding of coding in order to be a systematic trader. You’d be helpless without it. This is the core of the business and if you don’t fully understand every detail, you’ll be at the mercy of others.
Overall, focus on the portfolio level. The idea of single systems for single markets is amateur world. You need to focus on overall portfolio returns, not on position or instrument level.
Thanks for the comparison of Wealtlab and RE, that is truly helpful!
At the moment I’m using several platforms to backtest my trading strategies (AmiBroker, Investox, Excel/VBA) and every platform has its limitations.
Especially in the area of risk based position sizing and portfolio back testing I came to the limits of Amibroker and Investox pretty fast, so I used good old Excel/VBA to program my future trading strategy.
Regarding Amibroker I totally agree with Thorstens statement. The tool might be capable of everything but sometimes you spend 3 days to achieve a rather simple objective and it is frustrating if you just want to test your trading ideas (e.g. ATR based position sizing in the custom level backtester).
At the moment I am taking a more detailed look at RightEdge and there are two topics I would appreciate your (and all others) opinion on, before switching platforms:
RightEdge Community: The RightEdge forum looks quite abandoned to me. There are a handful users and the developer discussing several topics. I understand you talked to the developers. Do they have a roadmap for the further development and maintenance of RightEdge?
Availability of plugins: I’m surprised that even standard data connections (e.g. metastock) are not part of the RightEdge installation. It seems that several users have the same issues and have developed plugins for themselves. Besides the Right Edge forum, do you know a place where users share their experience regarding plugin development or even share their plugins?
Thanks for your help!
I’m concerned as well with the low activity in the RightEdge forums and the lack of improvements and developments of the product.
I really like RightEdge. I think it’s a great piece of software and I’d gladly pay ten times the asking price for it. But, it’s not without worrying elements. It seems to have gone from a ‘real’ company to a hobby project. The developers are not focusing full time on this product, but rather have other jobs in the software industry and see RightEdge as a side revenue.
That makes RightEdge more of a boutique software. The current version, which came about around four years ago, is really good. It’s just a pity that they don’t continue and built upon it, making new versions.
The problem with the overly commercial competitor platforms is the opposite. They keep doing new versions, usually making them less useful for high-end developers and catering to the get-rich-quick retail crowd. Of course, that’s where the volume is for charting/systems software.
For me, the issues you point out are clearly a concern and something to be taken into account. It’s not however a showstopper for me.
As for a dedicated forum for high-end RightEdge developers, perhaps I should just start one. If there’s interest, I could set one up on this site. For such a forum to be useful though, we would need several people willing to contribute ideas and help answer questions. I’d be happy to help out, but I wouldn’t want it to become a “Q&A with Andreas”. It would have to be based on everyone helping out.
If there’s interest, I’d be happy to host such a site though.
As a long time user of another ‘comercial’ software I, I moved to WL / RE after I read your book. As I have a full time job, I am still in the learning stage with everything, the software, C# and programming my systems. Some things are trial and error but fort me this is where I learn the most for myself. I’d be happy to share and contribute (although it isn’t that much atm ;-).
If we can build a large enough base of eager traders, this could be a useful resource for all of us.
On a side note: I’d like to get an adress as I’d be glad to have signed my copy of your book. You may PM me if that is OK.
Hi Torsten, i know this is almost two years since your post but as an AmiBroker user who is also interested portfolio management, dynamic position sizing and more complex risk management i was wondering if you stuck with AmiBroker?
If yes, I’d be happy to get in touch to discuss how to best use Amibroker for those purposes.
I have been using RE since about day dot when it started and helped develop some of the ideas they have in there now. I am one of the old forum users who lingers around every now and then.
I also use it with Norgate data (metastock) so it can be done with a bit of work.
I like there platform for every reason Andreas lists but also agree it looks a bit abandoned at the moment.
I believe the biggest problem for RE is actually the low price. 500 once off, with no maintenance fees, means that there’s a limited economic upside for the developer. I’d much rather see a yearly fee of 500 bucks and a more active development cycle. I’ve told Daniel my view on that in the past.
I’ve even contemplated making a bid for the whole thing and turn it into a much larger business, but frankly I’ve got far too much going on at the moment to be able to commit proper time to oversee it.
I’m hoping my articles are getting them enough new users to increase the activity a bit. It’s an amazing platform with great potential.
Shoot me an email –I can’t find yours – Just about your last post. I have though about the same thing as well.
Great article again, Andreas! And good follow up discussion! As i’m new to portfolio level simulations, it had saved me lots of research time.
This was such a good article, it has inspired me to try to use RightEdge for our own trading! I just created a post where I lay out some of our use cases:
Perhaps you have some insight or opinions you would be willing to share? Also, feel free to email me.
And thanks for the excellent work!
I heard great things about Genesis Trade Navigator. Have you ever heard about them? They offer tick data for backtesting back 30 years because they have own database. And also a very simple programing language.
I looked into them briefly after someone asked a while ago. I believe my conclusion was that it seemed like just another simplistic retail package. ‘Simple programming language’ is actually a bad thing. All these proprietary languages are all horribly bad. They are all severely limiting and they’re not fit for professional use.
Can one execute live trades via RightEdge or WealthLab? What do you use for executing live trades? Saxo Trader?
Thank you in advance for your reply!
WealthLab is gimped after they limited themselves to one single broker.
With RightEdge you can execute automagically with any broker you like, as long as they support some sort of API. RE has a strong API for making your own broker plugin if you need.
We use several different brokers. I’ve worked with most large banks over the years. We do all execution trading manually and don’t use automated software for that.
I thank you for your reply! Does it mean you use RE for charting? That you see your signals and then execute them manually? Since I am looking for a good software where I could also manually execute my trades.
I use RE for a number of things. It’s a great platform for simulation work of course, to develop strategies in. Then I also use it for signal generation for trading models, where I let RE output the alerts to email, database, popups boxes etc.
RE can also be a pretty good portfolio management tool, if you extend it a little. Pre-load the exact real positions and perform analysis from there.
Finally I also use it for automated reporting and analytics. For instance, the ‘trends of the world’ page on this site and many similar things are done with RightEdge.
Andreas, in terms of signal generation, is RE aware of the current portfolio when it generates signals? For example, if one has remaining capital for one more position only, will RE generate only one signal? I know it can be done in backtesting, but what about the live trading?
Yes, it can be done properly. By default, the application is aware of the current (simulated) portfolio, and takes it from there. It prioritizes trades in the order that they were submitted and takes the ones that are possible given cash constraints etc.
If you want to improve it further for live use, you can load your actual live portfolio to get a real life starting condition before signals are generated. You’d have to code that functionality yourself of course, but it can be done.
Andreas, how are things going with the RE’s PremiumData adapter? I thought you were beta-testing it last year. It seems its development has stalled. Perhaps, building industrial-strength adapters for RE is not that easy after all. It’s a pity as this is a major road blocker for me.
Last I heard, it was delayed but still on the way. Premium Data is attempting something very different, going far beyond just a regular data adapter. They’re doing instrument selection based on current and historical index constituents, cash dividends adjustments etc. Quite complex work. I should know, we’ve built the same for our own in-house environment, using a different data source…
Good to hear the project is not abandoned.
Interesting discussion re Amibroker as I’ve been attempting to replicate Andreus’ back tested results using virtually the same market set he states in the book and keep hitting a brick wall in the Amibroker results. Despite being reasonably confident in the code I’m using and a quality Norgate data supply there always seemed to be a disconnect to the backtested returns which you demonstrate in the book so it’s interesting to hear from Thorsten that description of how Amibroker position sizes and why it potentially would not be accurate. The big question mark over my mind now is whether to start again from scratch with Right Edge (and learn how to code in C# which sounds like a very long road ahead) or to continue to attempt to code in Amibroker. As I’ve already got a data subscription and the data itself I’m not sure how difficult it would be to get that data into Right Edge and it doesn’t sound as though it’s as supported as the Norgate/Amibroker currently is…
I spoke with Richard Dale at Premium data last week. He tells me that they’re almost done with a fully integrated RightEdge adapter. They were waiting for some improvements to the symbol watchlist API, which was just released in build 34 a week or so ago.
You don’t need any deeper knowledge of C# to write trading models. Get the trial, drop me a mail and I’ll send you some sample trading models for you to start off with.
Thankyou so much for this update and your kind offer. I will kindly bite your hand off to that suggestion and will be in touch once that Premium Data adapter is released. Have already purchased my C# Programming Yellow Book and as this is a medium/long term path I’m on this help is enourmously appreciated. I’ll keep you updated along my journey as being based in London I’m using SAXO CFDs also whom I understand you have a business relationship with…
I got the same experience as you Simon, I just can’t see to get the same results as Clenow, I get in the proximity of his results, but that is not good enough for me, I can’t trade not knowing that my system is 100%. Now Im converting to rightedge.
Since I have paid for premiumdata for amibroker, I will try and use them, they said they had a plugin for rightedge, but they still had some minor bugs needed fixing… Im waiting a few more days, if they can’t fix it I will use quant quote and mySQL solution.
I think they’re finally done with the RightEdge plugin. They’ve given me an access code for it, but I didn’t have time to try it out yet.
You mentioned Saxo Bank Switzerland as a honest bank/broker to go. I don’t know how the Swiss branch, but almost all other branches of Saxo Bank are terrible, especially the Danish one. I read several terrible reviews on Saxo. I laso asked a few friends of mine who used Saxo for some time.
I found that they manipulate with price and their support is terrible. Also the Saxo Trader has a lot of bugs.
I hope it is not the case for the Swiss branch. I guess you know their trading platform well. Can traders add new indicators into the platform if they are programmers?
Thank you in advance for your reply!
All I can say is that I’ve dealt with quite a few investment banks around the world and I’ve got nothing but good experiences with Saxo.
I’m also aware of this trend of hating on Saxo by the anonymous kids in the hobby trading forums. Frankly, all I’ve seen is a bunch of people hiding behind fake names throwing random accusations in anger. They even keep spamming the comment section on Tradersplace with these ‘saxo stole my money’ nonsense. They sound like every other internet child trash talking Rebecca Black, Justin Bieber or whatever the hate object of the day is.
Bottom line is simple. If you’ve got something real, then present it. This is Europe. Saxo is a regulated bank. If there’s price manipulation, go sue them. File a complaint. Get a lawyer. Instead these people are behaving like little children throwing tantrums, hiding behind fake screen names and throwing vague accusations around.
This is a grownup game. I have no patience for these childish internet troll cultures. If these people can’t play a grownup game, perhaps they should do something else.
Now, I have no idea of whether Saxo has ‘manipulated prices’ whatever these people mean by that. I also have no idea if Goldman has done so. But if I thought a bank had ripped me off, they would hear from my lawyers. Not from my anonymous hate comments on some daytrading site.
I thank you for your reply! I will give them a try! I trust you since I really like your book and I tested everything mentioned in the book and everything is as you said … you are definitely not a scam artist! 🙂
I tried their demo, but I couldn’t find the ATR stop indicator in Saxo Trader 2 you mentioned in the book. I want to program it. Do you think is it possible? I worked as a programmer over 2 decades, so it shouldn’t be a big deal for my programming skills.
Thanks, Tom. I should mention that while I do have a business relationship with Saxo, I have no economic interest in them gaining clients (like you). My relationship with them is both that they’re one of several banks we use for my firm and that I write occasional paid articles for their website.
As for their platform, I don’t use it much. We do some execution via that but I wouldn’t use it for charting, analytics etc. Most banks have pretty horrible platforms for that, even the big prime brokers.
If you have no problem with programming, I’d get RightEdge instead.
Using Saxobanks platform you’d use the trailing stop function based on the x multuple of ATR(xx) that you’re getting from another data source which you’d need to update periodically for changes in ATR.
I don’t use Saxo for thier data, just for their brokerage services, for data I use Norgate Premium.
thanks for sharing your thoughts and insights on this site an in your books!
A question regarding software platforms. I use Matlab for my models which is fine but not always the nicest way to go if you want to try some new ideas. I wonder if it could be worthwile to use a more “ready to go” platform for protoyping? I was thinking of trying Mechanica as it seems to offer some relevant features (PF Simulation, Multi-Systems). There may be other platforms offering the same, but my question is not product related. Do you think using a different platform for prototyping could make sense?
I can’t say that my MatLab skills are very good, but as far as I know MatLab is really meant to be a prototyping environment. It’s fine for production as well of course, but prototyping is supposed to be where it really shines, right?
I’ve never used Mechanica, but I absolutely balk at the price tag. I haven’t seen any explanation of why it costs so much and what makes it better than more moderately priced solutions. Their website looks like it hasn’t been maintained since 1999, which isn’t a very good sign for a software company. They charge 25 thousand bucks for a product that they absolutely fail to explain on their site. Their pitch is kind of a one liner about how they are the most powerful on the markets, with zero substance to back it up. I can’t really take that seriously.
We work primarily with RightEdge, using our own quite substantial modifications and additions to it. Standard language environment, open architecture, easy to extend… I take that over some 25k black box product any day.
thanks for the quick response!
“I take that over some 25k black box product any day.”
Good point. It’s indeed amazing how little details they offer.
MatLab ist fine, especially in the derivatives space, but I don’t know if it would be my number one recommendation for trading systems, if had not had to learn it earlier on anyway. But of course you can extend the possibilties quite freely.
The features of RightEgde, especially the use of a real programming language, are fine, although their site does not look as if they were earning a lot of money. Anyway, as C# ist even more versatile and your work is speaking for itself I think I will give RightEdge a shot then.
Great blog and very useful information. I am just getting started with RightEdge but given I have a compsci background I love the fact that I can build plugins and add funtionality
2 quick questions.
1. How are you accessing general meta data from within your strategy? Are you directly accessing your SQL database from your strategy code or are you loading this meta data into the symbol information somehow? One example would be “Point Value”. I have a lookup table in my database for each product and all the relevant data associated with it but I’m just figuring out the best way to make this available. The new SymbolSource service allows me to load symbols from my database into a Watchlist but that relies on the RightEdge Symbol class having fields for all the data I might want to load. I was therefore wondering if I could/should just load my meta data from my SQL database directly into my strategy (perhaps in the SystemBase startup?). Im sure there will be more data other than just contract details that I will want later so having this ability seems like it would be useful.
2. How are you configuring contracts such as Eurodollars. RightEdge only has contract size and tick size but if you input contract size = $1,000,000 then I would guess the PL calculations will be wrong as 1 point move should be $2500 per contract and not $1,000,000. Do you just configure RightEdge’s contract size to be the PointValue in these cases?
Apologies if these have been answered before. I have been googling around and looking at other posts and I couldn’t quite see anything.
Exactly the reason why I love RE. You can do whatever you want, as long as you’ve got a decent tech background.
MetaData: I load all the fields that RE are designed to hold, using a script of course. There’s an xml file in the user profile called something like symbolconfig.xml. You can write to this to auto add large amounts of metadata, populating from your db etc. Just be aware that RE is a bit touchy about this file, and if you make a mistake in the XML RE won’t start. So be sure to back it up… Anyhow, editing is easy if you’re familiar with XML.
Use this to populate point value, sector, industry etc. Don’t set a tick value, since that wouldn’t work well with back adjusted series. Setting tick value forces that minimum move, and with back adjusted data you might get something very different.
For other metadata, I just let the system ask the db directly. Could be market cap for a stock, dates where a stock is part of a particular index etc.
Eurodollar (and all rates markets): Use the point value, not the contract size. The two are the same for almost all markets, but not for rates. But you already know that, because what you say is absolutely right. For ED, divide by 100 and then by 4. For bond futures, divide by 100 (for most of them anyhow). Your numbers are absolutely correct, Dan, 2500 for ED etc.
Thanks for the quick response! Sounds great. For all the other data I will just setup some sort of clean way for strategies to request data directly from my SQL database.
Have you noticed that CSIData “PointValues” seem strange? I think the issue is that what we really want is what they call “Whole Point Value” (I’ve seen this in some CSI Future factsheets) but it doesn’t seem to be available as part of the download. I think I will just configure these myself. There aren’t all that many and it will just be a one off setup.
There are so many things that I will want to do both for backtesting as well as daily trade generation and keeping track of live trading systems and risk but because it seems so flexible I don’t see any reason they wont be possible with RightEdge and Visual Studio… I mean…the strategy code is clean C# with full CLR/.NET capabilities meaning I can pretty much do whatever the hell I like inside the strategy code…. (within reason 🙂 )
I seem to remember some oddities with how CSI label their meta data fields, but it was a long time ago. We make our own lookup tables, and just ensures that the incoming data is in the right format. (heads-up for classic dollars vs cents issue…)
The first time I set up all the symbols in RightEdge, I made an Excel spreadsheet with all data, and then a quick little VBA hack to make the necessary xml changes. For futures, it’s at least possible to do manually. Try entering a few thousand stocks with names, sectors, industry, currency etc 🙂
An interesting thing with RE is that you can use it for much more than it’s intended to. Among other things, we use it as a reporting engine, calculating analytics and pushing results into databases. The premium report on this site (which by the way is really neat and everybody should sign up to right now!) is almost completely automated with RightEdge. We make results plugins for RightEdge that really just gather relevant data, inserts into databases and generates nice looking reports.
Just FYI while were we’re talking about PointValue etc. I noticed that your PointValue for JPY CME futures in Following The Trend appears to be wrong…
As far as I know the contract is quoted in cents (ie. currently 1 yen ~ 0.8 USc) and the contract size is 12,500,000 unless you trade the minis/micros
I would therefore expect the pointvalue to be for a 1 cent move (ie. from 0.8 USc to 1.8 USc) which would change the value of the contract by 12,500,000 yen.
In your table you have it as 1,250 but in units of MM JPY. That would make it a 1.2Bn Yen PointValue.
It would make sense if your your point change was a $1 change (ie. 100 cents). Maybe I’m missing something.
Also, the EUR/JPY future has a Unit of CHF in your table in the book.
P.S. I wasn’t sure if there was an errata published anywhere but couldn’t find one on Wiley website.
so I gave RE a shot! Here are my impressions from the first 12 days (ok, 4 active evenings to be honest) of evaluating the software.
What you do need to get ahead are basic programming skills in a higher language like JAVA or sth like that. Any language of this kind will do, C# is very easy to learn if you know the basics of any similar language.
If one does not know anything about coding then I think learning the language on this system is not the easiest way. If somebody does not know a lot about coding, I think it to be smarter to learn the basics of C# separately for some weeks before trying RE. This will slower you in the beginning but will be a lot more motivating to keep going.
After reading through the documentation it was quite easy to create the first simple model. I just recreated one of the simple trend following models and used the historical data of the Dow 30 Stocks. I also implemented the ATR based position sizing. These steps are very easy, and apart from looking up something in the API reference to really understand, how the system works, there are no bigger obstacles. Taking some time to review the possibilities given for adjusting the result output, I may say that after some days of serious trying one is able to test ones own ideas.
I will now install mySQL, get some real data feed and try to put it all together. Andreas, if you have any suggestion or could tell me about some possible problems, please let me know. Thanks!
The RE website should not discourage anybody. The software is fine, the documentation is good and the flexibility is great.
Sounds about right, Nick. It matches my own experiences with it.
Frankly, the largest hurdle for most will be to get the data into the application to begin with. That’s something that they could have made so much easier.
Be sure to look into the class MySystem. It opens up for many interesting tricks. Most people only use MySymbolBase. Really horrible class names, btw…
Just wondering if you have any experience of CSI’s applications or RightEdge on Windows 8/Windows10? I am currently running Windows 7 and am, for now, ignoring Microsoft’s free Win10 upgrade as I don’t really have a need but just for future planning it would be good to know if it works…With RightEdge being CLR/.NET I expect it should but you can never be sure and I have no idea about CSI’s apps.
I cant find any comments anywhere so wondered what version you run/have tried. No problem if not, I can just email and ask.
I’m running both on Windows 10 without any problem.
So far, I’m very happy with Windows 10. They took out the annoying parts of Windows 8 and everything just works.
Do you know of a provider who has got adjusted data for European stocks (LSE in particular)? Norgate looks great but only covers USA & AUS.
Assuming you would like something resembling reasonable pricing, I don’t really know. I haven’t bothered researching it too much, since I don’t like trading UK stocks. The stamp duties is a huge problem, and the market in the UK has been performing horribly bad for a very long time…
If budget isn’t a problem, Bloomberg or Data Stream should be able to sort you out. That’s not exactly retail pricing territory of course.
Thanks for the comparison. Have you heard or used OpenQuant, any comments on this platform? Recently they published OpenQuant 2014, which provides much more flexibility. I’ve tried the software for several days(trial version), and it does provides all the advantages that you mentioned about RightEdge, like built-in database, portfolio level backtest, dynamic position rebalancing, self-implemented GUI dlls and data/execution providers
I haven’t used OpenQuant, but I hear good things about it from friends in the business who use it. It seems to be a solid platform.
Of course, the price tag is a little different from RightEdge. Their lowest tier version cost about as much per month as RightEdge cost in total, and their full package will set you back about $22,000 per year. It’s unfair to compare that to the once off $500 for RightEdge.
I have demo’ed RightEdge and I quite like it but my only concern is that there doesnt seem to be to many active users of it or much new development going into it. Have you taken a look at NinjaTrader 8? It is in public beta and is much more extensible than the prior version. Take a look at the AddOn extensions which essentially allows you to leverage their low level objects to build your own mini applications within Nt8. Another platform to take a look at is Iqbroker which is in a closed beta(email them for access). It has an excellent object model for portfolio level back testing and even lets you construct portfolios of strategies. I would be interested what your thoughts are on these platforms.
I’ve looked at NinjaTrader briefly a few years ago, but I don’t have enough knowledge of it to have an intelligent opinion to share.
I also wanted to mention after reading the comment chain is that ninjascript isn’t a proprietary language. It is essentially just the base class that strategies are based on in NinjaTrader.
Big fan of Following the Trend, and I just finished Stocks on the Move. I am currently learning to program, and I’m trying to decide on system development software. I was thrilled to see your recommendation for RightEdge, because the features are ideal and the price is very affordable. I’ve heard very good things about Bob Spears and his Mechanica Software. Have you used Mechanica and have any opinions about it?
I find the pricing of Mechanica to be somewhere between insane and laughable. I don’t get how these software packages can sell at such outrageous prices. There are many similar ones in this segment, with horrible 1998 style websites and no real explanations about why they’re worth the crazy money they ask for. Same with things TradingBlox and PowerSt.
If you charge a very steep price, at least you need to be able to explain why.
A few years ago I asked the guy behind PowerSt why his software was worth something like 50 times RightEdge (per year). He listed only standard features which every serious (even free) simulation packages have and got really upset when I wasn’t convinced.
I’ll going to try RightEdge. One thing that I’ve heard that Mechanica does differently is to Automate the system and execution. I’m assuming if one is running an investment management company or fund, and uses Separately Managed Accounts for clients, the necessity to execute the strategy on each account gets inefficient eventually. Have you experienced this, or is it not a large problem in the professional management arena?
You could automate execution with RE too if you like.
I find that the industry is more or less split down the middle on automatic executions. Some automate everything, some have trading desks with execution guys. I prefer do have the execution handled manually, but I see nothing wrong with either approach.
For managed accounts you can also get the execution workload down significantly with platforms like DB Select.
I will keep in touch and update you on the journey.
Hey Andreas, hope your new years was enjoyable!
I am running through the steps for system development and backtesting. Obviously the first step in any strategy test is to get the data. I was working on a version of your momentum strategy from the book, but wanted to test a futures strategy as well. Is the data import much simpler? It seems that all I would need is the historical end of day data for my chosen universe of futures. I’m assuming CSI would be sufficient for this purpose, but I’m struggling with finding out the step from data import to the beginning of the backtest. Are there any adjustments that need to be made? Can I simply import the historical data and run the system code? Would I have to create my own database or plugin to get the CSI data into RightEdge? I know there are too many questions, but I appreciate any time and effort you spend on any advice. Thank you in advance.
The data handling (and everything else) is immensely much simpler for futures. Proper equity simulations are painful. Futures are easy.
The data from CSI is just fine. You remembered to use my discount code when you bought it, I hope? 🙂
You could just import the data without a real data adapter. That might open for a few issues that you’ll need to address though. My preference is to use a MySql database in between, which makes the data handling much easier.
Some markets may be quoted in cents, and that’s always a pain. I do automatic conversions to major currency units, feeding dollar values to RightEdge instead. Don’t forget the metadata too. You need to set up each market with the correct metadata for the simulations to work. You also need to configure currency time series, so that the fx impacts will be correctly accounted for.
You don’t have to use a database in between like I do, but in my view it makes life so much easier.
Matt, sounds like we are in about the same place with RightEdge. I’m using binary data store that ships with RE, not a MySql database (project for another day). For the CSI data adapter, I started with the example code provided by Andreas and tweaked it to convert the markets provided in cents and to correct bar data errors. CSI doesn’t seem to provide exchange rate data (am I wrong?) so I found another source for that and was able to use import data tool under tools tab to suck it all into RE. Had to set up symbols and metadata manually (a real pain!). I believe Andreas said there is a way to populate metadata automatically with a .xml file but that is beyond my programming skills at the moment. As for backtesting, I started with replicating the trendfollowing strategies from chapter 4 of Andreas’ book. So far, so good. Good luck, Matt! If Andreas doesn’t mind, happy to share experiences and questions on this board since the Rightedge forum is pretty dead. Greg B.
Feel free to share what you like here, Greg.
I was, and still am, planning to make a proper discussion site. I had a brand new vBulletin forum set up on this site recently, but during testing it got overrun by spammers and hacked several times, and I don’t have time to deal with that… Perhaps I should revive the old Tradersplace site again, but in a less complex implementation this time around. I took that site down for the same reason, that it was taking far too much time just to keep the hackers and spammers at bay.
I believe you can get exchange rates from CSI, but I haven’t done that myself. I’m pretty sure someone recently told me that works though. Else just get it from Yahoo Finance or Quandl.
Populating metadata isn’t that difficult really. I’ll write up a post for the premium section on how to set up an Excel sheet that automates these metadata xml files. And I’m not mistaken, you’ve already got access to those articles, Greg. 🙂
Btw, the model from my first book is in the premium section of the research library. You can download the full source code there and compare with yours, Greg. Of course, keep in mind that the model for that book was never meant to be some sort of optimal system, just a demo model to show how trend following works. It’s an ok model, but not a great model, and easy to improve.
Do you have the code that you use to rank all stocks in the book ‘Stocks on the move’ shared somewhere on the site? or could you share it here or by email to download it and have a trial with RightEdge to see how it all works?
Or if it’s a code that could be used in a different software, that would help as well as most platforms offer a few days of trial where we could try things.
My current code makes use of my local environment, making direct database calls etc, so it wouldn’t be of too much use to others.
But I’m planning to fix that soon. I’ve been working with Norgate Data to help them make a RightEdge plugin that solved the issues that I used direct database calls for. Their plugin looks very good so far, though there are a couple of bugs to sort out before it’s released.
Once this plugin is released, I’ll publish source code for the momentum model in the book.
Thanks for the how-to articles in premium section. I guess a couple more such articles and you’ll have only a fraction of your subscribers left, as the whole trading game turns out to be very complex and not something magical like Forex ads promise)
I have a suggestion if you don’t mind. Apparently the stock market environment is really volatile at the moment, and the Momentum strategy is moving to cash. You have mentioned in your book that being in cash means allocating funds to money instruments. Would be great if you provided more info on this topic.
Thanks, Vitaly! Yes, that could make sense for an article.
Bring back PTSD style flashbacks from 2008… There was a time when we were analyzing banks daily, moving cash in the late afternoon into whatever bank had the best chance of surviving the next 24 hours. It’s hard to imagine now just how bad the situation was back then.
I should mention of course that most countries have some sort of depositor guarantee, and if someone has a lower amount of cash than their local limit, the cash is guaranteed by their government. So this is an issue that affects professional money managers and HNWIs.
Hi Andreas, do you have any recommendations for software that keeps track of trades/performance/statistics of a live trend following system? RightEdge is great for backtesting but not sure it can be used to track live system(s) without some very heavy customization. Excel could work too, but again, lots of unnecessary work if there is a ready-made product out there. Thanks for your thoughts.
Yes, I should write something about that soon. A proper market data system can be very important and tracking portfolios is just one of many things they can do for you.
For various reasons, my top recommendation is this: http://go.metastock.com/ek?whc=tradersplacee&pc=eq-tradersplace&&rfr=ms
It’s essentially a rebranded Reuters Eikon, normally sold for about 2k/month. This rebranded version is sold for around 100/m but only non-professionals are allowed to buy it. It has a great market data application as well as the best financial Excel addin in the market.
Hello Mr. Clenow:
I just purchased your book Stocks on the Move and would like to try using your system. I have a MAC computer, but neither RightEdge nor WealthLab run on a Mac.
1. Can you recommend a Mac-friendly trading software package or website that I can use to SCAN for stocks with high Adjusted Slope (cf Table 7-1 Top Stocks Ranking) in both the US and the Canadian markets?
2. Can you recommend a Mac-friendly system that I could use to do BACKTESTING?
Andreas has created a subscription service that performs all the number crunching for you and provides all the rankings.
If there is an alternative application for Apple, I’m not aware of it. It might be difficult to find financial software for Apple environments, since the industry runs off Windows on the front end side.
I suppose you could dual boot into Windows, if that’s a viable solution. Or, as Ed kindly suggests, subscribe to this site and get the data there. I only cover US markets though.
Thank you for your replies, Ed and Andreas. Your S&P-500 subscription service is very appealing and I may start using it. I am looking at both the US and Canadian markets, however, and at the stock of companies smaller than those in the S&P-500.
I have been inspired by your book “Stocks on the Move”, and also by Antonacci’s book “Dual Momentum”, and the idea that a stock tends to do better if its Sector is going up.
I am developing an evaluation system that takes Price slope and Smoothness into account (Clenow), along with Earnings growth and Revenue growth (Antonacci) as well as Sector strength.
I now have a basic technique with rules but a lot of manual work is involved, and I would really like to automate it. If I could also do do some backtesting, that would be a great bonus!
Any comments on the above would be most welcome! (I could send you more details if you wish.)
PS: I may try to run RightEdge on my Mac with a Windows emulator or some-such, or purchase a PC.
Ken / Andreas – I had exactly the same problem in trying to automate the strategy in an Apple environment. In the end, I coded it up in Java (I’m a professional software engineer) and developed a web front end for visualisation.
Essentially I wrote everything from scratch in Java, getting historical data, cleaning the data, ranking the stocks, applying position sizing, applying buy and sell rules, applying slippage and commissions, tracking stock and portfolio PnL, equity, etc.
I essentially wrote my own backtesting engine. I’m running it against UK stocks and backtesting a UK stock portfolio from Jan 2006 to May 2016 I get 18% CAGR and 16% Annualised Vol.
I’m going to expand it so it covers multiple stock exchanges (US, EU, UK, SG, etc) and supports multi-currency portfolios. I’m also looking at implementing interfaces to my broker so I can automate the trades.
Happy to share any details if anyone is interested.
If what you developed is a self-contained backtesting engine, I would be very interested. How can we get in touch?
Ed – For now the backtesting engine is used primarily for equity momentum strategies. However, there is no reason why it can’t be modified to accept other types of strategies. The core architecture has been designed so that it can handle large amounts of data concurrently, that we otherwise be too large to fit into memory. In fact my next project is to backtest mean-reversion strategies aka ‘pairs trading’. I will be setting up a blog very soon to demonstrate it. You can contact me via LinkedIn – https://uk.linkedin.com/in/ravi-cheema-1bbb60
Awesome article, thanks so much.
I’ve been (discretionary) trading for many years – now looking to get serious with modelling and back-testing, etc.
I’m going to learn to code, so I think it makes perfect sense to choose a platform that uses ‘real’ code and not waste time and energy on the wrong platform (just because it may be easier to begin with).
So, it’s early stages but given the top 10 products that are out there at the moment, I’m thinking that Quantopian and QuantConnect seem to be the ‘new breed’ that offer everything that, say an RE does, and more?
From what you know of them, would you imagine much downside in going this way? What would RE have that these don’t? A better reporting environment perhaps? Can I run “scans” as well as “back-tests” in these applications? (I would like to replace my scanning software with a single platform that can scan and back-test if possible?).
What are your thoughts?
The online environments are certainly improving, but they are in a very different category than RE.
I looked into Quantopian in detail before going to speak at their conference in NYC a few months ago. They have done a remarkable job, I’ll give them that. The integrated data access alone is worth a lot, as is the cloud based calculation engine. It’s a great environment if you’re just starting out or if you have no desire to do anything customized.
In terms of openness and flexibility though, there’s no way any online environment can compete with RE. It’s just not a fair comparison.
With the online solutions, you only get exactly what they give you. Nothing can be added or changed. So in this case, you get only US equity data and only from 2003. No futures, no currencies, no custom continuations, no spread series etc.. You get only the system results analytics that are built in and you cannot do creative things. The first thing I built for RE was a historical portfolio allocation and attribution analysis plugin.
And what if you want to output your data? Say you want to run a complex portfolio model in a bunch of different iterations, spit out the daily equity curve and differences in portfolio allocation to a local database or a text file for further analysis? Possibilities are limitless in an open environment.
RightEdge is an open API while Quantopian and Quantconnect are closed websites. They are very good closed websites, but that’s still what they are. That’s great for a lot of people, if you don’t want to do much coding, if you don’t need any flexibility, if you need exactly what they provide for you, if you can’t afford a local setup etc.
Yes, Quantopian is a great platform but they can never play in the same league as RightEdge. That’s not what they’re trying to do and that’s not the technology choices that they have made. They’re going for a different audience.
Thanks very much for that Andreas, that has helped a lot.
Next I need to consider the choice (and trade-offs) between ‘easy language’ applications (particularly interested in Amibroker) and a package that requires a ‘real’ language. I’ve got a huge preference for jumping in and learning C# or Python due to the longer-term benefits, but I’m also mindful that it might take me a lot longer to generate something productive and useful.
I’m wondering how much I will need to ‘re-learn’ if I start with Amibroker and run with that for say, a year, and then move over to a RE later on, and whether that would ultimately be less productive. I know that’s probably impossible to answer. Let me ask this:
What other packages such as RE are out there that utilise C# or Python? Do you feel RE is the “easiest”?
Can I use RE to conduct basic stock market scans? Is that fairly straight-forward? This would be the perfect entry for me, as I could use it to replace my scanning software, and get into back-testing and then strategy construction from there.
Thanks so much once again,
I haven’t used AmiBroker, so I can’t help you there. I hear it’s pretty good. For a proprietary scripting platform. 🙂
There are a few other platforms using CLR, but I haven’t gone into real depth with them. NinjaTrader and MultiCharts, I believe.
Using RE to scan stuff is easy. No, it’s not a built in features, but I wouldn’t want it to be. You want to output something? Just write a few lines of code. Just build a normal system run, calculate what you need calculated and output it. You want it displayed in the application? Fine, make a little plugin to show your stuff after a system run. Easy.
Thanks again Adreas,
Really enjoyed your interview on Top Traders Unplugged by the way.
I’ll have a good look at Multicharts.NET and compare it against RightEdge.
It’ll interesting to see your opinions on Mulitcharts. I’ve heard less than a stellar opinion from a systematic portfolio speculator. Individual instruments tested fine, but portfolio didn’t, compared to WealthLab. This was a few years back, though.
Forgive the typo there!
I noted in another article you mentioned that RightEdge is not well supported. I think you called it a “hobby” for the developers. I don’t see any increase in activity on their blog. I’m reluctant for obvious reasons.
I need portfolio level optimization and simulation, preferably without a lot of coding.
Do you still recommend RightEdge? What would be alternatives that you would recommend?
QuantStrategy X (interesting program)?
That article was written some six years ago and things have moved fast. In my view, what makes most sense is to move to a proper Python setup. High grade professional tools are now readily available, so it makes little sense to use these canned scripting packages anymore. That’s why I wrote Trading Evolved: https://amzn.to/2vNixK5