Choosing a Backtesting Platform

A trader on Twitter posts a chart with a winning trade along with arrows for their entry and exit points. It seems like a great trade – but are they showing you all the trades they took that day, even the losing ones?

Of course, there’s no way to verify that – you’ll have to take them at their word.

Can trades like the one tweeted be used as a profitable trading strategy?

A well-tuned backtesting process allows you to test the strategy yourself. The better your process is, the quicker you can test the trading strategy.

But a well-designed backtesting process yields benefits well beyond just answering a single question. When set up correctly, it allows you to:

  • Transform almost any strategy into a profitable one that you can trade
  • Create a roadmap to continuously improve a strategy in the future
  • Have a powerful BS detector so you never have to wonder if a strategy works or not

These benefits compound over time. Even if you run into a dead end with a particular trading strategy you still learn a lot about the markets and what works and doesn’t work. That knowledge accumulates and even when something you learn seems useless today it can become very valuable when applied to other ideas you’ll have in the future.

Backtesting is as close to a superpower as a trader can have.

Required Backtesting Features

There are a lot of platforms out there that claim to have backtesting, but there are only a few that have the features required to be a part of my backtesting process.

Ability to Backtest the Entire Market

If the package cannot test across the entire market then it is not worth using. A lot of software can test on single symbols or a basket of symbols, but there’s a reason only a few can test across LOTS of symbols: it’s a very hard technical problem to get right.

This requirement alone eliminates the vast majority of backtesting platforms from my consideration.

Add Custom Columns to the Backtest Trade Results

This critical feature is one that most traders ignore. You need the ability to determine how certain indicator values affect the profitability of your trading strategy. This is fundamental to any effective backtesting process. Without this ability, you’ll never be able to have the confidence to take some of the trades in your system with full position size.

Extensibility

Successful traders understand that although profitable strategies usually have surprisingly simple logic, they are very much unique to the trader. Mimicking someone else’s strategy might work in the short term, but if you are going to have long-term success in trading you need a process for generating your own strategies from your own unique ideas. That means your backtesting platform needs to be infinitely extensible by writing your own code.

Longevity

If you want to trade for the next year or two, pick whatever platform you want. If you want to be trading successfully for the next couple of decades, then pick a platform that has been around a while and is actively being developed.

Backtesting Platforms I Recommend

I have used several backtesting platforms over the years and I have settled on two for my trading workflow.

Trade-Ideas OddsMaker

As the CTO of Trade-Ideas, I admit I’m biased here, but I use the OddsMaker for some of my short-term strategies and for quick strategy prototyping. It’s lightning-fast (I guarantee nothing on the market is faster!) and easy to customize without writing code. You can add filter values to the trading results and it’s extensible through custom formulas.

The nice thing about the OddsMaker is that it fully integrates with your real-time alerts – so it’s trivial to backtest a strategy that you already use.

Amibroker

I’m a long-time Amibroker user and while it’s not perfect, it works well for backtesting and it’s fully extensible. It also has a nice charting platform that you can customize with code. It has been around for a long time and has a steady stream of improvements.

Here are other platforms that I recommend to traders depending on their situation:

Python

If I were starting today, I would probably use a combination of the OddsMaker and Python for backtesting. For clients I work with that have strong technical chops and coding skills, this is what I recommend. It’s completely customizable down to every aspect. The backtesting library I recommend for Python is backtesting.py, although there are others that work as well.

NinjaTrader

I tried NinjaTrader a long time ago and didn’t really vibe with it but it’s a good platform and checks all the requirement boxes above. If you’re comfortable with C# then you should strongly consider it. From the looks of their current marketing, they focus mostly on futures trading for some reason.

(Are there other platforms that I should add to this list? Let me know.)

2 comments
    1. Thanks @James – I’ve heard good things about it but haven’t checked it out directly yet. Thanks for the tip!

Leave a Reply

Your email address will not be published. Required fields are marked *