We have been discussing functions that are unique to TradersStudio in our recent blog posts. While understanding the powerful built-in features of the software is excellent, it’s also worth revisiting some of the analysis that we do when building systems. This is especially important as in my conversations with traders, I have only found a small percentage of stock traders who trade using a mechanical approach. I find it hard to believe, but many stock traders believe that mechanical systems cannot be developed to trade stocks that outperform a “buy-and-hold” strategy. In this post I would like to explore some of the reasons why traders believe this. In a follow-up post we will discuss how TradersStudio solves all these issues presented.
A major reason why traders believe that they cannot build mechanical systems that outperform “buy-and-hold” is that they do not understand the issues in terms of preparing the data for stock trading and the effects that it has on the results.
Most stock traders use what is called “split-adjusted” data, which is similar to “ratio-adjusted” data in commodities. The problem in using this type of data is that the adjustment destroys the dollar returns, historical daily range, and the original price levels. The only advantage is that it correctly calculates the percent return.
If the price of a stock moves too high or too low, the management of the issuing company splits the stock to encourage trading. The vast majority of stock splits occur because the price has gotten too high. Consider the case when the price rallies to $50 a share and management decides to split 2 shares for 1 share. The net result is no real change in company valuation, but there are two shares of $25 stock on the books for every one share of $50 stock that previously existed. If the gap on the chart cannot be smoothed, false trades occur in testing because the unadjusted chart looks like the price dropped from $50 to $25. “Split-adjusted” data is a way to solve this problem.
What is this data exactly? “Split-adjusted” data is produced by dividing the prices prior to a stock split by the factor of that stock split. For example, in our case above, the dividing factor would be 2 (for the 2 for 1 split). This has the effect of cutting the previous daily ranges in half. The problem occurs when a stock has split many times. When this occurs, the “split-adjusted” data can get ridiculous. An extreme example of this problem is Microsoft® stock. The split-adjusted price of Microsoft is $0.11 if stock splits are handled going back to 1988 when the real price of the stock was about $34!
Another problem has to do with the way the major markets operated historically. Stocks were priced in fractions until quotes were changed to the current decimal format. Many of the available public stock databases are set up to calculate to 2 decimal places. When a stock like Microsoft® has had many splits, a split-adjusted $0.01 move scales out to $3.40! To compensate, a minimum of 4 decimal places need to be saved and more would be better when working with split-adjusted stock data. Another problem encountered with split-adjusted stock data is accounting for the calculation of commissions because actual dollar values are meaningless and the results of back testing can only be seen in terms of percent returns.
The lynch pin of the concept of split-adjusted data is that the percent return is correct. The next step in this logic is that always buying the same amount of each stock traded will make percent return numbers also correct. What happens when you do not want to buy the same dollar value of each stock? Or if you want to use a percent risk model, where position size is based upon how much risk is assumed on a given trade. For example, you decide to risk 1% of your account on a given position. If an account has $100,000, risk will be $1000 on a given trade.
If we can forget about split-adjusted data for a moment, suppose that our system rules are to exit long positions at a 10-day low. If that low is $1 per share away, it is possible to buy 1000 shares of the stock. With split-adjusted data, this is not possible. The problem becomes worse when looking at a portfolio of stocks and where risk analysis needs to be performed on each of them. Since portfolio level analysis in back testing software is a relatively new development, many of these issues have yet to be addressed.
A percent-risk money management strategy might require that you place a large percentage of your account into one stock position. What if the example stock with the $1.00 per share risk was a $100 per share stock? In this case, 100% of the account would have to be placed in the stock position while we might be trying to trade a basket of 100 stocks. We are within the dictates of our system because we are risking 1% of our account value on that trade. You need to know the split-adjusted price of the stock to get the correct prices for the trades and the unadjusted price for your entries and exits so dollar returns, percent returns, and the amount of money committed to taking a position can be calculated.
Another issue in a stock trading system is the “business survivorship” test. The question is how valid is a test on the current S&P 500 where results are overstated because stocks such as WorldCom or Enron are not included in the back test? The “business survivorship” test is an issue that many traders choose to totally ignore. However, it is one that they will likely have to face in real life because old data for many de-listed stocks is not readily available. dWhether you choose to include this consideration in your testing or not, you have to realize that it exists when you are evaluating a trading strategy.
Dividends also create problems with split-adjusted data. This used to be an issue for Dow 30 companies and utility stocks. However, changes in tax treatment where options have to be expensed and dividends receive better tax treatment have helped make dividends become more popular. The price of a stock drops on the day the dividend is assigned to the existing owner of the stock, which causes a down tick on the chart. When analyzing mature companies like those included in the S&P 500, it must be remembered that dividends can account for as much as one half of the return of buy-and-hold strategies. When profits from dividends are compounded and reinvested back into stocks, dividends can have a huge effect on the compound returns.
Other dividend related problems could cause major changes in system results even if dividend-adjusted data is used. Assume that our system rules tell us to buy at the highest high of the last 12 months. During that time, the stock has had a high of $40, but has paid a $2 dividend since the high. Most system developers would buy if the price exceeds $40, but since the dividend was subtracted since the high price was made; the real adjusted 12-month high is $38. If the stock were bought at $38 instead of $40 across hundreds of shares of stocks over decades, the results of the system would be changed drastically.
Another issue to consider when trading stocks is the use of fundamental data. Most data vendors do not have access to fundamental data and the ones who do typically only maintain one year of fundamental data in their databases. This creates a problem since it is difficult to back test a strategy using such a limited amount of data. This is only one of the problems of trading stocks using fundamentals. Long-term histories of fundamental data are available, but it is usually very expensive.
As you can see, stock traders can have a tendency to not believe in mechanical systems because it is difficult to isolate the issues involved in obtaining realistic back test results to compare system back test results to real world performance. Analyzing these problems objectively results in an easy loss of faith in the system. After all, if the data is not clean, how can we realistically test any system and know it will hold up in the future with real money on the line? A trader must have a tremendous amount of faith in a system, and that only comes after extensive backtesting on clean data.
In the next article we will show how TradersStudio helps solve these issues!