|
With computer’s as powerful as they
are today its 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 (neural networks etc.).
The primary problem with optimizing past performance is that markets
change in the future. 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 it margin
changed and now it 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's a drop of poison in their mix.
Contrast the previous scenario with one in which the system has been
designed to work well most all markets A thru Z. Now, it does not
matter if market Z starts to act like market Y or market A starts to
act like market P etc.. They can change as many times as they want
because the system has been designed to be universally robust with most
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 proven in historical testing it can deal well with
most all of those scenarios.
There are a few tip offs to an optimized system.
- Unrealistically
good looking performance
- Only
trades one market or sector well
- Uses
different rules (algorithms) for each market
- Uses
different inputs for each market even if the rules are the same
- Uses
different rules or inputs for initiating buys vs. sells
- Does not
factor in realistic transaction costs (slippage & commission)
- Uses money
management methods that don’t include market normalization (like single
contract performance only)
- Uses
static numbers for all markets like a $2000 stop or $5000 profit target
(some markets could hit those in an hour and others could take weeks).
This may seem to contradict #3 but it does not. Its ok if markets have
different stops and targets etc. as long as they were all dynamically
computed from the same algorithm and inputs (as opposed to a static
predetermined number across the board).
An important feature of a robust
system is that it should weight every market equally. The testing
should have been done in such a way to “normalize” the difference
between the 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 per contract. 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, its 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
a number of hundred dollar winning trades in a single Eurodollar
contract are going to be enough to offset a number of THOUSAND dollar
losing trades in a single natural gas contract?
If your trading 20 markets its 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 dependant on specific markets instead of just a certain
percentage of the markets (regardless of which ones). Its far more
robust not to be dependant on certain markets within the portfolio. No
one market should be any more meaningful than any other one.
In summary a robust system should do the following
- Trade a
large portfolio of markets successfully
- Trade that
large portfolio successfully over a very long test period
- Use the
exact same rules for every market
- Use the
exact same input values for every market even if the rules are the same
- Have the
exact same logic and input values for initiating both buys and sells
- Factors in
realistic transaction costs (slippage & commissions)
- Be tested
in a way where the markets have been normalized for risk (not single
contract)
- Doesn't
use Static preset exits for all markets IE $2000 stop or $5000 profit
target for all markets, but rather dynamically computed ones.
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 year 2000 (for example).
Then after all the testing is done see how it would have done from year
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 our systems.
Feel free to email or contact us
with any questions or comments on this subject. dhoffman@traderstech.net
|