Taking too long? Close loading screen.

Public Model

Based on Graham (Canada)

Benjamin Graham is the father of value investing, and the success of his strategy was based on value and company fundamental strength with an emphasis on survivability and stability. The approach was initially created over 80 years ago when the Graham and Dodd’s college textbook “Security Analysis” was published.

Graham’s approach focuses on the idea of an intrinsic value which is justified by a firm’s assets, earnings, dividends, and financial robustness. Focusing on this value, he felt, would prevent an investor from being misled by the misjudgement frequently made by the market in times of deep pessimism or euphoria.

This strategy is well described on his book  “The Intelligent Investor,”  first written in 1947.









First, it’s important to note that this is not an optimized model – it simply screens stocks as per Graham’s rules and have them ranked in a more optimal level.  Therefore, I view this public model as an active investing model, rather than a more elaborated trading one.

This is a low-turnover model; although purchased stocks are hold for at least 4 weeks, the model is rebalanced weekly due to market signal (as a first filter, to either be in cash or in stocks, according to the rule of this model).

This model is based mostly on fundamentals, and it has been revised to contain a market timing rules, besides momentum criteria for the ranking. According to backtests, the model avoid big drawdowns, however there will be times where the model switches to cash while the market keeps making new highs. That`s by design, since the market timing rules for this model is meant to reduce risk when earnings are estimated to decline broadly in the market – avoiding prices falling further due to negative sentiment. However, the market might stay overvalued a long time and continue making new highs. That doesn`t change the risks of overvaluation, so it`s prudent to follow the signals to minimize the risks associated with market correction.  The model will go back to equities (even if stock prices didn`t correct broadly), as long as it`s supported by rising estimated earnings (which drives stock prices).


Backtest summary performance with current market timing rules applied:


Detailed backtest performance shows maximum drawdown as well as % of invested stocks across different periods:


Backtest performance info:


Backtest stats info:


Backtest risk info:


Backtest Histogram Excess performance (holding for 4 months, which is the average duration for the stocks sold for a loss, rotating it weekly):


Backtest Histogram Portfolio performance (same period):









The universe for this model are the stocks in TSX only – so no Venture Exchange companies.

Buy rules:
– Price > $5 (no penny stocks);
– Current ratio is at least 1.5;
– Long term debt is less than 110% of working capital;
– Last 4 quarters of EPS above breakeven;
– Last 5 years of EPS above breakeven;
– Annual EPS grew over past year and past 5 years;
– Company has paid dividends within past year.
– Rank >= 80
– Average volume from last 60 days > 100,000

The top 10 companies of the ranking are selected.

Sell rule:
– Ranking < 80

The ranking is built by having equal weight distribution (25%) to the following criteria: Value, Growth, Quality and Momentum.

Value: 65% based on income stream (Current Fiscal Year Projected P/E Ratio, Projected Price/Earnings to Long Term Growth Rate and Market Cap to Adjusted earnings) and 35% based on others (Enterprise Value to Sales, Enterprise Value to Enterprise Asset and a conditional PB that will be applied only if 5-year ROE is above the industry average). These parameters consists the new ranking, updated for November 2015 rebalance, and described here.

Growth: 75% based on EPS growth (change per quarter, TTM and 5 years) and acceleration (formula for recent and long term acceleration ratio) and 25% based on sales growth and acceleration (same interval as EPS growth and acceleration).

Quality: 25% based on operating margin % (TTM and 5-year average), 25% based on asset turnover, 25% based on ROI and ROE (TTM and 5-year average) and 25% based on Finances (current ratio, interest coverage, total debt to capital ratio).

Momentum: 65% based on price changes (ratio between today and different past periods) and 35% based on technical indicators (up down ratio for different periods).

Market Timing rules:
The model relies on estimated earnings for the SP500 companies to enter or exit the market. History shows that when earnings from the biggest 500 US companies decline, the market declines globally (and vice-versa), so it’s more reliable than comparing with earnings from Canadian index, which is too heavy on financials and energy companies, and which the model rarely trades on. Therefore, the model attempt to exit the market when price is estimated to decline due to earnings – not to avoid declines on news, like it happened in 2011 or on a smaller scale, in 2015. History has shown these are short-lived anyway.

First, a daily graph of blended estimated earnings are plotted. This is calculated using a blend of the Current Year and Next Year estimates for the S&P500 stocks. The weight given to the Current Year and Next Year depends on which quarter was the most recent. For each SP500 stocks the following Blended_EPS variable is calculated:

if we’re on Q4 then it uses the Current Fiscal Year estimated EPS mean;
if we’re on Q1 then it uses 75% of the Current Fiscal Year estimated EPS mean and 25% for the Next Fiscal Year estimated EPS mean;
if we’re on Q2 then it uses 50% of the Current Fiscal Year estimated EPS mean and 50% for the Next Fiscal Year estimated EPS mean;
if we’re Q3 then it uses 25% of the Current Fiscal Year estimated EPS mean and 75% for the Next Fiscal Year estimated EPS mean.

The quarters refer to calendar year.

This SP500 Blended_EPS variable above is then computed as (for each stock as “i” from SP500):

num = Sum { Blended_EPS (i) * Shares (i) }
den = Sum { MktCap (i) }

Plotted value: ( S&P500 Close * (num/dem) )

By plotting this daily, a graph is formed. Then, a known strength technical oscillator is used to enter or exit the market when the graph hits a certain threshold value – going to cash when strength confirms a weak signal (which reflects a lower blended earnings, which should move stock prices lower), or going back to stocks when the strength oscillator confirms a stronger signal (which reflects a higher blended earnings, which should move stock prices higher).









Next rebalance date:
January 21, 2018

Last signals (January 14, 2018):
Sell: SJ
Buy: SIS

Current holdings (January 14, 2018):

Below is how the holdings should look like AFTER the rebalance.  This portfolio has an equal weight distribution, so you might want to consider buying / selling shares (where commissions make sense) to achieve the weight below.  It’s ok if you cannot achieve the exact number.  Weight below means how much of the portfolio is on that stock.

Ticker Weight Return Avg Share Cost* Days Held Yield Sector
ADW.A:CN 13.73% 39.30% $11.77 116 1.10%
Consumer Staples
CGY:CN 10.77% -0.09% $32.44 25 3.46% Industrials
CTC.A:CN 9.14% 8.08% $157.08 325 2.12%
Consumer Discretionary
CWX:CN 9.86% 17.23% $6.18 151 7.73% Industrials
HWD:CN 10.65% 28.29% $16.50 354 1.37% Industrials
MAL:CN 10.87% 9.59% $19.24 74 1.61% Industrials
RCH:CN 10.38% -3.85% $34.56 10 0.68% Industrials
SIS:CN 10.88% -0.37% $18.87 -3 1.91% Industrials
WFT:CN 13.71% 55.23% $54.65 319 0.52% Materials


Performance Info:

(last updated on January 14, 2018)


Stats Info:

(last updated on January 14, 2018)

Risk Info:

(last updated on January 14, 2018)

Current holdings allocation:

(last updated on January 14, 2018)

Ranking Information:

(last updated on January 14, 2018)


Market Timing indicator (oscillator based on earnings):

(last updated on January 14, 2018):

Sell signal (switch to cash or bonds) triggers when the blue line crosses below -100;  buy signal (switch to equities) triggers when the blue line crosses above 100:








  1. John

    What platform did you use to generate the above graphs?

    • Rod [Boost Your Income]

      Portfolio123. It’s a platform to design algo trading systems using fundamentals and technical analysis, and simulations are done with non-survivalship biased data. Data is provided by Compustat, which is fed by Standards & Poors Global database, CapitalIQ and Interactive Data. The backtest graph is the result of the buy and sell rules, combined with rebalance and ranking rules, applied to different time frames. The same rules are being used on the live model.

  2. Adam

    Rod, possible to set up a notification on each update? I’m often a few days delayed… sometimes a month delayed. Would love some sort of notification letting me know about an update!

    • Rod [Boost Your Income]

      Hi Adam,

      Since subscription is not required for the public model, there is no way to send notifications. However, updates are done weekly, and it should be in place by Sunday night or Monday morning. This model employs market timing weekly, so it’s a good idea to have a reminder (it can be set on your phone) to check weekly. At this point, only premium models have email notifications.

  3. Slashon (from RFD)

    Hi Rod,

    Is it possible to post the strength oscillator (market timing rules) along with updates? Bi-weekly, or monthly seems sufficient.

    Thank you for your continued work.

    • Rod [Boost Your Income]

      Absolutely, and that’s a great idea. I’ll soon post with the other performance stats.


    • Rod [Boost Your Income]

      Market timing oscillator posted under stats. I’ll update it on a weekly basis, along with other stats info. Thanks for that suggestion.

  4. Alex

    Hi Rod, thanks for creating this, really appreciate it. I was following your thread on RFD off and on previously and recently decided I’d like to try this. After the next re-balance, so Monday November 20th, would I buy all the listed stocks based on their weight after the re-balance? So if buying 50k worth, it would be 50k x weight of each stock?


    • Rod [Boost Your Income]

      Hi Alex,

      Correct, you distribute the weight equally, so you’d start with $5K for each stock. I personally rebalance th equal weight every time there’s $1,000 worth of rebalance to be made.

      Please let me know if there are any other questions.


      • Alex

        Hi Rod,

        Sorry I’m confused by your reply. To follow the model now would i buy 5k of each stock or would it be 50k x the current weight of each stock?


        • Rod [Boost Your Income]

          Hi Alex,

          There are 2 choices: allocate equal weight amount to the stocks ($5k each) or follow the suggested weight model ($50k times the current weight of each stock). Here are the differences:

          When the model started, it had equal weight distribution, so 10% on each stock (if it started with $50k, it would have $5k on each stock). The weights are not perfectly equal now because rebalance happens only if there is a 10% weight deviation between stocks, and winners that have been held for a long time keep driving the weight up. When a sell signal is issued, the proceeds of that sell are used towards the buy of the next stock. If 2 stocks are sold, then I divide the proceeds by 2 and allocate that amount to each new purchase. So which method to use?

          I prefer to start with equal weight, as it balances the risk of the initial stocks when you start, and then the weight will change eventually depending on stock performance. However, that won’t perfectly mimic the model, because the model started before you did. If you truly want to mimic the model performance, then you should have your total amount ($50k) times the current weight of each stock, exactly as the model is setup now. But that means allocating more weight to the winners of the model and less weight to the losers of the model, even though you were not invested on those winners. Hence my personal choice is always to start with equal weight and then go from there.

          This only apply to this model, which doesn’t have rebalance and reconstruction done independently – Premium Models have specific weight allocation, and one should always follow those, as they are rebalanced / reconstructed at every rebalance.

          Please let me know if there are any other questions.



Submit a Comment

Your email address will not be published. Required fields are marked *

Pin It on Pinterest