population; when it has a low score, it is removed orreduced from the population. This can be done by modifying the list of conditions, whichis used to create new genes and individuals randomly. For example, in the first gene wehave the possibility of four wend criteria:
1. Moving average
2. Exponential smoothing3. Linear regression
4, Breakout
Using random selection, each one has an equal chance of being picked. Let us say that weperform the first 10 tests without removing any of the possibilities, but only measure theaverage ranking of the results. On the 11th test, we select linear regression and comparethe results of its fitness with the average fitness of the first 10 tests. If the fitness is greater,we make a number of copies of this linear regression gene and add it to the list of trendingmethods. One popular way to calculate the number of copies is to divide the current fit-ness, f by the average fitness, F of previous tests. Therefore,
Number of copies = current fitness/average fitness
This method works best when there are a large number of choices rather than only fourpossibilities. However, if the fitness of the linear regression was 4, and the average fitnessof previous tests was 2, we would make two copies, replacing the original entry. The newlist would then have ~
1. Moving average
2. Exponential smoothing ~3. Linear regression
4. Breakout
5. Linear regression
When a trend criterion is mutated, that is, another criterion is selected randomly from thelist, there is now a 40% chance thata linear regression will be selected, and a 20% chancethat another method will be used. Natural selection has resulted in the linear regressionbeing more desirable because its fitness ranks higher. In the initial tests that formed theaverage fitness, there were other conditions that were mutated other than the trend crite-ria. It could be that these conditions were the reason for the higher score, and not thetrend method. At the same time the first gene is copied, other genes that were part of thesame chromosome were also copied, so that all of these genes have a better chance ofappearing. Because we have not eliminated any of the other trend criteria, each one shouldappear from time to time. If the breakout method is actually better than the linear regres-sion, it should have a higher fitness when it is mutated; it will then be copied and, theo-retically, displace the linear regression as the survivor. Eliminating a choice may speed upthe genetic algorithm, but introduces the possibility of removing a good technique on thebasis that it only appeared in combination with other genes that were not strong.
Putting It into Practice: Training, Tuning, and Testing
The technique for a successful search using a genetic algorithm requires that the data bedivided into three subsets—training, tuning, and testing—in a manner similar to a neuralnetwork and using a procedure of step-forward testing. Beginning with the first 1,000 datapoints, the system is trained; it is then cuned on the next 500 data points, and finally theperformance using a test set of only 10 points is recorded. The process is then continuedby shifting the data forward by 10 points. In this way, the performance is recorded for dis-502° ADVANCED TECHNIQUES
 
joint tests of 10 points. This process implies that new parameters must be found every 10data points for trading to duplicate the training method. \CONSIDERING GENETIC ALGORITHMS, NEURAL NETWORKS,
AND FEEDBACK
Stumbling onto the perfect solution, or even a better solution, is always acceptable. Rec-ognizing a good solution, by hard work or by chance, still requires talent; many discover-ies that seem to have occurred by chance are really the product of hard work that providesthe opportunities for discovery. A genetic algorithm is a way of recognizing a situation thatmay be an improvement or a brilliant new method—but not always. Unlike real-life geneticmutations in which you can relate the change to the environmental need, this genetic algo-rithm may simply apply an isolated rule because of a single situation that may never occuragain in the same way. To follow the path of a mutation, we need to confirm that this newtule is statistically and logically sound—that there are enough cases to make it appear tobe the right choice. Don’t accept the results without careful thought and validation.
The large number of possible tests that make the genetic algorithm valuable alsorequires that you understand the concept of local versus‘global solutions. When you startwith a random set of rules and parameters, then vary some and combine others, it is pos-sible that you will find a focal maxima, that is, a good solution but not the best. It is pos-sible that a combination of trends and indicators that would have produced the perfectsystem was never seeded by the random process, nor was it found by changing some of thevalues during the process. One solution is to run the genetic algorithm a number of timesto see if it arrives at the same solution starting with different random values. While it is nota guarantee that you will cover all major combinations, especially when there are a massivenumber of variations, it is the simplest way to avoid serious oversights.
Feedback is the basis for successful solutions using advanced searching methods, butit also creates uncertainty. For example, a neural network may be trained on 70% of thedata and tested on 20%. When the test data is used to evaluate the weighting factors foundusing the training data, it provides feedback, which biases the selection of weighting fac-tors in the training data. Although these data sets are separated, the constant feedbackbetween the two provides a connecting tunnel that requires them to be considered-as onedata set. The testing data is no longer out-of-sample; therefore, another 10% of the data iswithheld for scientific out-of-sample testing when the final solution is found. If that 10%data does not produce results consistent with the training and testing, then the inputsmust be changed and the process begins again. There is now a dilemma as to whetherthere is any out-of-sample data at all because the 10% held aside has been used as feedbackfor the entire process.
This problem is not unique to neural networks and genetic algorithms, but to all test-ing processes beginning with basic serial optimization, How do you test your results oncurrent data without being guilty of feedback? There is really no answer. Statisticians claimthat the best solutions use the most data; you can’t overfit a solution when you test a largenumber of situations. The results are forced into being generalized. Holding a smallamount of data aside for out-of-sample testing may not prove anything unless the resultsare exceptionally bad, If the out-of-sample results are poor, they may still be representativeof one or two small periods during a long historic test. The final decision rests with thetrader and not the computer, If the results seem reasonable, there was sufficient test data,the inputs were relevant, and the performance was monitored before trading begins, thenthe solution is likely to be good.2!
Testing
 
cult to get data, you needed to apply your rules manually to each price, you kept a
handwritten record of your trades, and it took a long time. You were careful not tobegin unless you were reasonably sure that the method had a good chance of success; thiswas based on an understanding of the fundamentals or market experience.
During the past 20 years that process has changed, not always for the better. Thosewho have applied the same diligence and selectivity to the automation of systems are likelyto have gotten better results and more useful information than ever before. Others whohave become careless because of the power and convenience of trading strategy develop-ment software are not having much success. Bigger and faster computers do not mean bet-ter results, .
Computers give back as much as you put in. The tools alone do not result in a suc-cessful trading program. The thought process and creativity are needed to be competitivein today’s market, although thoroughness and focus are qualities that can never be under-estimated, Certainly, computers allow us to solve problems of magnitude and complexitythat we could never have considered before, and do it in a way that is easy to understand.We can manipulate incredible amounts of data and find out not only whether our ideas aresound, but the risks associated with various events.
One of the most interesting techniques to develop from computerization is optimiza-tion. It is not the mathematical process of finding a local maximum in a field of continu-ous contours; instead, it is the iterative process of repeatedly testing data to find the singlebest moving average speed, point-and-figure box size, stop-loss size, or other information.That is not to imply that it could not be more. Optimization is an irresistible method whena computer is available, and, in an indiscriminate way, it has replaced logical selection. It isfrequently the means of creating strategies referred to as black box methods, and oftenresults in fine tuning, which produces systems that invariably generate high expectationsbut poor actual performance.
Computers present a serious, often futile, dilemma for the analyst. If a tend-followingsystem is the objective and some form of smoothing-+echnique is selected (a simple or step-weighted moving average, exponential smoothing), how do you select the right speed?‘Twenty years ago, the 5-, 10-, and 20-day moving averages were most popular because theyrepresented a 1-week, 2-week, and 1-month time interval. They were also easy to calculate.In fact, the 10-day moving average was the most common because no division was necessaryto arrive at the average. Unfortunately, that simple approach no longer works.
Consider what is necessary to create a trading strategy. For a trend system, once thetrend period has been logically selected (e.g., 10-day) and the trading rules determined(such as a stop-loss), you will want to know the performance of that choice over past mar-kets. Lf it proves successful, you may trade using that method; however, if it does not meetexpectations using the test data, what do you do? With a computer, the answer is easy: tryanother trend speed and see if the results are better. This follows a perfectly natural pro-gression; after all, who would use a system today that has failed to be profitable in the past?
Te a trading system was once a very simple process, Not so long ago it was diffi-504° TESTING
 
It is obvious that a trader with a talent for computers who has purchased a Trade-Station, MetaStock, of another software package for testing, will take an organizedapproach to experimenting with a broad selection of trend speeds, box sizes, stop-losspoints, and trading rules to arrive at a system with an excellent trading profile. When nosatisfactory combination can be found for a specific market, that market will not be traded.This method of optimization has become a dominant factor in the development of tradingsystems; it is entirely dependent on having a computer.
The following sections will discuss various aspects of testing and optimization. Per-formed properly, testing can teach a great deal; done incorrectly, it can be misleading andcompletely illogical. It is not always easy to know which case has just been satisfied.
EXPECTATIONS
Expectations are an underrated part of system development. It forces you to define yourideas in advance and put substance into those plans. You need to decide the rules, timeperiod over which the system should work, the relative risk, the proportion of profitabletrades, and other characteristics. The importance of this comes when you see actual testTesults. :
Testing should be the process of validating your ideas. That first requires that youdefine those ideas in a.clear plan and decide whether it should work for hourly, daily, orweekly intervals. If the test results confirm your ideas, then you can have confidence in thestrategy. If they differ, you know that something is wrong, either with your plan or the wayit was entered into the computer. Without expectations, there can be no validation or con-firmation; therefore, if you indiscriminately test all indicators combined together, you haveno idea whether you have found a good idea or simply overfit the data.
Setting Your Objective .
There are a number of steps that must be carefully performed before testing can begin.These steps are more important than the actual testing and will decide what you are look-ing for and how you will use the results. Correctly defined, the final system will have real-istic goals and predictive qualities. Incorrectly done, it will look successful but fail in actualtrading. - -
First, define the test objective. What results should the test present so that-you candetermine its success? Is it the highest profits possible from the test strategy, the fre-quericy of profitable trades, or the average-profit to average-loss ratio? Testing softwaregives you a choice, but doesn’t allow a combination of these items; most likely, it will bea combination that you want. For example, if maximum profits are used as the perfor-mance criteria, which is most often the default case, the resulting system may have one ortwo large profits (as Iraq’s invasion of Kuwait in 1989 and the U.S. retaliation in January1991) and an overwhelming number of small losses before and after it. The same perfor-mance would also show a very impressive average-profit to average-loss ratio. The highestfrequency of profitable trades can also be inadequate if there are very small profits andlarge losses.
A popular way to view results is to look for a test profile with high profits and low risk.If we simply choose the largest equity drop as a measure of risk and net profits. as a reward,a measurement function for best results could be "
Test function = net profits x (100 — percentage equity drop)
which will reduce profits according to-the size of the equity drop. The larger the losses, thesmaller the test function value. A higher test function value should yield a smoother per-formance.IDENTIFYING THE PARAMETERS 505
 
IDENTIFYING THE PARAMETERS
Once the test strategy is known, the parameters to be tested must be identified. A param-eter is a value within the strategy that can be changed to vary the timing of the system. Forexample, parameters include:
1. Moving average speed (in hours, days, weeks)
2. Exponential smoothing constant (in percentage)
3. Band width around a moving average (number of standard deviations)4. Stop-loss values (in points or percentages)
5. Size of a point-and-figure box (in points)
The simplest optimization would be a test of the number of days in a moving average sys-tem, where all other values are fixed. The test would then simulate the results of the tradingstrategy by stepping through the possible range of moving average days: 1, 2, 3, and so forth,until a satisfactory range has been covered. This is called a 1-dimensional optimization.
Most systems have more than one important parameter. In the moving average systemthat is being used as an example, both the moving average period and the stop-loss valueare important. One test procedure selects the first moving average value, then tests all ofthe stop-loss values; the second moving average value is then set and all of the stop-lossvalues are retested. The process is repeated until all of the moving average values havebeen tested. This is a 2-dimensional optimization.
Distribution of Values to Be Tested
When more than two parameters are tested, the test time for the optimization may increasedramatically. For example, a test of 100 moving average values, 20 combinations of entry/exit bands, and 20 stop-loss values gives 100 x 20 x 20 = 40,000 tests. Even with today’sfaster computers, that's going to take more than 50 hours if each test takes 5 seconds. Itmay be necessary to select fewer values to test for each parameter and choose them morecarefully. For a moving average trend, it is best to use all of the smaller values for the num-ber of days and then fewer values as the numbers become larger. For example,
1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 25, 30, 40, 50
would be a better set of values than using all numbers between 1 and 50. If you observethat the difference between a 49- and 50-day period is only 2%, while the differencebetween the 2- and 3-period test is 50%, you realize that the set of tests at the two ends ofthe test series represents very different situations. If you expect to judge overall perfor-mance by the average of all tests, then using equal increments will weight this set of testsheavily toward the long end. By reducing-the tests using percentage increments, you notonly improve the test time but you improve the results. The moving average exampleshows that it is not possible to equalize the percentages due to the restriction of integervalues at the low end, but by replacing this method with a smoothing constant used in anexponential smoothing, the problem can be fixed. The need to distribute results evenlyover a set of tests will be important for comparing two systems and finding robust results,topics discussed later in this chapter.
Types of Test Variables
Test variables can be of three forms: continuous, discrete, or coded (alphabetic). To inter-pret and display test results properly, it is important to identify these forms in advance.
Continuous parameters refer to values, such as percentages, which can take on anyfractional number within a well-defined range. If a stop-loss level is defined as a per-506 TESTING
 
centage, it may be tested beginning with the fractional value .02% and increasing insteps of .005% until 2.0% is reached, |
Discrete parameters are whole numbers, or integer values, such as the number of daysin a moving average.
Coded parameters represent a category of operations, also called a regime. For exam-ple, when the parameter value is A, a single moving average is used; when the value isB, a double moving average system is tested; and when the value is C, a moving aver-age and a breakout are used.
It is important to distinguish between the first two parameter types, continuous anddiscrete, and the last one. The analyst can expect some pattern in the results when testingparameters that take on progressively larger or smaller values. The coded parameter, how-ever, usually causes rule changes. There is no reason why a change of rules, which causesthe system to switch from one regime to another, would result in any performance patternthat makes sense across these regimes. The first rule may be profitable, the second losing,and the third profitable. The display of results, discussed later, is only valid for continuousand discrete parameters tested in an incrementally ascending or descending manner.
SELECTING THE TEST DATA
Testing a trading strategy on a computer is different from verifying a charting technique ortaking prices from the Wall Street Journal to check results manually. If a computer is to beused for testing, there must be a complete database of price history and, if more ambitiousrecently, of economic statistics as well. This is readily available from numerous vendors andnormally includes daily price data on U.S, and major European markets. When you pur-chase software to test your strategies, a database of daily prices is usually included. Intra-day (tick) data is limited to only a few vendors, the most well-known, being CQG and TickData, Inc. A complete database is an important asset. It should be kept current by auto-matic downloading at the end of each day.
Some computer systems, which are designed for trading strategies, have created spe-cial continuous test series specifically for optimization. While stock data or cash marketprices are always continuous (except, of course, for stock splits), futures and options datapresent problems resulting from their limited contract life, To make this easier for testing,some vendors provide special features for combining shorter data periods into a singleseries. This gives the user the following choices:
1. Individual full contracts. The entire futures contract, or more than one contract,are tested. Using full contracts is a tedious process and can result in overlappingtest periods and duplications of results. Individual tables of results must be com-bined in a spreadsheet to be evaluated. Figure 21-1 gives an example of the test biasresulting from carelessly using all contracts within the range December 1992through December 1996. Once the number of tests being performed at any onetime is seen, it is easy to construct a distribution (Figure 21-1) by counting the hor-izontal bars at specific points. This distribution will show the testing bias due to du-plication. Because of the 18-month life of the contracts, there was only 1 deliverymonth tested in the last half of 1991, compared with six contracts tested during themiddle period, falling off to two contracts at the end of 1996.
2. Selected parts of contracts. Segments can be selected that include the last 30 to 90days of a contract. By limiting a test to the period you are planning to trade, you havea good representation of expected performance, although there are a lot of litlepieces to evaluate. When operating this way, you must remember to allow a windupperiod for your trend calculations prior to when you begin taking trading signals.SELECTING THE TEST DATA 507
 
 
FIGURE 21-1 Testing using full contracts from December 1992 through December 1996,(a) Test intervals. (b) Distribution of testing.
 
Test intervals
CONTRACT MONTHS
 
1991 1992 1993 1994 1995. | 1996
 
 
 
 
 
 
OCCURRENCES
 
- NU Ruore® ©
 
 
 
Distribution of testing
(6)
 
3. Backward (or forward) adjusted data. The data segments in item 2 are combinedon a specific roll date by adjusting all the prices in that one contract by the differ-ence between the closing prices of the new and old contract on the roll date. In abackward adjustment, all data prior to the adjustment date are changed by the dif-ferential on the roll date. This technique has become popular and works well fortrend systems. The adjustments wiil cause large distortions in the oldest data, espe-cially if the data go back more than 10 years. In the extreme case, the adjusted pricecan even become negative. If the strategy uses a percentage value, this series willnot give the right numbers; or, if you expect to compare various high and low pricesover time, it is best to use another type of series.
4. Indexed data series. A continuous series is constructed by adding the pricechange each day to the prior index vatue. When there is a change of contract, theprice change is that of the new contract compared with its prior price. The con-version into an indexed series is useful for comparing two markets and for con-508 TESTING
 
structing portfolios,.but has most of the same problems as its raw counterpart initem 3.
5. Constant forward series. In the same manner as the London metals contracts arequoted (#-days out), an artificial price is calculated by interpolating the prices of thedelivery months on both sides of the date needed for this price series. This type ofdata series has also been called a perpetual contract and presents its own set ofproblems. Deferred contracts are not as volatile as the nearby contract, and formu-lated values create a series that is much smoother than the one you are likely totrade. This means less risk, probably less profits, and greater reliability in identify-ing trends. More important, you would be testing your ideas on a data series inwhich none of the prices actually occurred.
If all five methods have problems, which is best? If you use a trend calculation and donot rely on a percentage or compare the absolute levels of past prices, then you can usebackward adjusted data (item 3). Although it requires more work, the safest choice isalways to use the individual contracts, provided you take care not to duplicate perfor-mance over the same dates in different contracts unless you plan to trade that way.
In a seasonal or cyclic commodity, there is good reason for selecting more than onedelivery month during each year—new and old crops or production cycles can cause sub-stantially unique price patterns during the same time period for different deferred deliver-ies. Even the proper overlapping, of a traditionally nonseasonal product may pick’ updeviations due to anticipation or extreme short-term demand or surplus. But the marketshown in Figure 21-l@ was not seasonal or cyclic, and the 18-month contract durationcaused the overlapping time intervals that simply distorted the test results.
SEARCHING FORTHE OPTIMAL RESULT
There are many complex techniques for optimizing; the two most basic will be discussedhere. The first, and the only simple method, is to test all combinations of parameters. A sin-gle moving average system with a stop-loss might have the following tests:
1. All moving average days from 1 to 502. Stop-loss values from 0 to $1,000 (or equivalent in points), in steps of $10
The total number of tests would then be 50 x 100 = 5,000. When three parameters aretested, the number of tests increase rapidly. Taking care to use the best parameter distrib-ution, as discussed earlier, is a simple way to reduce the test time and improve the useful-ness of the results. When there are too many tests, even with selected values, a widerspacing of values can be used to locate the general pattern of performance. Once theapproximate range of parameter values is known, more detailed retesting can be done.
Calculate the number of tests you will run before beginning an optimization. Althoughthe time may not be a problem, your test software may not beset up to hold the numberOf test results that you are creating. All computers have limits. Ifyou generate as many as1,000 combinations, remember that you will need to evaluate them using a spreadsheet.Large numbers of rows and columns, combined with numerous markets, can create anunmanageably large spreadsheet.
Sequential Testing
If you have created a system on a grand scale and the number of tests and the number ofparameters are too great, then mathematical optimization offers some solutions in theform of testing procedures. One caveat is that they only apply to continuous results, thatis, performance that increases and decreases somewhat smoothly based on parameter val-SEARCHING FORT... OPTIMAL RESULT 509
 
ues. You cannot use this method to test coded variables that cause an abrupt shift in themethodology. In the simplest example, the procedure is:
1. Test one parameter, such as the moving average period.
2. Find the best result, and fix that value for the remaining tests.3. Select the next parameter and test.
4. Go back to step 2.
This is called a sequential optimization. \t has the advantage of reducing a 3-parameter test case from 7, X mz X ns; total tests to 2, + 72 + m3. It has the disadvantage, how-ever, of not always finding the best combination of parameter values when the test is verylarge. Figure 21-2 shows a 2-dimensional map of test results, a good way of visualizing therelationships between parameter sets. By testing all the combinations, the best choice wasseen to be a 20-day moving average with a 30-point stop-loss, netting 400. Using sequen-tial testing, beginning with the moving average days, the best result is 15 days. Fixing thatvalue and testing the stop-loss values, we find that the best stop-loss is at 30 points. Whilethis result is good, it is not the peak result nor the next best 350. If the tests begin with thestop-loss value, it ends at the same point; there, the best results cannot be found, whetherthe test begins with the rows or columns. Even though the area of greatest profitability isclear, the best choices in the first row and column do not peak at values consistent with theoverall best result. ,
There are two ways that traditionally avoid this problem. One method is to list theparameters in order of importance, that is, those that would have the greatest impact onprofitability, although you might choose this by its fundamental importance to the strategy.In this example, the number of days in the moving average is most likely to be the primaryparameter. This doesn’t work in Figure 21-2; however, mathematicians are prepared forthis problem.
The final alternative.is to choose a series of random starting values for each parame-ter and proceed to test a row or column beginning with those values. The object is to findthe best results with as few of these tests as possible. Although each 3-parameter test isonly 1, + 2, + 73, the total number of tests will accumulate steadily. When you have per-formed a number of searches beginning with a random seed, and found the same results,
 
FIGURE 21-2 Visualizing the results of a 2-dimensional optimization.
 
Moving average days5 10 16 20. 25
 
 
 
Stop-loss (points)
 
 
 
 
 510 TESTING
 
you can conclude with some certainty that you have located the peak. For example, if youbegin searching in Figure 21-2 in four places, one row and one column inside the fourcorners (moving average of 10, stop of 20, 20 x 20, 10 x 40, and 20 x 40), you will alwaysfind the peak value. For a test of this size, if these were random seeds, three values thatgave the same results would be enough. For larger tests, more seed values would beneeded.
More on Test Continuity
Any system can be tested using a computer, but automatic selection of the best results onlymakes sense when they are continuous. A moving average system with stops is continuousin all directions. Adding a third dimension, an entry or exit delay (0, 1, or 2 days) will pro-duce continuous results in the three directions. But not all tests satisfy this principle. It hasalready been briefly mentioned that rule changes are the most likely cause of discontinu-ity. Consider a test in which one variable is the speed of the trend and the other is a set ofrules, L, S, and B, where L only takes long positions, S only takes short positions, and Btakes both long and short positions. Although there may be interesting patterns and rela-tionships, averaging these results does not make sense.
If each parameter tested has values that result in a continuous profit/loss curve, thereare mathematical techniques available to locate the point of maximum profit with theminimum steps. One method, optimization by steepest descent,‘ uses both the profit andthe rate of change of profitability to determine the size of the steps taken during the opti-mization process. This method can be suboptimal, however, if there is more than oneprofit peak.
VISUALIZING AND INTERPRETING THE RESULTS
Visualizing the test results properly can make interpretation far easier. Figure 21-2 hasalready given a preview of how results might be presented in a way that shows continuity,rather than a simple list of one test result-after the other. For example, if a 1-parameteroptimization is run in which all values are fixed except for the number of days in a movingaverage, then three possible results are shown in Figure 21-3.
In all three cases, the resulting profit or loss is shown on the left, and the number ofmoving average days is shown along the bottom. Figure 21-3a is a simple curve, indicatingthat both fast and slow parameters generate losses, although the midrange is profitable. Itmay be reasonable to select the number of moving average days that produced the highestprofit due to the good continuity around that point.
Figure 21-3b shows two possible areas of success. Because both are about equal insize, there is no reason for choosing one over the other.. One possibility is to wade onemoving average from each peak. If you must choose only one, then it is most likely that thelonger-term results are more stable, and considered a more conservative selection. A fastwading system can result in errors, poor execution prices, and large transaction costs.Unless these factors have been carefully incorporated into the wading strategy, a highlyprofitable simulation will result in large, real losses> _
The preceding case is exaggerated in Figure 21-3c, where the fast system has muchhigher profits in a very narrow range, and the long-term trend has a wide range of success.The spike in the area of the 3-day moving average is surrounded by losses, indicating thatthe high profits may have been caused by a short-lived price shock, or a pattern.in the datathat was perfect by chance. =
‘ER. Ruckdeschel, BASIC Sctentific Subroutines, Vol, If (Byte/McGraw-Hill, Peterborough, NH, 1983).VISUALIZING AND lL. |. ¢RPRETING THE RESULTS S11SS ee
iFIGURE 21-3 Possible resulting patterns from a test that varies only the movingaverage days.
 
PAL
Moving average days
 
(a)
 
Moving average days{b}
PAL
Moving average days
(c)
 
Two-Parameter Tests
The most popular tests are those that have two parameters, either two tends of differentperiods or a trend and a stop-loss value. Considering a moving average and stop-loss, thebest visualization is a grid (a 