Criteria for portfolio composition

1. It’s necessary to choose strategies with good performance which you like (don’t forget, a spoonful of tar can spoil a whole barrel of honey). The more strategies you use, the higher the diversification, and the lower the yield, max. drawdown, and volatility of your portfolio.
The more strategies you use, the less you will be exposed to the risk in the long-term and the better you will be able to trade in different regimes of the market.

2. Allocate a certain trading size (for example, 0.04lots per $1000) for each strategy. Next, divide this trading size between pairs / presets that you want to use. For instance, if you’re going to use 4 presets the trading size for each pair can be 0.01lots per $1000 (0.04/4 = 0.01).

3. I don’t recommend giving a significant trading advantage (for example, the more significant trading size) to one of the strategies used.

4. It’s essential that the profit ratio of M/MR strategies in a portfolio is at least 70%/30%. It’s better if it is 50%/50%.

5. Your portfolio must withstand a long losing streak. Such a streak will necessarily happen in the future. If you lose 50%, then to recover the losses you must make 100%.

Reliable backtest results

A correct backtest of a trading strategy requires accurate historical data. Most brokers don’t have good historical data when downloading it from MT4. They provide data of poor quality from Metaquotes.


I know two ways to test with high quality.

1) Using the TDS2 software with real tick data from Dukascopy and real variable spreads (it is the best way, but the TDS2 is not for free).

2) Using Alpari MT4 (free). Alpari provides some of the best historical data. They close daily charts at 5 pm New York time. Just open a demo account through MT4 and download their data via ‘History Center’.


It’s essential to optimize a strategy correctly, taking into account robustness. The robustness is an ability of a strategy to make money in the future. The more robustness, the more likely that results of a backtest are not just a randomness.
A value of each parameter should have a rationale. Optimizing only one parameter at the same time is necessary.

A robust parameter of a model can behave in 3 ways:

1. It can work in a wide range of values, without a significant effect on performance of a strategy. But if we turn it off, then the strategy will stop working.
2. It can work as a filter. But if we turn it off, then a strategy will stop working.
3. It can work like this:

Model parameter

If a robust strategy has failed and no longer makes money, optimization cannot revive it because the market inefficiency has disappeared.

Values ​​of filters should be selected based on the performance of a model: trades/PF/ A filter value cannot be optimized, by its definition. Filtering of trades is just a way to improve the performance of the model. Filtering reduces the number of trades and increases the profit factor and avg trade. Filters cannot turn a losing strategy into a winning strategy. A robust strategy should be profitable without using any filter.

A robust parameter of a filter can behave like this:

Filter parameter

The difference between the model and filter parameters is simple:
If you exclude a filter component, then such a strategy will show less performance, but it will still work. If you exclude a model component, then such a strategy will stop working, and the equity curve will turn into a random walk. Therefore, parameters of a model are the basis of any strategy.

The mathematical (statistical) advantage of trades decreases with the position holding time. Therefore, it’s needed to use a time-stop (see ‘StopBar’ and ‘StopHour’ parameters). It’s easy to understand how it works if try to optimize it.

like this:


The longer the holding time, the higher the trading risk.

Blind optimization (without any rationale) makes no sense.