Development System

Here, I’d like to give you an overview of the things you will need in order to get started with developing a trading strategy.

Software

The first thing you will want is a software package to develop your trading strategy with. There are a ton of packages out there, but IMHO only a few are worth looking at. When evaluating packages, there are a few aspects to consider:

  • feature set
  • programming language
  • interface to data providers
  • interface to brokers
  • update frequency of the software
  • user community

Regarding the feature set, most packages allow you to do charting of various kinds, show indicators and signals in the chart and create reports of trading performance. My approach to trading is to work with a diversified portfolio at all times. Only very few packages have dedicated features to support this use case.

Regarding the programming language, the choice might not be too obvious. A lot of the more recent packages support C#. For a software developer that’s great because you can do virtually anything and the environment will be quite luxurious including a connection to a debugger. Why even look at something “less professional” then? There is an easy answer: Developing a trading strategy is not like software programming. You will not develop a complex application, you will be scripting instead. Your productivity is mostly defined by how quickly you can experiment with a gazillion of easy-to-use indicators and helper functions. That’s where some of these tools fall really short. I have chosen to go with EasyLanguage, because it focuses me on what I want to do and not on how to implement it.

Regarding the interface to data providers and brokers you will find that not every provider is supported by every tool. Your choice of data or brokerage might influence your tool decision and vice versa. Generally, I would recommend to rather switch brokers than switching tools - but you might have reasons to do differently.

Update frequency. You will absolutely want to pick a tool, that’s updated frequently. Operating systems change constantly. But much worse, interfaces to brokers and data providers change a lot. You will want to make sure that your tool vendor supports the latest interfaces in a timely manner. Be aware: there are tools out there, which have not been updated in years!

User community. There are so many details to cover until you have a functioning automated trading system, that running into trouble is inevitable. The best help you can get typically comes from an active user community. Most tools vendors provide forums in which several hundred of users discuss with each other and help each other out. Most often, the tool vendors are monitoring these forums as well and step in, if required.

I am personally using MultiCharts w/ Easy Language and I think it is an absolutely awesome tool. I have looked at the C#/.NET variant, but found myself having a hard time being productive with that. I also evaluated NinjaTrader. That’s another great tool, and I found their C#/.NET interfaces much easier to use and understand than MultiCharts equivalents. Unfortunately, NinjaTrader has two major shortcomings: at the time of this writing, version 8 is still not out and version 7 is several years old. Also, NinjaTrader has no ability for portfolio management. If you want to do so, you’re on your own and deep in unsupported territory, calling for kludgy workarounds.

Historical Data

One thing that’s easily forgotten when thinking about strategy development are historical data. While your data provider will provide real-time data to support your trading, these data typically reach only between a few months to a year back. For proper backtesting of your strategy you will need much more than that. I personally test w/ 5 minute bars dating 10 years back. Longer periods than that don’t seem to help much, as the characteristics of the stock market also change over the years.

For free, you will typically only find daily bars. Yahoo finance allows you to download daily bars as CSV. Typically you will need to buy historical data from one of the vendors out there. I had good success with data I bought from Kibot. In case you want to keep your data current, you might be able to use updates from Stooq, a site that provides free data with a resolution down to 5 minutes for a few weeks.

Revision Control

In essence, developing a trading strategy is software development. You will need to make sure that every change you make is well documented, that you can work on multiple ideas simultaneously and that you can roll back to earlier versions at any time. The answer to all these questions is a revision control system. At the time of this writing, the most widely used revision control system is the open source tool Git. If you like a graphical UI, you can use the free SourceTree client. You can start with a local repository, but later on, you should move your repository off-premises, e.g. to Bitbucket.

Everything else

Everything else can follow later, probably much later. You don’t need a data provider for your first steps. You also don’t need a broker right away. I will write about computer setups and how to synchronize your data between multiple machines in later articles.

© Felix Bertram 2002-2015. Last update September 2016.