Return on Investment Backtest

Return on Investment (ROI) is a fundamental measure of profitability and efficiency based on how much net income is generated by a company’s total debt and equity.  Return on Investment is calculated as follows:

Return on Investment = Income After Taxes / (Total Long Term Debt + Stockholders Equity)

This fundamental is defined in Portfolio123, the bactesting tool I’m using, as the trailing twelve-month income after taxes divided by the average total long term debt and stockholders equity, expressed as a percentage.

Let’s take a look at a backtest for ROI to see how it performs. I used the data and backtesting tool provided by Portfolio123. The Portfolio123 backtesting eliminates the problem of survivorship bias by using point-in-time and retaining data on stocks that have gone to zero. This backtest uses the same filtered universe of stocks as my recent Return on Assets Backtest. I’ve designed the filtering criteria for this backtest specifically for individual investors and with a focus on enhancing data quality. The filters include the following criteria:

  1. No OTC stocks. Stocks not traded on the New York Stock Exchange, NASDAQ, or American Stock Exchange markets are excluded. The quality of fundamental stock data for OTC can be somewhat lower and less timely that that for stocks traded on major exchanges.
  2. No ADRs. Fundamental data for foreign American Depositary Receipt can include errors due to currency exchange, different accounting standards, and share count.
  3. Liquidity test. The average daily total amount traded over the past 60 trading days must be larger than $100,000.  This amount was selected so that a $1 million dollar portfolio could hold 100 positions and that each new $10,000 position would not exceed 10 percent of a day’s trading volume. The liquidity test also ensures that the backtest has reliable market price information for any of the stocks that are being tested.
  4. Market Cap > $50 million. Nano cap stocks are excluded to help improve data quality. This filter also ensures that positions in a modest sized portfolio never exceed one percent of shares outstanding or the available float for a company.
  5. Price > $1. True penny stocks are excluded due to various information issues and manipulation of these stocks.
  6. ROI  != NA. This filter insures we are looking at stocks that actually have valid ROA numbers.

After these filters are applied, we are left with approximately 3,200 to 4,100 stocks. These stocks are then ranked by the criteria being tested; in this case, we are testing Return on Investment. The lowest 20 percent of stocks ranked by ROI are placed in the first quintile and the next 20 percent in the second quintile and so forth until we have five portfolios of stocks. The portfolios are rebalanced every 12-months and compounded annually to more realistically replicate what an individual investor might be expected to do to avoid higher short-term capital gains tax and trading costs. The following 5 charts display the quintile returns for Return on Investment in red and the S&P 500 Equal Weight Index in blue.  The first quintile includes the companies that had the lowest ROI and the 5th quintile includes the companies that had the highest ROI.

Return on Investment Returns – 2000 – 2014

Return on Investment 1st Quartile
Return on Investment 1st Quartile
Return on Investment 2nd Quartile
Return on Investment 2nd Quartile
Return on Investment 3rd Quartile
Return on Investment (ROI) 3rd Quartile
Return on Investment 4th Quartile
Return on Investment 4th Quartile
Return on Investment 5th Quartile
Return on Investment 5th Quartile


Summary of Results for the Return on Investment Backtest

15-year Backtest Results for Return on Investment (ROI)
15-year Backtest Results for Return on Investment (ROI)

* Average excess returns were analyzed starting in each month with 12-month holding periods (197 sample periods). This avoids the potential for seasonal reporting bias.

Return on Investment by Quintile chart
Average annual excess returns from 2000 to 2014 for Return on Investment (ROI)

This backtest for ROI reveals that the first quintile underperforms the S&P 500 Equal Weight Index benchmark. These companies typically are unprofitable, so it is not surprising that stock returns for these companies would underperform. The second through fifth quintiles have higher than average annual excess returns but the excess returns do not increase consistently as ROI increases. In fact, average excess returns drops to 2.63% for the fifth quintile even though the fourth quintile has average excess returns of 4.75%.

I noticed that stocks in the lowest quintile clearly under performed the benchmark.  The median ROI for this first quintile is -18.81 while the median for all the other quintiles are positive. It appears the most powerful feature of ROI is associated in identifying stocks with negative returns on assets to avoid poor performers.

The results of the ROI backtest are very similar to the ROA backtest I ran earlier this week. The main difference is that the 1st quintile of the ROI backtest had slightly lower returns  than the ROA backtest and the 4th and 5th quintiles had slightly higher returns.  The Sortino ratio is 0.46 for the top quintile for ROI and only 0.41 for ROA. Therefore, the ROI fundamental seems to outperform the ROA by just a bit.

What are your thoughts on the Return on Investment fundamental? Do you use ROI or some variation of it in your own stock analysis?

One thought on “Return on Investment Backtest

  • July 8, 2016 at 10:16 am

    We have not had much success testing ROI. We however did find another quality ratio that works.

    It was developed by Professor Novy-Marx who defined a quality company as one that had a high gross income ratio calculated by dividing gross profits by total assets.

    He defined gross profit as sales minus cost of sales and assets simply total assets as shown in the company’s balance sheet (current assets + fixed assets).

    You can see the full back test here:

Leave a Reply

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