by Peter Bernstein
The FDX system was not created by mainstream system developers with 20 years of experience but rather by a small group of individuals who wanted to turn some technical trading experience into a usable set of rules and systematize them. In the process we learned a lot about how to approach a project and a found few places where it was necessary to invent our own ways of doing things. It turned out that some of our inventions weren't as original as we thought but that was only because we discovered through later research that others were taking the same approach. Sometimes isolation is a good thing when it doesn't expose you to too many preconceptions.
A few guiding ideas for system developement.
The most important thing to know going in is what you don't know.
We used to be in a trading room where the leader constantly complained that making trading system development tools so accessible made everybody think they're a genius. He would say "Everybody wants to be a doctor but nobody wants to go to medical school". The first time you see a system like TradeStation with all the preprogrammed indicators and strategies it is hard not to imagine yourself discovering the 'holy grail' of trading. It's important to keep in mind that everyone has access to these same tools and the ' holy grail ' of trading has yet to be discovered despite all the hours of time spent trying out every possible combination of indicators, timeframes, etc ad nauseum. The best we can hope for is to beat the markets by a enough of a percentage to make it worth our while and then only after learning enough to go about it intelligently
The RULE
Don't trade a dime until you know what you are doing.
Would you take you car to a mechanic who just found out what a spark plug is?
Then why would you even think about trading real money when you are just beginning to learn about system development ? Wait. There's plenty of time once you know what you're doing.
1 ) Read and learn but don't believe everything. Form your own opinions based on what you see over time.
There are many books out there on the subject of trading systems and most of them make good reading. But beware : Simply becaaue they include code for systems that doesn't mean that those systems will actually be profitable. There are discs available online that are full of pirated systems and 'proprietary ' indicators. There are chatrooms and message boards everywhere with self appointed trading gurus. There are trading courses you can take for free or ones you can pay lots of money for. In our experience everything we've ever learned in a paid situation is also availale for free if you look hard enough. There are very very few secrets and the one thing you can't buy at any price is your own experience. That is simply a function of time.
It is important to be patient enough and gather enough knowledge to know what you don't know and then go find it. Learning this is a process and it will not happen overnight. However every failed system and every new indicator tried and every chatroom conversation with a self-appointed expert will add to your knowledge base.
There are a few very useful sites with information. For a dictionary-like explaination of terms we like http://www.investopedia.com/dictionary/.
Some charting sevices will give you a free demo and during that time you can use their help files to gather information. Same thing for some of the trade advisory services and the message board they all support. But be sure to take message boards with a grain of salt. You might find some truly useful contacts there but you will also find those who might not be as smart as they like to sound. There are those those who enjoy indimidating you with their vast wealth of knowledge. Gather such information as they are willing to dispense and move on.
Don't fall for every good sounding new idea. In the course of learning you will probably run across some one who tells you about the fantastic results they're getting with this new indicator you've never heard of. Then there is the mad search to find this miraculous device which ends with disappointment when you learn from your own experience that it is only useful in certain ways at certain times if at all. The obvious answer of course is to combine it with these other 15 indicators you're using until your charts look like look like pop art and you can clearly see a reason for going short, long and sideways at the same time.
Be patient and let it come to you at your own pace. It will. Read everything, see everything, try everything and form your own opinions.
2 ) Decide what sort of trading you want to to and make sure that you are going to be comfortable trading in that style.
So you ran across trend following systems in the course of your learning and that idea appeals to you. But did you know that many of the successful ones trade off of daily bars and trade infrequently ? Did you know that they may also have many more losers than winners and their drawdown periods can go on for months ?
How about trading Forex currency pairs ? Did you know that the Forex market trades 24 hours a day 5 days a week and that some of the most important action takes place in the middle of the night no matter where on the planet you are ?
Fast time frame day trading ? Be prepared for spreads and commissions to take a big part of your profits and increase your losses.
Every trading style has its drawbacks and you need to find your comfort level. Trading a system that drives you crazy either from the time required to run it or simply because it's boring just isn't worth it. You will discover your comfort level over time by trying on various trading styles. Don't keep going with something that you can't live with long term. Find the right fit. It's out there somewhere.
3 ) Programming and Programmers
You've read all the books, seen the sites, talked to every trading guru you can find, and came up with a great idea for a trading system that fits your style perfectly. Are you a programmer? We're guessing no. Even though many programmable charting systems have ready made indicators and strategies even assembling a few of those into a working whole can be daunting for a newcomer. It might be better idea to find a programmer to work with. This will relieve you of the burden of suddenly having to learn all this while providing a great learning expreience as you watch your ideas take shape. Learning to program your own systems is certainly a worthy goal but unless you have a strong background in the area it will take some real time and effort and help to be able to do it well enough to trust your account to.
Finding some one is pretty easy but it would be wise to make sure you are compatable.
Again the help files and message boards of the systems provide a lot of information and contacts with other people at all levels of accomplishment who are willing to help. As always you'll want to carefully check references.
Communicating with a programmer is its own art. You must be prepared to write up a very detailed description and/or flow chart of your system including all the parameters you want to be able to change or test once it is done. If your strategy is multi-leveled using groups of entries and exits, adjustable stops and money management you must be careful to fully think it through or later on you will find youself with a host of issues that fall into the category of 'Oh I hadn't considered that '. Nothing irks a programmer more than being asked to redo code again and again because it was not well conceived in the first place even though they are being paid for their time. Nothing irks a system designer like you more than having a programmer walk away in the middle of a project and programmers generally do not like having to finish other programmers work.
Once it is done not only will you have ( hopefully ) good solid code but it will be code for a system that you understand and thus a great jumping-off place for learning more about the process of programming. Save a copy of it to play with. You'll learn more from tweaking the code of a system you designed then from any book or class.
4 ) Backtesting
You are about to see how your system would have performed in the past. The first question is how long of a backtest period should be used. The answer is that it depends on the system. A system geared for quick day trades probably doesn't need decades of trade data while a trend following system might. There is a balance to be struck between having so little data that your results are easy to 'curve fit ' and so much that the results are too generic and not applicale to what is happening now. You might find that your system backtested on 6 months of data performs much better than when it is backtested on 4 years of data. Try to enter the procees with as few preconceptions as possible and be willing to go where the results lead you. You have probably seen systems advertising themselves as 'backtested for 15 years' or something like that but it doesn't mean that the designers were doing the right thing or properly interpreted the results.
Are you going to test a wide range of values for every parameter of every indicator and system feature of your strategy ? If you have 10 variables and each one has a possible useful range of 100 data points and you're testing them all together that will keep your computer busy well into the next century. You will need to learn what are the meaningful ranges of values for each or the tested parameters. One way to do this is tesing very 5th or 10th value and then refining it as the system seems to home in on meaningful ranges.
Another short cut is to test smaller groupings of parameters. If your system is multi-leveled it may use groups of parameters that can loosely be called the entry group the money management group and the exit group and can be tested separately. Be careful to test them in the proper order though. It wouldn't make sense to test all the exit values without first knowing where your entries are.
There are also a few software pieces around that claim to greatly streamline the testing process and allow you to perform many more testes in a short period of time. They might be worth a look.
Results can be misleading. The highest tested profit is not necessarily the best result. It is best to find stable areas of values to work with. If the next tested value to your big profit test shows a large fall off it means that the system is unstable in that area and vulnerable to small market fluctuations. Look for the best results across the widest area of values. The best work we've seen on this is Thomas Stridmann's Trading Systems that Work. It's quite technical in places but very useful in this area.
One more thing : Be sure to account for commissions, spreads and slippage in your results.
5 ) Forward Testing
What does it mean that your system tested extemely well on years of historical data ? Perhaps nothing. Especially if you are using a combination of many indicators generate your results which makes it much easier to curve fit the solution. A much better test is how your backtested results compare to what the system does with untested historical data.
The simplest solution is to perform the backtest on historical data leaving a space from the end of the test period to the present time. When the backtest is completed and your parameters are set download the data from the end of the test period to the present and see how the system performs. If these is a big performance fall off you might want to reconsider.
Other things to think about here are: What is a meaningful amount of unseen data relative to the backtest period ?
Is the rage and incremental change of tested values appropriate for both the known and unknown data ? The answers of course depend on the nature of your system but it is an important point and goes to the heart of the testing process. Be prepared to try various combinations.You can also forward test in successive increments of time moving forward as you readjust the system.
6 ) What Does all that Testing Mean ?
Testing, back forward or sideways, only means that you have arrived at what appears to be the best solution for your system to operate in the real world. ' Appears ' is the key word here. Even the most sophisticated forward testing is limited by the way your charting program stores and displayes historical data. For instance an historical chart showing one hour bars will show you the open high low and close of each hour of activity but not necessarily what happened in between. If your system only allows you to trade at the opening of the next bar after the bar in which a stop or target is reached and you are using one hour bars you might have to wait 59 minutes and 59 seconds. As we know a lot can happen in the markets in that time and your real time result could be very different from what a test, back or forward would have shown.
In the end the only real test is real time real world performance over a meaningful period of time. Many systems work well for a while and then give up their gains and much more as the markets change. Be patient. It could also turn out that bad performance at the beginning of your real time test is temporary and the markets will get themselves back into the condition that your system loves and stay there for a long time.
Be aware that there is a difference between a system that is successful and a system that makes money. A system that wins more than it loses is successful but it could turn out that various other real world conditions interfere with its ability to profit. Some of these are slippage and commisison greater than anticipated, poor trade execution, occasional loss of data, various computer glitches, not to mention PEBCAC which stands for "Problem Exists Between Computer and Chair". We can sometimes get in the way of our own successful systems. Trading, computer generated or not, is hard and sometimes the urge to fix something that isn't broken gets the better of us.
7 ) The End ( of the Beginning ), Back to the Drawing Board and Realistic Expectations
Perhaps the most difficult thing in this process is keeping an open mind and letting the results lead you to a conclusion and not the other way around. Simply bacause a chart that uses a moving average crossover to enter and exit trades looks like it will work as a system doesn't mean that it will. Sure there are lots of big winners but what about all the small losers that occur before a trend takes hold ? They add up. The site selling a trading course based on stochastic and MACD divergences has pages of stats showing success but trying to systematize that is another story.
There is no shortage of methods out there claiming to be the answer to your questions but here is our question: If they really could be as successful as some of them claim would they be sharing it with you for a few dolars ? Again we're guessing no.
However every failed system we try and every rediculous method we temporarily fall for and every can't-miss proprietary indicator we buy or disc full of old systems we load up adds to our store of information. Of course most of that doesn't work just like the most of everything we try for the first time doesn't work whether it's trading currencies or hitting a golf ball. The difference is that almost no one thinks they're going to be a professional golfer but almost everyone hopes that after a short time they'll be able to make good money trading.
Here's another thought : We hear lots of stories about huge annual or monthly percentage returns using this or that system but have we ever personally experienced it ?
In the real world if you are a hedge fund manager who can generate 20% annually and consistantly and RELIABLY you'll be managing billions in no time. In the make-believe world of hyped-up gonna-be-a-genius-in-no-time (but just spend some money on us first) trading a 20% annual return isn't even on the radar. Are we missing something here ?
Perhaps it is time to realign our expectations. If our tagets are equal to our stops then we only have to right 51% of the time. Perhaps that is a good place to start. When your fist system does not live up to expectations take that information and use it when you create the next one. Expect to be frustrated a lot. Expect totally unexpected results. And by all means keep an open mind.
Peter Bernstein
ForexDynamix
The FDX system was not created by mainstream system developers with 20 years of experience but rather by a small group of individuals who wanted to turn some technical trading experience into a usable set of rules and systematize them. In the process we learned a lot about how to approach a project and a found few places where it was necessary to invent our own ways of doing things. It turned out that some of our inventions weren't as original as we thought but that was only because we discovered through later research that others were taking the same approach. Sometimes isolation is a good thing when it doesn't expose you to too many preconceptions.
A few guiding ideas for system developement.
The most important thing to know going in is what you don't know.
We used to be in a trading room where the leader constantly complained that making trading system development tools so accessible made everybody think they're a genius. He would say "Everybody wants to be a doctor but nobody wants to go to medical school". The first time you see a system like TradeStation with all the preprogrammed indicators and strategies it is hard not to imagine yourself discovering the 'holy grail' of trading. It's important to keep in mind that everyone has access to these same tools and the ' holy grail ' of trading has yet to be discovered despite all the hours of time spent trying out every possible combination of indicators, timeframes, etc ad nauseum. The best we can hope for is to beat the markets by a enough of a percentage to make it worth our while and then only after learning enough to go about it intelligently
The RULE
Don't trade a dime until you know what you are doing.
Would you take you car to a mechanic who just found out what a spark plug is?
Then why would you even think about trading real money when you are just beginning to learn about system development ? Wait. There's plenty of time once you know what you're doing.
1 ) Read and learn but don't believe everything. Form your own opinions based on what you see over time.
There are many books out there on the subject of trading systems and most of them make good reading. But beware : Simply becaaue they include code for systems that doesn't mean that those systems will actually be profitable. There are discs available online that are full of pirated systems and 'proprietary ' indicators. There are chatrooms and message boards everywhere with self appointed trading gurus. There are trading courses you can take for free or ones you can pay lots of money for. In our experience everything we've ever learned in a paid situation is also availale for free if you look hard enough. There are very very few secrets and the one thing you can't buy at any price is your own experience. That is simply a function of time.
It is important to be patient enough and gather enough knowledge to know what you don't know and then go find it. Learning this is a process and it will not happen overnight. However every failed system and every new indicator tried and every chatroom conversation with a self-appointed expert will add to your knowledge base.
There are a few very useful sites with information. For a dictionary-like explaination of terms we like http://www.investopedia.com/dictionary/.
Some charting sevices will give you a free demo and during that time you can use their help files to gather information. Same thing for some of the trade advisory services and the message board they all support. But be sure to take message boards with a grain of salt. You might find some truly useful contacts there but you will also find those who might not be as smart as they like to sound. There are those those who enjoy indimidating you with their vast wealth of knowledge. Gather such information as they are willing to dispense and move on.
Don't fall for every good sounding new idea. In the course of learning you will probably run across some one who tells you about the fantastic results they're getting with this new indicator you've never heard of. Then there is the mad search to find this miraculous device which ends with disappointment when you learn from your own experience that it is only useful in certain ways at certain times if at all. The obvious answer of course is to combine it with these other 15 indicators you're using until your charts look like look like pop art and you can clearly see a reason for going short, long and sideways at the same time.
Be patient and let it come to you at your own pace. It will. Read everything, see everything, try everything and form your own opinions.
2 ) Decide what sort of trading you want to to and make sure that you are going to be comfortable trading in that style.
So you ran across trend following systems in the course of your learning and that idea appeals to you. But did you know that many of the successful ones trade off of daily bars and trade infrequently ? Did you know that they may also have many more losers than winners and their drawdown periods can go on for months ?
How about trading Forex currency pairs ? Did you know that the Forex market trades 24 hours a day 5 days a week and that some of the most important action takes place in the middle of the night no matter where on the planet you are ?
Fast time frame day trading ? Be prepared for spreads and commissions to take a big part of your profits and increase your losses.
Every trading style has its drawbacks and you need to find your comfort level. Trading a system that drives you crazy either from the time required to run it or simply because it's boring just isn't worth it. You will discover your comfort level over time by trying on various trading styles. Don't keep going with something that you can't live with long term. Find the right fit. It's out there somewhere.
3 ) Programming and Programmers
You've read all the books, seen the sites, talked to every trading guru you can find, and came up with a great idea for a trading system that fits your style perfectly. Are you a programmer? We're guessing no. Even though many programmable charting systems have ready made indicators and strategies even assembling a few of those into a working whole can be daunting for a newcomer. It might be better idea to find a programmer to work with. This will relieve you of the burden of suddenly having to learn all this while providing a great learning expreience as you watch your ideas take shape. Learning to program your own systems is certainly a worthy goal but unless you have a strong background in the area it will take some real time and effort and help to be able to do it well enough to trust your account to.
Finding some one is pretty easy but it would be wise to make sure you are compatable.
Again the help files and message boards of the systems provide a lot of information and contacts with other people at all levels of accomplishment who are willing to help. As always you'll want to carefully check references.
Communicating with a programmer is its own art. You must be prepared to write up a very detailed description and/or flow chart of your system including all the parameters you want to be able to change or test once it is done. If your strategy is multi-leveled using groups of entries and exits, adjustable stops and money management you must be careful to fully think it through or later on you will find youself with a host of issues that fall into the category of 'Oh I hadn't considered that '. Nothing irks a programmer more than being asked to redo code again and again because it was not well conceived in the first place even though they are being paid for their time. Nothing irks a system designer like you more than having a programmer walk away in the middle of a project and programmers generally do not like having to finish other programmers work.
Once it is done not only will you have ( hopefully ) good solid code but it will be code for a system that you understand and thus a great jumping-off place for learning more about the process of programming. Save a copy of it to play with. You'll learn more from tweaking the code of a system you designed then from any book or class.
4 ) Backtesting
You are about to see how your system would have performed in the past. The first question is how long of a backtest period should be used. The answer is that it depends on the system. A system geared for quick day trades probably doesn't need decades of trade data while a trend following system might. There is a balance to be struck between having so little data that your results are easy to 'curve fit ' and so much that the results are too generic and not applicale to what is happening now. You might find that your system backtested on 6 months of data performs much better than when it is backtested on 4 years of data. Try to enter the procees with as few preconceptions as possible and be willing to go where the results lead you. You have probably seen systems advertising themselves as 'backtested for 15 years' or something like that but it doesn't mean that the designers were doing the right thing or properly interpreted the results.
Are you going to test a wide range of values for every parameter of every indicator and system feature of your strategy ? If you have 10 variables and each one has a possible useful range of 100 data points and you're testing them all together that will keep your computer busy well into the next century. You will need to learn what are the meaningful ranges of values for each or the tested parameters. One way to do this is tesing very 5th or 10th value and then refining it as the system seems to home in on meaningful ranges.
Another short cut is to test smaller groupings of parameters. If your system is multi-leveled it may use groups of parameters that can loosely be called the entry group the money management group and the exit group and can be tested separately. Be careful to test them in the proper order though. It wouldn't make sense to test all the exit values without first knowing where your entries are.
There are also a few software pieces around that claim to greatly streamline the testing process and allow you to perform many more testes in a short period of time. They might be worth a look.
Results can be misleading. The highest tested profit is not necessarily the best result. It is best to find stable areas of values to work with. If the next tested value to your big profit test shows a large fall off it means that the system is unstable in that area and vulnerable to small market fluctuations. Look for the best results across the widest area of values. The best work we've seen on this is Thomas Stridmann's Trading Systems that Work. It's quite technical in places but very useful in this area.
One more thing : Be sure to account for commissions, spreads and slippage in your results.
5 ) Forward Testing
What does it mean that your system tested extemely well on years of historical data ? Perhaps nothing. Especially if you are using a combination of many indicators generate your results which makes it much easier to curve fit the solution. A much better test is how your backtested results compare to what the system does with untested historical data.
The simplest solution is to perform the backtest on historical data leaving a space from the end of the test period to the present time. When the backtest is completed and your parameters are set download the data from the end of the test period to the present and see how the system performs. If these is a big performance fall off you might want to reconsider.
Other things to think about here are: What is a meaningful amount of unseen data relative to the backtest period ?
Is the rage and incremental change of tested values appropriate for both the known and unknown data ? The answers of course depend on the nature of your system but it is an important point and goes to the heart of the testing process. Be prepared to try various combinations.You can also forward test in successive increments of time moving forward as you readjust the system.
6 ) What Does all that Testing Mean ?
Testing, back forward or sideways, only means that you have arrived at what appears to be the best solution for your system to operate in the real world. ' Appears ' is the key word here. Even the most sophisticated forward testing is limited by the way your charting program stores and displayes historical data. For instance an historical chart showing one hour bars will show you the open high low and close of each hour of activity but not necessarily what happened in between. If your system only allows you to trade at the opening of the next bar after the bar in which a stop or target is reached and you are using one hour bars you might have to wait 59 minutes and 59 seconds. As we know a lot can happen in the markets in that time and your real time result could be very different from what a test, back or forward would have shown.
In the end the only real test is real time real world performance over a meaningful period of time. Many systems work well for a while and then give up their gains and much more as the markets change. Be patient. It could also turn out that bad performance at the beginning of your real time test is temporary and the markets will get themselves back into the condition that your system loves and stay there for a long time.
Be aware that there is a difference between a system that is successful and a system that makes money. A system that wins more than it loses is successful but it could turn out that various other real world conditions interfere with its ability to profit. Some of these are slippage and commisison greater than anticipated, poor trade execution, occasional loss of data, various computer glitches, not to mention PEBCAC which stands for "Problem Exists Between Computer and Chair". We can sometimes get in the way of our own successful systems. Trading, computer generated or not, is hard and sometimes the urge to fix something that isn't broken gets the better of us.
7 ) The End ( of the Beginning ), Back to the Drawing Board and Realistic Expectations
Perhaps the most difficult thing in this process is keeping an open mind and letting the results lead you to a conclusion and not the other way around. Simply bacause a chart that uses a moving average crossover to enter and exit trades looks like it will work as a system doesn't mean that it will. Sure there are lots of big winners but what about all the small losers that occur before a trend takes hold ? They add up. The site selling a trading course based on stochastic and MACD divergences has pages of stats showing success but trying to systematize that is another story.
There is no shortage of methods out there claiming to be the answer to your questions but here is our question: If they really could be as successful as some of them claim would they be sharing it with you for a few dolars ? Again we're guessing no.
However every failed system we try and every rediculous method we temporarily fall for and every can't-miss proprietary indicator we buy or disc full of old systems we load up adds to our store of information. Of course most of that doesn't work just like the most of everything we try for the first time doesn't work whether it's trading currencies or hitting a golf ball. The difference is that almost no one thinks they're going to be a professional golfer but almost everyone hopes that after a short time they'll be able to make good money trading.
Here's another thought : We hear lots of stories about huge annual or monthly percentage returns using this or that system but have we ever personally experienced it ?
In the real world if you are a hedge fund manager who can generate 20% annually and consistantly and RELIABLY you'll be managing billions in no time. In the make-believe world of hyped-up gonna-be-a-genius-in-no-time (but just spend some money on us first) trading a 20% annual return isn't even on the radar. Are we missing something here ?
Perhaps it is time to realign our expectations. If our tagets are equal to our stops then we only have to right 51% of the time. Perhaps that is a good place to start. When your fist system does not live up to expectations take that information and use it when you create the next one. Expect to be frustrated a lot. Expect totally unexpected results. And by all means keep an open mind.
Peter Bernstein
ForexDynamix