System Trading - Part 3: Entry Signals based on Factors
In this part of the System Trading series I will talk about how Buy signals are generated. Suppose we built a consideration set of 'n' number of stocks. And now we want to pick a smaller set for entering long trades. Assume this system is a long only equity asset class system.
For assumption sake let us take the Nifty 100 (N100) constituents as the consideration set. As far as I recall these 100 stocks constitute approximately 75% of the market capitalization of India. Let us also assume we are building a factor system with certain characteristics as explained below:
1. Low Volatility - Primary Filter
2. High Returns - Primary Filter
3. Trend - Secondary Filter
4. Growth - Sorting Criteria
5. Efficiency - Sorting Criteria
6. Value - Sorting Criteria
7. Solvency - Sorting Criteria
8. Promoter - Sorting Criteria
We simply calculate Sharpe Ratios of all stocks in N100 for a 365 calendar day period. I have taken this system as 365 day momentum which is getting readjusted on a monthly basis for volatility and momentum. In this list of stocks we omit stocks with negative returns. In the left over list we apply a trend filter of a monthly moving average (30 day) over a 2 month average (60 day) to see which stocks are in uptrend. In the final list we pick the top 30 stocks.
Now we have a shortlist of 30 stocks which are high on momentum, low on volatility and in up trend.
In this list of 30 we apply a sorting criteria based on 6 fundamental factors. In this process we should be able to stack rank all 30 stocks basis a score assigned to them. Note we omit all stocks which are in lending businesses and/or are making losses.
Assumption sake let us trim the list to 25 stocks after omitting lending businesses and loss making businesses. Now we have a list of ranked 25 stocks. From this list we pick at maximum the first 15 scripts. At times there could be situations where only say 12 stocks make the final cut then we pick all 12. The system itself will reduce the number of scripts if it does not see any strong upward momentum with low volatility.
A little more on fundamental weights. This is something which each one of will have to design ourselves. For example I have tried to make a simple weighted structure as outlined in the spreadsheet below.
As you can see in this example we have different weights to each of the sub-factors. For each sub-factor we assign a score +1, 0, -1 meaning an improvement over last period or as specified time period for that factor, no change and a deterioration in the factor respectively. Adding all these weighted scores gives us the final score.
Doing this exercise gives us the scripts we need to enter buy trades. Having a schedule helps. For instance I would like to do this post the last Thursday of every month. At the end of each week I would like to check whether the stop loss is getting close or I need to adjust stop loss (trailing - TSL). And at the end of the month I will do this exercise again to add new stocks, drop existing stock (if not already dropped because of TSL hit or MaxDD hit - Maximum Drawdown, detail in later sections of the series) or re-balance if required.
This is a 'mould' for a system. This will require some decent back testing to actually put into use. I think even if one just uses Sharpe ratios and positive return stocks with good risk management he can beat most of the market.
In my opinion the Buy Signal generation is where people spend most time. But I think this is the area which actually requires the least effort. The most important part is risk management which involves how to take money off the table either by profit booking or containing losses. This will be the topic of the next part of the System Trading series.
Also since we were able to say deploy 70% of the funds into equity (into 15 stocks) basis a money management framework the remaining 30% actually goes to say bonds. Here a money management principle will be required for equity debt allocation. I have shared in detail about my money management framework in the pages mentioned above. The allocation within the 15 stocks can be simply equally weighted at start and as time progresses for positions which become profitable we let it run and which reduce and do not hit TSL or Max DD we let it be reduced else it automatically folds up.
It is critical that stop losses are placed immediately after the long trades are executed. Since we do not want to manually track any stop losses. This rudimentary system requires half an hour or so of work every weekend.
Please note this is no way some system you should be using. It is only made for illustration purposes. You may chose to use it and modify but my objective was to simply share the facets required in getting a list of stocks to buy.