Starting point: a sample ranking system
For a broad overview of how Simulation works, let’s start with the following simple Growth rank created for demonstration purposes. It uses the following three factors:
- EPS%ChgPYQ (weight = 35%)
- EPS%ChgTTM (weight = 15%)
- EPS Acceleration (weight = 50%)
Figure 1 shows the results of a ten-bucket maximum-period performance test run against a "Basic" custom universe (Market Cap >=250, Price >=5, and no OTC stocks).
That's OK considering that the system was created for demonstration purposes.
Using the rank in a simulation
Figure 2 shows the performance of a strategy built around investing in the 10 top stocks as per the ranking system.
That's a bit disconcerting. Our once-promising strategy seems to have diminished when we tested it via the simulator. Figure 1 might have led us to expect that the top stocks would substantially outperform the S&P 500, but Figure 2 shows a very mundane level of performance.
Reconciling the ranks and the simulation
Part of the “problem” is use of 10 stocks in the simulator. That's less than 3% of the number of stocks in each of the buckets depicted in Figure 1. A ranking system that is effective in identifying the top 300 or so stocks may not work quite was well when we tighten our expectations and look only at the top 10.
But that's not the whole answer. Figure 3 shows a 100-bucket test of the ranking system.
This confirms that the ranking system does not perform as well for the smaller-size buckets at the top of the hierarchy as it did for some other groupings. But it's not as if the 100-bucket test is a complete disaster. The highest buckets do, as a whole, handsomely outperform the many of the lower ones. And the top bucket, which contains the top 10, significantly outperforms the S&P 500. So there probably are other key considerations being captured by the simulation.
The most significant difference is the one that's inherent in the kinds of tests being done. It's one thing to compound over many time periods (rebalancing intervals). It's quite another to go in sequence, period by period. With the latter, it's not just the magnitude of each move that counts, but also the sequence in which they occur. Another big difference is transaction costs.
None of this is meant to suggest that the sample Growth rank is unusable. Instead, it tells us we need to add some bells and whistles to the strategy. We'd want to aim at the upper end of the ten-bucket test, which means finding some way, aside from a strict rank sort, of choosing 10.
At first glance, the simulation area may seem a bit intimidating. Actually, though, it's quite straightforward.
Start by recognizing that the core of a simulation is a ranking system Once you identify a ranking system you want to use (i.e. the growth system referred to here), everything you else do revolves around tasks you’d expect to address as you make real-world decisions.
The interface organizes all these tasks into eight groups of parameters. You can address these in sequence or you can go back and forth at will.
- General Parameters – Chose a benchmark for evaluation, establish slippage and commission assumptions, etc.
- Position Sizing – Decide how many positions you want your portfolio to have.
- Universe and Ranking System – This is self-evident and similar to tasks you likely did in screener.
- Buy Rules – This is the most familiar part of the process. A set of buy rules is, for all practical purposes, a screen. To be eligible for purchase, a stock must pass all of your buy rules.
- Sell Rules – This looks like a screen in that it involves a set of rules based on the syntax that’s already familiar to you from screening and ranking. Now, however, you’re establishing Sell conditions. In contrast to the Buy rules (where a stock could be bought only if it passed all rules), a stock need satisfy only one of the sell rules in order to be jettisoned from your portfolio.
- Stop Loss – This is a set of rules that allows you to exit a position before the next scheduled re-balance date.
- Hedging/Market Timing – This allows you to apply market timing rules and pursue defensive alternatives when the market experiences bearish conditions as you define them.
- Simulation Period – Here you define the period to be examined, as you did when you tested screens and ranking systems.
Simulation vs. Screener Backtesting
The backtester in the screening section also overcomes two of the major limitations of the rank performance test. Backtesting gives us the same sort of period-by-period sequential analysis that we get in simulation. And as with simulation, backtests can include limits on the number of stocks (based on a rank sort) to be included in the test. But there are some important differences:
- Trading Costs – Backtesting and simulation can both accommodate slippage assumptions. Simulation goes a step further and allows users to plug in assumptions regarding commissions, based, presumably, on the cost structures of the brokerage firms where they trade.
- Portfolio Size – A screener backtest does not factor in the amount of money you assume you want to commit to the strategy. Such an assumption is part of simulation. It can be an important one. Assuming you deal with a per-trade commission structure (as many do nowadays), there can be a big difference between putting $100,000 into a 25 stock portfolio, versus investing, say, $3,000.
- Selling – A screener backtest presumes any stock not passing the screen is “sold” on the next re-balancing date. Simulation, on the other hand, presumes that all stocks continue to be held unless and until a sale is compelled by a separate set of sell rules which, depending on your choice, may or may not be equivalent to failure to meet the requirements of the initial screen (in simulation, the screen is referred to as a set of “buy rules”).
- Diversification – With screener backtesting, there is no way to prevent high sector or industry concentration. Simulation, on the other hand, allows you to set limits.
- Portfolio Weightings – With screener backtesting, it is presumed that all positions are set to equal weighting at the beginning of each re-balancing period. This isn’t necessarily the case with simulation, where no sizing adjustments occur for positions that are not sold (in other words, long-term winners can run and wind up with larger weightings); new positions are funded, in equal allocations, only with cash raised from selling.
- Hedging – You can do this in the screener to a limited extent (through use of complex if-then market-timing rules), but simulation allows you to go much further by making it easier to establish market exit and re-entry points, varying the extent of the hedge you’d like (in terms of percent of assets), and providing a variety of choice as to hedge vehicles.
- Stop-loss – With screener, once you “buy” a stock, you must hold it until the next re-balancing and even then, can exit only if the stock fails to continue to appear in the screen the next time it’s re-run. Simulation allows you to sell in between re-balancing dates based on a specific stop-loss rules you establish (which can be a trailing or entry-based stop).
- Real-world Implementation – If you want to invest real money based on a strategy you’ve developed with the screener and/or a ranking system, you’re on your own to remember to re-balance on time and to keep track of your transactions, positions, and performance. On the other hand, if you build a strategy using simulation, you can convert it into a real-time tool through a few mouse clicks that create a “Portfolio” based on the parameters in simulation. Simulation uses those parameters to tell you what would have happened in the past. Portfolio uses those same parameters to guide you in your real-time implementation of the strategy.
As you can see, Simulation gives you as realistic a picture of the real-world performance of a strategy as is feasible. Even so, it’s important to retain perspective. As good a simulation can be, it’s still not reality.
The main difference comes in the area of trading. The simulator has no way of knowing when, during the day, you would have traded had you been following the strategy in real life. It depends on database pricing. You can choose end of day, start of day, or the average of the day’s high and low. There can be no assurance that any of those price protocols will match up precisely with what you’d have achieved had you traded in the past. Even if you habitually enter early orders to buy or sell on the open, there’s still no assurance you’d have gotten the prices listed in the historical records as having been the opens for those days. If you deal in small stocks and enter large orders, you might have added upward or downward pressure to the opens that wasn’t actually present on the historical days in question.
You don’t necessarily have to see such variances as flaws. Your real-world experience may be worse than the simulated experience, but it could also be better. Assuming you were prudent in establishing the strategy (e.g., realistic trading cost assumptions and reasonable liquidity rules), the variances should be modest and simulation should deliver a very reasonable picture of reality upon which you can act subject to the most important factor in the development of any strategy: the possibility that the future will not unfold as it did in the past. (So as with screen and ranking-system testing, it’s good to experiment with different time periods reflecting different sets of economic/market conditions as you run and evaluate your simulations and think about which historical conditions are likely to provide the best precedent for the future.)
The next part of this tutorial series will guide you step by step in setting up a simulation.