TC2000 Stocks on the Move Process
TC2000 Stocks on the Move Process
I get a lot of emails asking me to explain how I use TC2000 to generate the list of momentum stocks as outlined by Andreas Clenow in his book, Stocks on the Move. In this post I will explain my TC2000 Stocks on the Move process.
The Stocks on the Move Trading Steps
I wrote a post earlier that explained the rules and steps used to trade the way Clenow explains in Stocks on the Move. I would encourage you to read that post first (and read the book) before diving in to set the scan up in TC2000.
As a summary, here is a reminder of how the system works:
Step 1: Determine Market Trend
- Check if the S&P 500 is trading above or below it’s 200 day moving average.
- If the S&P 500 is trading above the 200 day moving average, build or make changes to your portfolio.
- If the S&P 500 is trading below the 200 day moving average, do nothing. Wait until the market starts to trend up again.
Step 2: Build Initial Portfolio
- Calculate the volatility adjusted slope value based on the details in the book. Sort from highest to lowest value.
- Disqualify any stocks that are trading below their 100 day simple moving average.
- Disqualify any stocks that have gapped up or down 15% in the past 90 days.
- Calculate the 20-day average true range for each stock.
- Using a risk parity value of 0.001, calculate the number of shares to buy with this formula: # of shares to purchase = ((AccountValue * 0.001) / ATR(20))
- Start to buy the highest ranked stock with the correct number of shares. Buy stocks until all capital is spent.
Step 3: Portfolio Rebalance
- Sell any stocks if the stock:
- has moved below it 100 day moving average
- is no longer in the top 100 of the S&P 500 stocks.
- had a recent gap of 15% either way.
- left the S&P 500.
- With the proceeds from any sales go through the same process as in Step 2. Before making any further buys, make sure the market is in an uptrend, as per Step 1 above.
Step 4: Position Rebalance
- Twice per month, review the portfolio’s position sizing against original target allocation.
- Adjust to bring the values in line with the right risk parity.
TC2000 Stocks on the Move Formulas
Step 1: Determine Market Trend
This step is easy in Tc2000. All you need to do is verify that the market is in an uptrend by setting up a chart of the SPY with a 200 day simple moving average line drawn on it. I actually do that for a number of market tickers. This screen shot shows that SPY is trading above its 200 day moving average (top right corner – yellow line).
Since the SPY is trading above the 200 day moving average right now, the Stocks on the Move system is free to trade.
Step 2: Build Portfolio
Calculate Volatility Adjusted Slope
The next step is where the meat of the system happens. Stocks on the Move uses calculations on each stock in the S&P 500 to determine the momentum of each stock. The stocks with the strongest momentum show up at the top of the list.
In order to calculate the volatility adjusted slope – or in other words the ranking – here are the steps to take:
Open a New Layout Tab & Select Watchlist
Using the “New Layout Tab” button at the bottom of the screen. Note that your layout may look different, however you can alter it however you want to meet your needs. While you are at it, select the SP-500 watchlist from the list of pre-defined TC2000 watchlists. TC2000 maintains this list and updates it when companies are added or dropped from the index. In addition, you can also add a 200 and 100 day simple moving average lines to the chart by clicking on the plus sign beside the ticker on the chart.
Add Volatility Adjusted Slope Column to Watchlist
Next, we will add the ranking calculation to the watchlist list. What this step does is add a column to the watchlist table with a calculated value which you can then sort on. To do this, simply click on the little yellow-ish plus sign beside the watch list table, choose “Add Value Column”, then then “Write New Formula”.
From there, you will be able to enter the actual Personal Criteria Formula (PCF – what TC2000 calls formulas) that will calculate the momentum of the stock. You can see the PCF entered in the next screenshot (copy and paste from the code below). Note that you can also name the table header by clicking on the properties tab.
Once the PCF is entered, simple hit OK and you will now have the calculated values in your watchlist table.
The next step is to simply sort the watch list by the Volatility Adjusted Slope. Now you have a ranking of the strongest momentum stocks in the S&P 500.
Disqualify Stocks Not Trading Above 100 Day Moving Average
Once that is done, you need to tell TC2000 what additional items to show in the watchlist table. We want the system to tell us if the stock is above the 100 day moving average or not.
This can be done visually using the 100 day moving average line on the chart. However, I like to add a condition to the watchlist that tells me if the stock is trading above the moving average or not.
To do that, click that yellow-ish button at the top of the watchlist and then select “Add Condition Column”. Next you need to click on “New Condition Set”.
Next, click on “Add Condition” and then search for “Simple Moving Average”.
A new window will pop up and you need to make a few changes. First, click on the Moving Average indicator and change the period length to 100.
From there you need to tell TC2000 you are testing that the stock is above the 100 day moving average. Click on the “Condition” drop down and choose “Above Moving Average 100”.
Leave everything else as shown and click OK. Click “Properties” on the Add Condition column window and chose “Show Check” for When True and select the color you want to display. You can also add a Description while you are at it.
The result will be that your watchlist has a check mark beside each stock that is trading above its 100 day simple moving average. As you can see in the example below, Kroeger fails that test hence no check mark. That stock would be skipped when setting up the portfolio.
Disqualify Stocks with a 15% Gap in Last 90 Days
Now that you have a way to weed out those stocks not trading above their 100 day moving average, we can now test for stocks that have gapped recently. Stocks on the Move avoids stocks with a 15% gap either up or down in the past 90 days.
That is easy to test for in TC2000.
Again click on the yellow-ish plus sign beside the watchlist columns and select “Add Condition Column”. From there select “New Condition Set”, then “Add Condition”, and then “Write New Formula”.
In the PCF box, add the code for the gap test (see code below), add a Name, select “within last x bars” in the “True box”, and enter 90 in the “Within Bars” box. Click OK and you are all done setting up the gap test.
You will now have a column on your watchlist that will show a checkmark if the the stock has had a 15% gap in the past 90 days. As you can see CA has gapped and would be skipped.
Calculate Number of Shares to Buy – Risk Parity
Now that you have the momentum, 100 day test, and gap test done, the next step is to determine how many shares to buy. The Stocks on the Move system uses a risk parity calculation to determine how many shares to buy. I have been able to get TC2000 to calculate that for me as well.
To that we are going to add yet another column to our watchlist. This column will tell us how many shares to buy based on the Average True Range of the last 20 days.
This time you are going to add a new value column to the watch list, and enter the PCF into the formula window. In my case, I run this portfolio with $40,000 hence the 40000 value I am using in the formula. You will need to enter the portfolio size you are using.
The other number (0.001) is the risk parity value. This number is telling the system the risk level we are taking. Stocks on the Move uses 0.1% which seemed to be a good balance between risk and reward. You can change this if you want.
It is also important to update this regularly as your portfolio grows so you can calculate the right number of shares.
You can also click on the Properties tab in the above window and enter a column heading, as well as change the number of decimal places to 0 so you only see whole shares. With that done, you now have a watchlist that includes the number of shares to buy.
Here is what the finished product looks like. Note that the watchlist is sorted by the Volatility Adjusted Slope:
Next Steps – TC2000 Stocks on the Move
Now that you have that all setup in TC2000, you can then easily run through the steps to build your portfolio and update it on a weekly basis. Working from the top of the sorted watchlist, buy the number of shares listed until you have run out of money.
Each week, check the list and sell any holding based on the rules, and buy the next highest ranked stock based on your list that you do not own.
The PCFs for each of the steps above is listed below.
If you want to be able to use the Stocks on the Move system from the book, then using TC2000 is an easy way to do that. If you want to try it out, please use this link. I get a small affiliate fee for you doing that, which I thank you for!
TC2000 Stocks on the Move PCFs
Tc2000 PCF – Volatility Adjusted Slope
(100 * (EXP(253 * (44.5 * LOG(C ) + 43.5 * LOG(C1) + 42.5 * LOG(C2) + 41.5 * LOG(C3) + 40.5 * LOG(C4) + 39.5 * LOG(C5) + 38.5 * LOG(C6) + 37.5 * LOG(C7) + 36.5 * LOG(C8) + 35.5 * LOG(C9) + 34.5 * LOG(C10) + 33.5 * LOG(C11) + 32.5 * LOG(C12) + 31.5 * LOG(C13) + 30.5 * LOG(C14) + 29.5 * LOG(C15) + 28.5 * LOG(C16) + 27.5 * LOG(C17) + 26.5 * LOG(C18) + 25.5 * LOG(C19) + 24.5 * LOG(C20) + 23.5 * LOG(C21) + 22.5 * LOG(C22) + 21.5 * LOG(C23) + 20.5 * LOG(C24) + 19.5 * LOG(C25) + 18.5 * LOG(C26) + 17.5 * LOG(C27) + 16.5 * LOG(C28) + 15.5 * LOG(C29) + 14.5 * LOG(C30) + 13.5 * LOG(C31) + 12.5 * LOG(C32) + 11.5 * LOG(C33) + 10.5 * LOG(C34) + 9.5 * LOG(C35) + 8.5 * LOG(C36) + 7.5 * LOG(C37) + 6.5 * LOG(C38) + 5.5 * LOG(C39) + 4.5 * LOG(C40) + 3.5 * LOG(C41) + 2.5 * LOG(C42) + 1.5 * LOG(C43) + 0.5 * LOG(C44) – 0.5 * LOG(C45) – 1.5 * LOG(C46) – 2.5 * LOG(C47) – 3.5 * LOG(C48) – 4.5 * LOG(C49) – 5.5 * LOG(C50) – 6.5 * LOG(C51) – 7.5 * LOG(C52) – 8.5 * LOG(C53) – 9.5 * LOG(C54) – 10.5 * LOG(C55) – 11.5 * LOG(C56) – 12.5 * LOG(C57) – 13.5 * LOG(C58) – 14.5 * LOG(C59) – 15.5 * LOG(C60) – 16.5 * LOG(C61) – 17.5 * LOG(C62) – 18.5 * LOG(C63) – 19.5 * LOG(C64) – 20.5 * LOG(C65) – 21.5 * LOG(C66) – 22.5 * LOG(C67) – 23.5 * LOG(C68) – 24.5 * LOG(C69) – 25.5 * LOG(C70) – 26.5 * LOG(C71) – 27.5 * LOG(C72) – 28.5 * LOG(C73) – 29.5 * LOG(C74) – 30.5 * LOG(C75) – 31.5 * LOG(C76) – 32.5 * LOG(C77) – 33.5 * LOG(C78) – 34.5 * LOG(C79) – 35.5 * LOG(C80) – 36.5 * LOG(C81) – 37.5 * LOG(C82) – 38.5 * LOG(C83) – 39.5 * LOG(C84) – 40.5 * LOG(C85) – 41.5 * LOG(C86) – 42.5 * LOG(C87) – 43.5 * LOG(C88) – 44.5 * LOG(C89)) / 60742.5) – 1))
(((((90 – 1) / 2) * AVGC90 – (C1 +2*C2 +3*C3 +4*C4 +5*C5 +6*C6 +7*C7 +8*C8 +9*C9 +10*C10 +11*C11 +12*C12 +13*C13 +14*C14 +15*C15 +16*C16 +17*C17 +18*C18 +19*C19 +20*C20 +21*C21 +22*C22 +23*C23 +24*C24 +25*C25 +26*C26 +27*C27 +28*C28 +29*C29 +30*C30 +31*C31 +32*C32 +33*C33 +34*C34 +35*C35 +36*C36 +37*C37 +38*C38 +39*C39 +40*C40 +41*C41 +42*C42 +43*C43 +44*C44 +45*C45 +46*C46 +47*C47 +48*C48 +49*C49 +50*C50 +51*C51 +52*C52 +53*C53 +54*C54 +55*C55 +56*C56 +57*C57 +58*C58 +59*C59 +60*C60 +61*C61 +62*C62 +63*C63 +64*C64 +65*C65 +66*C66 +67*C67 +68*C68 +69*C69 +70*C70 +71*C71 +72*C72 +73*C73 +74*C74 +75*C75 +76*C76 +77*C77 +78*C78 +79*C79 +80*C80 +81*C81 +82*C82 +83*C83 +84*C84 +85*C85 +86*C86 +87*C87 +88*C88 +89*C89) / 90) / SQR(((90^2 – 1) / 12) * ((C^2 +C1^2 +C2^2 +C3^2 +C4^2 +C5^2 +C6^2 +C7^2 +C8^2 +C9^2 +C10^2 +C11^2 +C12^2 +C13^2 +C14^2 +C15^2 +C16^2 +C17^2 +C18^2 +C19^2 +C20^2 +C21^2 +C22^2 +C23^2 +C24^2 +C25^2 +C26^2 +C27^2 +C28^2 +C29^2 +C30^2 +C31^2 +C32^2 +C33^2 +C34^2 +C35^2 +C36^2 +C37^2 +C38^2 +C39^2 +C40^2 +C41^2 +C42^2 +C43^2 +C44^2 +C45^2 +C46^2 +C47^2 +C48^2 +C49^2 +C50^2 +C51^2 +C52^2 +C53^2 +C54^2 +C55^2 +C56^2 +C57^2 +C58^2 +C59^2 +C60^2 +C61^2 +C62^2 +C63^2 +C64^2 +C65^2 +C66^2 +C67^2 +C68^2 +C69^2 +C70^2 +C71^2 +C72^2 +C73^2 +C74^2 +C75^2 +C76^2 +C77^2 +C78^2 +C79^2 +C80^2 +C81^2 +C82^2 +C83^2 +C84^2 +C85^2 +C86^2 +C87^2 +C88^2 +C89^2) / 90 – AVGC90^2)))^2)
Tc2000 PCF – Gap Test
ABS(C / C1 – 1) >= .15
TC2000 PCF – Number of Shares
(40000 * 0.002) / ATR(20)
Disclaimer: The information provided on this site is for education purposes only. The author is not a registered financial adviser and the ideas discussed on the site are just trading analysis and not recommendations. Robotic Investing doesn’t endorse any of the comments that might appear on the discussion threads. There is no guarantee for those comments to be accurate. By reading this site you automatically agree that Robotic Investing is not responsible for any of your trading decisions. Remember not to risk money that you cannot afford to lose. RoboticInvesting.com and all its products are Copyright© by Robotic Investing and property of Robotic Investing. All Rights Reserved.