Please welcome me back, it's been a while
To the point, I am currently testing several software package for backtesting strategies to choose the best one to use for a big project. I have to say that I have been away from such details for the past 2-3 years and I am sure my information is outdated and I need a refresher from the experts here who are using the current software packages and their experiences.
I am testing/demoing/trying the following packages right now (So, please if you have any feedback about any of them, it would be much appreciated to post a detailed reply):
1- Matlab
2- Trading Blox
3- MultiCharts
4- Trade Station
5- AmiBroker
6- NinjaTrader
Now, I know that most of the mentioned packages and platforms are mainly retail ones and they will be as good as retail usage for all tiers, however, I am open to institutional packages as well, if any member here does have a previous experience with one (Just to clarify, institutional packages means platforms used by hedge funds or prop desks in large banks).
No talk about MT (Metatrader) or Metastock please as I will not be using any of them. MT uses some variation of C and I am not willing to learn C as I don't have time. Metastock, I already tried and I have to say it's rubbish, very basic, limited and a lot of constrains, so it won't fit even a mid-tier retail needs.
I have used Matlab back in my old engineering days and I have to say it's a very handy tool, but again it will require a lot of code management and I am trying to minimize the coding as much as possible.
Here is what I am looking for in the backtesting platform, so if you have already experienced this in one of the above mentioned or in another platform not mentioned, your feedback is much appreciated:
1- The platform must be precise, accurate and as realistic as possible in backtesting, i.e. backtesting strategies as close as possible to reality
2- System design and construction must be as flexible as possible, allowing for all components and conditions to be created and with the possibility to link those components together, i.e. the package must offer the possibility of components dependency
For example, when simulating entries, one has to have the ability to construct the rules of the entries based on any possible condition or set of conditions, dependent or independent, without removing the possibility of integrating the entry component from other system components.
To clarify this, let's say that a strategy has a simple entry rule, which is going long when the price crosses above it's 20-EMA by 1% on an intraday basis, however, if the past 3 consecutive trades lost money, the entry rule should be crossing above the 20-EMA by 1.35% instead and if the past 2 consecutive trades were winners with an average of 15% profit or more, the entry rule should be crossing above the 20-EMA by 0.5% only....I hope you got my point...
The same applies not only to entry rules, but also to stop loss exits and profit exits.
3- Position sizing component/conditions can be constructed by any set of conditions or rules. As an example, if I need the position sizing to be dynamic based on the percentage difference between the price and a 250-EMA, I must be able to do this, where 100% of the position to be taken when the price is above/below the 250-EMA by 1% and position size decreases incrementally by 10% for every 1% step away from the 250-EMA in either directions...Needles to say that position sizing custom formula calculation must be supported and I must have the ability to use data from the equity curve serially to dynamically change the position size of next trades...Another very important thing in supporting position sizing calculations is to have the ability to use the calculated probabilities from results at a certain point to adjust position sizing according to a formula...
As an example, let's say that I will be using a certain position sizing formula for the first 100 trades and then based on the account value after those 100 trades and the distribution of those 100 trades, I will be using different position sizing formulas afterwards.
To elaborate: If after the first 100 trades, the account value grew by 30% or more and the first 100 trades were 60 winners and 40 losers, win/loss ratio of 2.5/1, I need to have the ability to use another position sizing formula in this case for the next 100 trades and so on.
The main idea behind this, is that as you go, the system expectancy changes over time as you take on more and more trades and the basic concept is that if your system expectancy is getting better, you want to lift up your position size and make the most out of the enhanced expectancy and if your system expectancy is getting worse, you need to cut down your position size and trade smaller since when the system expectancy gets better, you are practically getting more rewards for each dollar you risk and vice-versa.
4- Execution details/conditions must be as flexible as possible and very close to real-life situations allowing for a variable or formula based slippage. The execution must also support formulas to precisely determine where and how to enter taking into consideration volume and liquidity (To be defined by formulas and filters)
5- Multiple system testing at the same time on multiple instruments must be supported, i.e. if I have 3 different trading systems and 100 instruments to trade based on the systems conditions, the package must allow for back testing all 3 trading systems among the 100 instruments at the same time, taking trades in the order they come based on the rules of the 3 systems and then combine the results in a single portfolio, as if the package is simulating a scan on a daily basis for the 100 instruments to see which system generated signals and execute the signals based on the system programmed conditions and so on managing multiple positions at the same time
6- Reporting and testing results must be comprehensive and exportable to excel. Basic statistical metrics must be included besides the profitability of the system or the combination of systems being tested. Equity curve data must be exportable to excel as well. Basic equity curve measures like max. drawdown, and average monthly drawdowns, variability of returns and standard deviation of the equity curve data, etc...are preferred to be present within the package
7- Optimization for 1 or more variables should be part of the package and the package should be able to optimize for non-standard variables, like optimize to achieve the min. drawdown, etc...
8- The package must have the ability to get data either from a real-time or automatic source, or manually through csv or excel files. It has to support continuous futures contracts data as well as options data
9- Financial Instruments to be supported are stocks, options, futures and OTC FX data and fields to be supported in the package database are Timestamp, open, high, low, close, volume, bid, bid volume, ask, ask volume, settlement price and open interest
Finally, sorry for the long post and sorry that I kept you reading all this. Your feedback is really really appreciated.
Regards,
Nader
To the point, I am currently testing several software package for backtesting strategies to choose the best one to use for a big project. I have to say that I have been away from such details for the past 2-3 years and I am sure my information is outdated and I need a refresher from the experts here who are using the current software packages and their experiences.
I am testing/demoing/trying the following packages right now (So, please if you have any feedback about any of them, it would be much appreciated to post a detailed reply):
1- Matlab
2- Trading Blox
3- MultiCharts
4- Trade Station
5- AmiBroker
6- NinjaTrader
Now, I know that most of the mentioned packages and platforms are mainly retail ones and they will be as good as retail usage for all tiers, however, I am open to institutional packages as well, if any member here does have a previous experience with one (Just to clarify, institutional packages means platforms used by hedge funds or prop desks in large banks).
No talk about MT (Metatrader) or Metastock please as I will not be using any of them. MT uses some variation of C and I am not willing to learn C as I don't have time. Metastock, I already tried and I have to say it's rubbish, very basic, limited and a lot of constrains, so it won't fit even a mid-tier retail needs.
I have used Matlab back in my old engineering days and I have to say it's a very handy tool, but again it will require a lot of code management and I am trying to minimize the coding as much as possible.
Here is what I am looking for in the backtesting platform, so if you have already experienced this in one of the above mentioned or in another platform not mentioned, your feedback is much appreciated:
1- The platform must be precise, accurate and as realistic as possible in backtesting, i.e. backtesting strategies as close as possible to reality
2- System design and construction must be as flexible as possible, allowing for all components and conditions to be created and with the possibility to link those components together, i.e. the package must offer the possibility of components dependency
For example, when simulating entries, one has to have the ability to construct the rules of the entries based on any possible condition or set of conditions, dependent or independent, without removing the possibility of integrating the entry component from other system components.
To clarify this, let's say that a strategy has a simple entry rule, which is going long when the price crosses above it's 20-EMA by 1% on an intraday basis, however, if the past 3 consecutive trades lost money, the entry rule should be crossing above the 20-EMA by 1.35% instead and if the past 2 consecutive trades were winners with an average of 15% profit or more, the entry rule should be crossing above the 20-EMA by 0.5% only....I hope you got my point...
The same applies not only to entry rules, but also to stop loss exits and profit exits.
3- Position sizing component/conditions can be constructed by any set of conditions or rules. As an example, if I need the position sizing to be dynamic based on the percentage difference between the price and a 250-EMA, I must be able to do this, where 100% of the position to be taken when the price is above/below the 250-EMA by 1% and position size decreases incrementally by 10% for every 1% step away from the 250-EMA in either directions...Needles to say that position sizing custom formula calculation must be supported and I must have the ability to use data from the equity curve serially to dynamically change the position size of next trades...Another very important thing in supporting position sizing calculations is to have the ability to use the calculated probabilities from results at a certain point to adjust position sizing according to a formula...
As an example, let's say that I will be using a certain position sizing formula for the first 100 trades and then based on the account value after those 100 trades and the distribution of those 100 trades, I will be using different position sizing formulas afterwards.
To elaborate: If after the first 100 trades, the account value grew by 30% or more and the first 100 trades were 60 winners and 40 losers, win/loss ratio of 2.5/1, I need to have the ability to use another position sizing formula in this case for the next 100 trades and so on.
The main idea behind this, is that as you go, the system expectancy changes over time as you take on more and more trades and the basic concept is that if your system expectancy is getting better, you want to lift up your position size and make the most out of the enhanced expectancy and if your system expectancy is getting worse, you need to cut down your position size and trade smaller since when the system expectancy gets better, you are practically getting more rewards for each dollar you risk and vice-versa.
4- Execution details/conditions must be as flexible as possible and very close to real-life situations allowing for a variable or formula based slippage. The execution must also support formulas to precisely determine where and how to enter taking into consideration volume and liquidity (To be defined by formulas and filters)
5- Multiple system testing at the same time on multiple instruments must be supported, i.e. if I have 3 different trading systems and 100 instruments to trade based on the systems conditions, the package must allow for back testing all 3 trading systems among the 100 instruments at the same time, taking trades in the order they come based on the rules of the 3 systems and then combine the results in a single portfolio, as if the package is simulating a scan on a daily basis for the 100 instruments to see which system generated signals and execute the signals based on the system programmed conditions and so on managing multiple positions at the same time
6- Reporting and testing results must be comprehensive and exportable to excel. Basic statistical metrics must be included besides the profitability of the system or the combination of systems being tested. Equity curve data must be exportable to excel as well. Basic equity curve measures like max. drawdown, and average monthly drawdowns, variability of returns and standard deviation of the equity curve data, etc...are preferred to be present within the package
7- Optimization for 1 or more variables should be part of the package and the package should be able to optimize for non-standard variables, like optimize to achieve the min. drawdown, etc...
8- The package must have the ability to get data either from a real-time or automatic source, or manually through csv or excel files. It has to support continuous futures contracts data as well as options data
9- Financial Instruments to be supported are stocks, options, futures and OTC FX data and fields to be supported in the package database are Timestamp, open, high, low, close, volume, bid, bid volume, ask, ask volume, settlement price and open interest
Finally, sorry for the long post and sorry that I kept you reading all this. Your feedback is really really appreciated.
Regards,
Nader