What and Why?
Inderes has achieved great popularity in the Finnish investor community. Several reviews and even a quantitative analysis of Inderes’ model portfolio have been made by community members (Inderes mallisalkku – kvantitatiivinen analyysi - Sijoittaminen - Inderes forum). The model portfolio has beaten the benchmark index by picking carefully selected winning stocks and holding them for several years. However, Inderes currently covers well over a hundred Finnish listed companies: what about all the recommendations Inderes has given?
In this analysis, I aim to evaluate the accuracy of all recent recommendations and answer these questions:
- For how many companies have the recommendations beaten the
Indexstrategy? - What would the annual return be by following Inderes’ recommendations versus the
Indexstrategy? - With what probability would a dart-throwing monkey succeed just as well, i.e., statistical significance?
- What would the annual return of the strategies be:
- For individual stocks?
- For individual analysts?
- For different market capitalizations (large, mid, small, First North)?
- What was the annual return by 2020-06-30, before the mid/small cap companies skyrocketed?
I did this analysis as a hobbyist, even though I work in machine learning and statistics. I have no financial ties to Inderes, and before the analysis, I was skeptical about how well the recommendations have hit outside of the winning stocks. However, the analysis showed something very surprising…
The data is open, and I am publishing the Python code so that the calculations can be verified (GitHub - majuvi/suositukset · GitHub)
27.1.2022 This is an estimate based on recommendation data. Added a post comparing the Inderes portfolio and the Index portfolio based on a return index formed from price and dividend history data.
28.1.2022 Added an estimate of the investor’s actual annual return without the Inderes effect or possible informational advantage when the stock is bought only at the next day’s closing price.
Data: Recommendations
Inderes publishes a selected slice of the recommendation history in connection with reports, from which they can be conveniently copied. Some reports require a Premium membership, but the recommendations themselves are public. Over the weekend of January 22–23, 2022, I gathered the recommendation history from all the most recent reports and combined it with previous history I had collected in the summer of 2020. The data typically contains a couple of years to a few years of recommendation history for each stock. Gathering it requires a bit of diligence or better web scraping skills than I have… Data processing is minimal: converting SEK to EUR on the recommendation date, translating Suominen’s English to Finnish, and manually correcting a dozen incorrect dates.
From these reports, the following dataset can be constructed:
Pvm,Suositus,Tavoite,Osakekurssi,Analyytikko,Osake
2019-04-09,Vähennä,8.5,8.87,Atte Riikola,Aallon Group
2019-08-23,Vähennä,9.0,9.5,Atte Riikola,Aallon Group
2019-09-30,Vähennä,9.0,9.34,Atte Riikola,Aallon Group
2019-12-12,Vähennä,9.9,10.45,Atte Riikola,Aallon Group
2020-02-14,Lisää,11.0,10.45,Atte Riikola,Aallon Group
…
2021-11-24,Vähennä,5.0,4.84,Olli Koponen,YIT
```Total data includes 3,109 rows, meaning recommendations, 17 analysts, and 139 stocks.
The data has two limitations that are good to keep in mind: 1) 'Analyst' is the latest analyst, it does not take into account if the analyst changes. 2) The stock price does not take dividends into account, so the return calculated from it is slightly lower than the total return from price change and dividends.
This data can be visualized as a whole, for example, as follows. In the lines, the color represents the recommendation (blue: Buy/Accumulate and orange: Sell/Reduce) and the length of the line represents the time the stock is under Inderes' coverage. From the graph, we can see, for example, that Inderes has followed Siili Solutions stock mostly with a positive recommendation, and Kone's stock also for several years, always leaning towards reducing. In the case of Nokia's stock, the recommendation has varied more. I assume that a portfolio following the "Inderes" strategy consists at any given time of stocks that have an Accumulate/Buy recommendation. A portfolio following the "Buy/Hold" strategy, i.e., the "Index", would have consisted of stocks under Inderes' coverage regardless of whether the recommendation was Accumulate/Buy or Sell/Reduce. Unfortunately, this data cannot fully replicate the official index because the data contains the stock price only when the company is under Inderes' coverage at the time the recommendation is given.

## Example: Nokia
I will briefly explain how I calculated the annualized return. I will use Nokia as an example:

“Return”, “Holding period”, and “In portfolio” have now been added to the table. These help calculate the return between each recommendation and are defined as follows:
* Return: Is the return based on the stock price change from the previous recommendation to the current recommendation, i.e., stock price(t)/stock price(t-1).
* Holding period: Is the number of days from the previous recommendation to the current recommendation.
* In portfolio: Was the stock in the portfolio following the Inderes strategy, i.e., was the previous recommendation Buy/Accumulate.

In the example, Nokia's return is simply the product of these returns, i.e., 1.04 * 0.77 * ..., which corresponds to the stock's final price divided by the first price. The total holding period in days is the sum of these holding periods. However, the return depends on the holding period: the return for an average stock is e.g., 5% in one year, 10% in two years, ... etc. Therefore, we convert the return into an annualized return (CAGR) using the formula: return ** (365/holding period).
**Buy and hold**
Tuotto 0.951049
Pitoaika 2911.000000
CAGR 0.993727
Meaning Nokia yielded -5% as a price change over the monitoring period of 2,911 days, which corresponds to about -0.6% annualized return.
A portfolio following the Inderes strategy owns the stock when it has a Buy/Accumulate recommendation. This return can be calculated by taking the product of the returns during the time the stock is in the portfolio, and the total holding period is the sum of these holding periods. If you want to take into account the Inderes effect and possible post-market information, you must use the next day's stock price. I call this the "Actual" return. The returns are not directly comparable because the stock is held for a shorter time, but converted to an annualized return (CAGR), these figures can be compared:
**Inderes**
Tuotto 2.437720
Pitoaika 2097.000000
CAGR 1.167771
**Inderes (Actual)**
Tuotto 1.923152
Pitoaika 2097.000000
CAGR 1.120559
Meaning Nokia yielded 144% as a price change over 2,097 days with a positive recommendation, which makes an annualized return of about 17%. If you buy and sell only at the next day's closing price, you get an annualized return of 12%. Quite an analysis wizard this @Mikael_Rautanen!
## Return of all stocks
A similar calculation can be made for each stock separately:

How many stocks' recommendations beat the index? That is **CAGR_Inderes > CAGR_Index**
True 99
False 40
For 99 stocks, the recommendations beat the index, and 40 did not achieve a better return than buy & hold.
How many stocks' recommendations beat the index without the Inderes effect? That is **CAGR_Actual > CAGR_Index**
True 89
False 50

The annual return of some stocks can be extremely high if the monitoring period from the first recommendation to the last recommendation is very short (e.g., Duell) or if the stock has an Accumulate recommendation for only a very short time. For example, a one-off 4% weekly return on a stock would correspond to an annualized return of $1.04^{(365/7)} = 7.73$, i.e., an annual return of about 673%. This example also illustrates why comparing annual returns does not necessarily answer the question of how an investor could perform. This "annual return" is only possible to achieve for one week a year—meaning the return is 4% during that week, but otherwise, the stock would have a Reduce recommendation, yielding no returns during those times.
## Portfolio Return
To take this into account, I made the following estimate of the portfolio's annual return:
1. Average of annual returns: a simple calculation that describes Inderes' performance.
2. Annual return from investing in stocks that have an Accumulate recommendation **and** are under Inderes' coverage.
Of these, number 2 best describes the performance of an actual investor. In the previous line chart, this would correspond to a situation where a follower checks the stocks under Inderes' coverage with an Accumulate recommendation every day and allocates their portfolio evenly among them. This is a slightly more complex calculation; the return at any given moment is the arithmetic mean of the returns ($r_i$) of the portfolio stocks, from which the geometric mean of the returns across time points is taken, factoring in the probability that the stock is in the portfolio ($X_i$). I calculated this using the Monte Carlo method by sampling portfolios at various time points with the probabilities that the stocks are under coverage and have an Accumulate recommendation. This corresponds to the portfolio's average annual return over time:

[ https://en.wikipedia.org/wiki/Product_integral ](https://en.wikipedia.org/wiki/Product_integral) see Law of large numbers
I get the following returns for an **Inderes** investor:
1. 1.542
2. 1.386
And the following returns for an **Inderes (Actual)** investor:
1. 1.245
3. 1.251
And the following returns for an **Index** investor:
1. 1.181
2. 1.108
**On average, therefore, an Inderes investor achieves a 38.6% annual return over these few years based on share price changes, and a 25.1% annual return when factoring in the Inderes effect by using the next day's closing price, whereas an index investor is left with a 10.8% annual return.** I also report the simple average of these stock-specific annual returns (CAGR) because it is easier to understand: 54.2% Inderes vs. 24.5% Inderes (actual) vs. 18.1% Index.
The difference is significant, but could it be a coincidence? This can be answered with the following statistical test. Let's assume that Mikael Rautanen has hired a bunch of monkeys to throw darts to decide whether stocks are given an Accumulate or Reduce recommendation. Let's simulate a situation where the monkeys randomly give all recommendations, repeat this 1000 times, for example, and calculate the annual return achieved by the monkeys:

mean 1.133 sd 0.022 (12 sigmas Inderes, 5 sigmas Inderes (actual))
We observe that out of 1000 simulated Inderes companies where monkeys throw darts, not a single one comes close to the actual Inderes annual return; instead, they generally achieve returns between 10–20%. For the gurus: a permutation test with the null hypothesis "the given recommendations are randomly allocated to the given time points," p-value 0.000.
## Portfolio Return: Before the "Ränta på ränta" Market

These annual returns seem too good to be true, but they are explained by the 100% surge in the Helsinki Small Cap index after the summer of 2020 (Google: OMXHSCPI). Inderes' coverage period overrepresents this moment. Therefore, it is interesting to verify that Inderes' success has not been based on the current "ränta på ränta" (compound interest) market. I therefore limited the data to 2020-06-30 and ran the same calculations again.
I get the following returns for an Inderes investor:
1. 1.432
2. 1.202
And the following returns for an Inderes (Actual) investor:
1. 1.129
2. 1.113
And the following returns for an Index investor:
1. 1.038
2. 0.971
In other words, an investor following Inderes would have achieved a 20.2% annual return from price changes, an 11.3% annual return from price changes using the next day's closing price, and -3% annual return following an index compiled from the coverage. These are presumably closer to a typical future market.
Again, the same dart-throwing monkey simulation:

mean 1.002 sd 0.023 (7 sigmas Inderes, 4 sigmas Inderes (actual))
All data is available again. One could argue that Inderes' success is based on the thinly followed small-cap sector, so I analyzed the accuracy of the recommendations separately for the largest, medium-sized, smallest, and First North companies on the Helsinki Stock Exchange. Unfortunately, I did not have direct data on market values, so these are based on the 1-40 most traded, 40-80 most traded, and 81-144 least traded at the point in time of December 31, 2021. Omxh25* corresponds to the 1-25 most traded.

It seems that it is easier to generate excess returns in smaller companies, but Inderes has achieved excess returns with stocks in all categories.
In the following graph, I calculated the return an investor following an individual analyst would have received (calculation 3.) and compared this to an index consisting of the companies followed by that analyst. It does not take into account the change of analyst, so it is not directly suitable as a metric for a specific analyst:

We can see that almost all Inderes analysts beat their benchmark index, meaning the results are not explained by a few top names. Everyone is a star analyst!
## In Conclusion
Inderes' average annual return of 38.6% calculated from the recommendation data vs. Inderes' actual annual return of 25.1% at the closing price of the next trading day vs. buy & hold 10.8% annual return based on stock price changes is an incredible achievement. The 20.2% annual return and 11.3% actual annual return achieved by Inderes before the "ränta på ränta" (compound interest) summer of 2020 is very respectable compared to the -3% of the index. The Inderes effect or information published after the stock market closes has a surprisingly large impact on the performance received by an actual investor, but the difference to the index is nevertheless significant. This was a quick weekend exercise, and it is still a good idea to double-check the calculations. Questions, constructive criticism, and suggestions for expanding the analysis are welcome.












