What Is A Robust Trading System?


With computers as powerful as they are today, it’s easy to

optimize a trading system and make it look exceptional. However, as we’ve
already discussed, an

optimized
system is not a good system. Just simply because you’re able to
train your computer to have 20/20 hindsight does not mean it will perform
anything like that in the future.

The primary problem with optimizing past performance is that markets change. A low volatility market suddenly becomes a high volatility market. A
market prone to trends becomes a choppy, directionless market. A market that had
high leverage has its margin changed and now has low leverage. A regulated
market suddenly becomes unregulated. The list is endless.

What tends to happen is that market X will tend to start acting like market Y
and market Y will tend to start acting like market Z, etc. If you have perfectly
optimized the system to trade market Z, then you will be in trouble when it
starts to trade like market X! This is a problem with many systems, especially
stock index systems that tend to be optimized to a single market or sector. In
spite of their occasional awesome-looking results, there can be a drop of poison
in the mix.

Contrast the previous scenario with one in which the system has been designed to
work equally well with markets Y, X and Z. Now it does not matter if market Z
starts to act like market Y. They can change as many times as they want, because
the system has been designed to be universally robust with ALL the various
markets! Once again, the market characteristics can reshuffle themselves
countless times and your system is like a Swiss Army knife that has proved it
can deal well with all (or most all) of those scenarios.

There are a few tip offs to an optimized system:

  1. Unrealistically good-looking
    performance
  2. Only trades one market or
    sector well
  3. Uses different rules for
    each market
  4. Uses different inputs for
    each market even if the rules are the same
  5. Uses different rules or
    inputs for buys vs. sells
  6. Uses money management
    methods that don’t include market normalization (like single contract
    performance only)

An important feature of a robust system is that it should treat every market
equally. The testing should have been done in such a way as to “normalize” the
difference between a markets. For example, natural gas changes an average of a
few thousand dollars per day per contract, however, eurodollars change an
average of a few hundred dollars a day. You need a way to balance and normalize
this difference in testing.

The reason you need to do this is because what if the system meets most of the
above non-optimized rules, BUT it’s trading one natural gas market contract for
every one eurodollar contract? The system would look great if in the past it had
a lot of natural gas winners. However, what it in the future natural gas starts
to have a lot of losing trades and the eurodollar starts to have a lot of
winning trades? Do you think the few hundred dollar winning trades in the
eurodollar are going to be enough to offset the few THOUSAND dollar losing
trades in natural gas? Of course not!

If you’re trading 20 markets, it’s because you want diversification. However, if
your trading them all on a single contract basis then your not really
diversified. You might have 50% of your portfolio accounting for 90% of the
profits and losses! The problem is that moving forward, you will be dependent on
specific markets instead of just a certain percentage of the markets (regardless
of which ones).

In summary, a robust system should do the following:

  1. Trade a large portfolio of
    markets successfully
  2. Trade that large portfolio
    successfully over a very long test period
  3. Use the exact same rules for
    every market
  4. Use the exact same input
    values for every market, even if the rules are the same
  5. Have the exact same logic
    and input values for both buys and sells
  6. Be tested in a way where the
    markets have been normalized for risk (not single contract)

After you have done all of this, the final step would be to do some walk-forward
testing. This means, test and develop your system on data up until 2000. Then
after all the testing is done, see how it would have done from 2000 until now,
etc. This helps avoid a lot of the benefit of hindsight. All of these are things
we have done in the development of both our Checkmate and Synergy trading
systems.

Feel free to email or contact me with any questions or comments on this subject.

Dean Hoffman



dhoffman@traderstech.net