Analysis of all Inderes recommendations

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 Index strategy?
  • What would the annual return be by following Inderes’ recommendations versus the Index strategy?
  • 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.
![image|263x500](upload://3Hs1vWYFROF9VWYLtTo1CHYQotn.png)

## Example: Nokia

I will briefly explain how I calculated the annualized return. I will use Nokia as an example:
![image|678x500, 50%](upload://roqdcuNMZ0MYfNxrVIeuULylvkW.png)

“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.
![image|644x231](upload://c2FCAQUvp4cmjloSpFU2G9QI7fK.png)

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:
![image|643x217](upload://9lhgG6VXiT7013hj0Dt9H5KH5Q2.png)

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

![image|690x293](upload://zKRA7M7M9v1tmRLTsQe7BJ84NOY.png)

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:
![image|559x62, 75%](upload://vf43R7O5jEDBG6t6D979gCxgvlw.png)
[ 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:
![image|690x490, 50%](upload://2Q2io9VZzzcfWYknFyCRDFcuab8.png)

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

![image|437x263](upload://wd69BSQJLOKqiMjPHd73VzYIX5B.png)

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:
![image|690x493, 50%](upload://xI9PzJQoOGicjrJzFCWAXqrcf4D.png)

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.
![image|623x489, 50%](upload://lYoZzf5DCyePYabUWhj622Z4nCW.png)

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:

![image|690x487, 50%](upload://hPwMAjri5iqVnYz55GWov7TcLnJ.png)

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.
290 Likes

Interesting analysis, and nice to see that pandas comes naturally to you :nerd_face:

I recall that @Kelpieracer had done a similar analysis some time ago; in addition to the code, data can probably also be found here:

12 Likes

All I can say is, hats off. Both to the analyst and to Inderes.

200w

56 Likes

Great research and strong results! I’m wondering if Inderes’ figures include some undeserved information advantage. For example, a situation where a company issues a positive announcement after the stock market closes, and then Inderes updates its analysis from “reduce” to “add” before the start of the next trading day. However, the share price in the analysis is based on the closing price of the previous trading day, which gives Inderes’ analysis an information advantage relative to that price. A similar situation can occur when an update following a negative announcement turns from “add” to “reduce.”

20 Likes

Good job, and it’s great to see you’ve got a knack for this! :grinning_face:

I couldn’t be bothered to copy-paste all the companies I was following back in the day, so it’s good that’s been done now. And my own results have been confirmed.

Did you analyze the different recommendations separately? I concluded that the “add” recommendation was a bit useless, and there was no difference from the “reduce” recommendation. Following only the “buy” recommendation yielded excess returns.

And indeed, the Inderes effect eats into returns. So, buys and sells need to be looked at from the close of the next trading day.

I didn’t check where you got the price data; I just used Yahoo and adjclose (which accounts for dividends and splits), but one has to be careful with data errors.

Edit: Let’s save the old ones here

And a disclaimer

20 Likes

It’s great to hear that someone else has done similar analysis. I tried searching the forum but missed these posts. I’d love to hear more about this, perhaps in this thread, if you have more results. I haven’t specifically studied Buy/Add or Sell/Reduce recommendations, but I assumed both correspond to adding or removing a stock from a portfolio. Good idea to test this!

The good thing about this recommendation dataset is that it doesn’t require separate price data because the current stock price is given along with the recommendation. As a couple of commenters pointed out, its downside is that it cannot be corrected for information appearing after the market closes and the Inderes effect, as this would require the next day’s closing price. In addition, the formula is an estimate of the average annual return. The idea is to add this when I have time.

5 Likes

Wouldn’t the next day’s opening price be best?

2 Likes

Or their average…
So, Yahoo provides AdjClose directly, not AdjOpen, though it can be easily calculated.
In any case, I think it’s more accurate to use the adjusted figure since it includes splits and dividends.
Edit. I have a personal problem called a “day job,” and I usually don’t have time to trade before evening, which is why I might be fixated on the closing price.

2 Likes

Actually, when I was writing it, I already thought they would get lost in the lounge… good that you made your own thread.

Yeah, you can easily get the price history from that yahoo_fin library once you’ve got pandas (Pandas) under control.

I’ve simulated all sorts of things, but I don’t recall anything more specifically related to Inderes recommendations.
Sector, size, and continent rotation strategies with ETFs (I get returns compared to B&H, but lose to MSCI World), and trading with Nordnet Markets products on equity and metal targets, that’s what I did last.
Inderes recommendations (and model portfolio) have had the best backtests. With Nordnet Markets products, you can make returns by quant trading stocks, but it takes a huge amount of your own and machine time. I’ve written about some of these in the algorithms thread.

3 Likes

This morning, I added the actual return received by an investor, where the Inderes investor’s buys and sells are made at the closing price of the next day. I need to investigate the Yahoo API. Currently, I downloaded the price history from Kauppalehti’s (Finnish financial newspaper) website, which I understand is also adjusted for splits, etc.:

Edit: Added to the first post, many thanks to @Sijoittaja-alokas and @Yu_Gong

30 Likes

Great and useful work, @vuh!

Edit. Is it possible to find out from that data how the Inderes effect has developed over the years? I.e., when was this advantage eaten away?

2 Likes

A quick new analysis first thing in the morning. I’ve now calculated the return of a balanced index of all shares and compared it to an index compiled from Inderes’ recommendations. That is, an index investor owns all shares on the Helsinki Stock Exchange and First North in equal euro amounts, and an Inderes investor owns all shares with Inderes’ buy/add recommendations in equal euro amounts. Both indices are rebalanced daily in the calculations. I performed balancing and daily rebalancing because it is easiest with this data.

First, it is necessary to retrieve the price and dividend history and calculate the total return for each share. For this purpose, I fetched the closing prices and dividends for trading days starting from 01-01-2000 and ending on 31-12-2021. The idea is to assume that on the ex-dividend date (when a buyer of the share no longer receives the dividend), the dividend is reinvested by buying the same share with the same amount of money as received from the dividend. The purchase is made at that day’s closing price. Consequently, if the dividend is d and the price is P, the investor has d/P new shares in the company. As a result, the number of shares increases by (1+d/P) each time the company pays a dividend. The total return is then each day’s closing price multiplied by the investor’s total number of shares. Below is an example of Nokia, where the total return from time T to time T+K is simply Total Return (T+K) / Total Return (T) (orange line). In the long run, dividends have a significant impact:

By taking the total return of all shares, various indices and nice graphs can be calculated. Neste performed strongly, but Ahtium (ex Talvivaara) took a quick nosedive:

It is important to remember here that small companies have performed significantly better during the period, so the balanced index I used yields better returns than the official OMXHGI index:
image

This is often explained by a few super successful companies (Boreo, eQ, Marimekko):

Inderes vs. Return Index

Now to the results. If we look at the previous graph visualizing the data set in the first post, we observe that in 2014, only a couple of companies were being tracked: Nokia (fluctuating), Siili Solutions (add). Because of this, the outperformance of the ‘index’ formed from 2014 onwards would be mainly based on Siili’s positive recommendation. Therefore, I will initially show a more representative index formed from 2018-01-01 onwards.

From 2018 onwards

In the following index, “Inderes” buys a share into the portfolio on the same day an Add/Buy recommendation is given, and sells the share when a Reduce/Sell recommendation is given. “Inderes (actual)” is corrected for potential informational advantage and the Inderes effect by buying the share only at the closing price of the next trading day. The investor’s portfolio thus consists of all companies for which Inderes has an Add or Buy recommendation. The “Index” tracks all companies on the Helsinki Stock Exchange and First North on an equal-weighted basis. “Inderes (reduce)” is the “Inderes” recommendations in reverse.

I get the following annual portfolio returns by 31-12-2021:

Inderes                  1.285636
Index                  1.175273
Inderes (actual)     1.254914
Inderes (sell/reduce)    1.086588

And the following by 2020-06-30 before the “räntä pa räntä” (slushy snow) summer.

Inderes                  1.127808
Index                  1.040166
Inderes (actual)     1.100969
Inderes (sell/reduce)    0.983676

From 2014 onwards

This calculation might be misleading due to the small number of shares on which the recommendations were based, but I will include it anyway.

I get the following annual portfolio returns by 31-12-2021:

Inderes                  1.322538
Index                  1.183842
Inderes (actual)     1.296388
Inderes (sell/reduce)    1.132848

And the following by 2020-06-30 before the “räntä pa räntä” summer.

Inderes                  1.265387
Index                  1.131018
Inderes (actual)     1.241634
Inderes (sell/reduce)    1.100633

Conclusions

The actual annual return of the Inderes portfolio between 01-01-2018 and 31-12-2021 (4 years), when most stocks were under coverage, was 25.5% per year, while the annual return of the balanced index consisting of all stocks remained at 17.5%. The OMXHGI index yielded an annual return of ~13% during the period, which is significantly less (no FN, market cap weighted). The return between 01-01-2018 and 2020-06-30, before the “räntä pa räntä” summer, was 10.1% for the Inderes portfolio and 4.0% for the balanced index of all stocks.

In a previous post, we estimated the annual return of the Inderes (actual) portfolio to be 24.8% and the annual return of the index price change to be 10.7%. Before summer 2020, we estimated the annual return of the Inderes (actual) portfolio to be 11.3% and the annual return of the index price change to be -3%. The return based on the actual index is very close to previous estimates for Inderes, but the index’s return improved by approximately +7%. This should be explained by taking into account dividends and companies not under coverage (or no longer under coverage). However, Inderes still clearly beats the index :wink:

34 Likes

Have you considered a calculation exercise that also accounts for taxes and trading fees? On the OST (Osakesäästötili - Share Savings Account) side, you can, of course, trade tax-free, but in that case, the portfolio size is probably such that trading fees per trade are significant. At least assuming such a high level of diversification. For example, how much does the return decrease when 0.3-1% in fees is taken from each trade?

1 Like

Interesting question, I could do it. Nordnet’s pricing would charge an Inderes-active investor 0.10%-0.15% in fees if they could invest about €4667-€5000 at once, and one could still consider subtracting the bid/ask spread from that. If one does it daily, there won’t be any returns :smiley:

It also occurred to me about the ‘Inderes (Actual)’ index that while it measures a private investor’s return well, in principle it is unfair when measuring Inderes’s performance because they could have bought the stock before the Inderes effect, insofar as this effect is based on other investors’ excitement and not on information after the close of trading.

Added: Trading Costs

I started calculating trading costs and tax effects, but it’s much more complicated than I thought. If there’s no cash in the portfolio, a selling strategy should be made when Inderes gives an ‘Add’ recommendation; for example, selling the best-performing stock by halving the position, etc. Whether to hold cash and with what lump sum to trade. To avoid trading costs, it might be more reasonable to invest a larger sum in a stock at once than to maximize diversification, and then one would have to randomly choose where to invest. What about rebalancing, etc.? Then one would also have to subtract tax from dividends and capital gains tax at the time of sale.

However, I made you @Fyys this simple ‘small investor’s Stock Savings Account’ calculation on a napkin :smiley: . Below is the number of positive and negative recommendations over time, the number of recommendation changes over time, and the number of portfolio trades over time. The latter is slightly smaller because starting monitoring with a negative recommendation does not change the portfolio. We see that an Inderes investor following recommendations would make 4-40 trades per month, averaging 14 trades. Nordnet’s pricing Tier 2 (11-50 trades/month) is 0.10% / min €5. Add and reduce recommendations come equally often, and nowadays Inderes follows most companies, so we could simplify that the portfolio would now have 80 stocks, and these are changed according to recommendations.

This would mean investing €50,000/80 = €625 in one stock, a fee per trade of €5/€625 = 0.8%, and an annual fee of 14 * 12 * €5/€50,000 = 1.68%. If €1,000,000 were available, €12,500 would be invested in one stock, a fee per trade of 0.1%, and an annual fee of 0.21%. 14 * 12 = 168 trades are made during the year, meaning the turnover is 2.1x the portfolio, hence the fee is 2 times. This 1.68% fee gradually decreases to this 0.21% minimal fee when the portfolio value exceeds 80 * (€5/0.1%) = €400,000.

Earlier, I estimated that Inderes (actual) has generated an outperformance of 6-8% compared to the OMXH&FN balanced and daily rebalanced, completely cost-free hypothetical return index. If we subtract this 0.21% - 1.68% fee, depending on the portfolio size from €400,000 to €50,000, we are still in profit :wink:

10 Likes

The Inderes Effect

By popular demand (@Kelpieracer), I spent an evening conducting another analysis of the Inderes effect, which is the phenomenon where a stock’s price jumps immediately when Inderes issues a Buy/Accumulate recommendation and falls with a Sell/Reduce recommendation. Many have surely noticed this phenomenon in the stock market, so here is data on the average Inderes effect. I analyzed it by:

  • Recommendation type: Buy/Accumulate/Reduce/Sell
  • Market capitalization: fn/small cap/medium cap/large cap/OMXH25
  • Year: 2017-2021

The idea is to measure how much a stock yields after Inderes issues a recommendation. Let’s define 0 as the recommendation date, 1 as the next day, 2 as the day after that, and so on. For comparison, I also calculated the average return of all other stocks, i.e., the ‘index’ for each recommendation from the recommendation date onwards. We could assume that the recommendation correlates strongly with the stock’s performance but not with the index, unless ‘accumulate’/‘reduce’ recommendations are generally given more when the market as a whole is trending up/down.

Buy/Accumulate/Reduce/Sell

The following image visualizes the average daily percentage return based on the type of recommendation, and the average cumulative return of an individual stock and the index over the subsequent trading days. It is observed that on the day of the recommendation, a ‘Buy’ recommendation immediately yields +3%, an ‘Accumulate’ recommendation +1%, a ‘Reduce’ recommendation slightly less than -1%, and a ‘Sell’ recommendation slightly less than -2% return. The effect continues, albeit more subdued, for the next couple of days. It’s interesting to note that the effect does not reverse over time; that is, the stock does not return to its starting level. Cumulatively, it is observed that the return difference of ‘Buy’/‘Accumulate’ stocks compared to the index increases over time, meaning the outperformance is not solely due to the Inderes effect, although it is significant. The return of ‘Reduce’/‘Sell’ stocks rises slightly above 0% after a couple of months, which is a significant underperformance compared to the index.

fn/small cap/medium cap/large cap/omxh25

Let’s examine cumulative returns based on turnover on 2021-12-31, where I categorized stocks into different classifications: fn (First North) / small cap (81-144 least traded) / med cap (41-80 traded) / large cap (1-40 most traded) / omxh25* (1-25 most traded). It is observed that the Inderes effect is largest in small and medium-sized companies, on average even +/- 5% for ‘Buy’/‘Sell’ recommendations. In large companies, a small positive +1% effect can be observed for ‘Buy’/‘Accumulate’ recommendations, but no negative effect. Inderes’ outperformance can be observed in all categories. This does not appear to be based on market timing as stocks with positive recommendations only catch up to the corresponding index.

2017-2021

Finally, the same analysis for different years. I don’t see a clear trend that the Inderes effect has increased or decreased, but it’s interesting to observe how recommendations work in both falling (2018) and rising (2021) markets. During the COVID-19 pandemic (2020), Inderes also seemed to succeed in market timing because the index also yielded differently based on the type of recommendation. That is, ‘Reduce’ recommendations correlated with a general decline in stocks, and ‘Accumulate’ recommendations correlated with a general rise in stocks. Inderes’ strength, however, lies in stock picking, as the best returns were made by picking winners in a generally rising market (2019, 2020, 2021).

38 Likes

Portfolio management is indeed a difficult topic, and there are many different options. In my own project, the problem has become clearly apparent recently, as the investment options have increased while the sum to be invested has remained the same. The intention is to invest more in better targets than in less good ones, while still ensuring sufficient diversification.

For example, with a minimum trade of €4,000 within a €100,000 portfolio, and a maximum investment of €20,000 in a single company. In this case, it is possible to invest clearly different amounts in five investment targets. If the number of investment targets grows to 15, the maximum available for one company is only €6,666. At this point, clear differences in investment amounts can no longer be made. One must choose an amount between €4,000 and €6,666, and no additional investments can be made.

With cheaper brokers, transaction costs can be reduced. If the choices are good, even an increase in the relative share of costs is not necessarily a bad thing. A third option could be to prune poorer investments, for example, to eight, which would allow investing a maximum of €12,500 in a single company. If the investment decision is guided by Buy/Sell information, pruning is quite difficult quantitatively.

When investing a fixed sum, one is also exposed to fluctuations in the number of investment targets. If anyone has information about good literature concerning portfolio management, please share.

2 Likes

Just throwing this out as an idea (since there’s been some interesting discussion about target prices): what kind of returns would one get by investing directly based on Inderes’ target prices?

The portfolio would be allocated so that Target Price - Current Price (I believe this is the potential in Inderes’ stock comparison table) would correspond to the stock’s weight in the portfolio.

This could be done long-only, considering only positive potentials. Or “market-neutrally,” so that negative potentials would be shorted proportionally.

If someone has some free time, interest, and their existing Python scripts could be adapted without major changes, it would be interesting to see. And it would provide an interesting backdrop to the discussion caused by the fluctuation of the risk-free rate.

5 Likes

There’s a lot to be found in academic literature, but the answer is complex and context-dependent :grin:. However, I do remember that many studies have found that 1/N balancing works surprisingly well in reality. Here are a couple of strong papers:

The modern portfolio theory pioneered by Markowitz (1952) is widely used in practice and extensively taught to MBAs. However, the estimated Markowitz portfolio rule and most of its extensions not only underperform the naive 1/ N rule (that invests equally across N assets) in simulations, but also lose money on a risk-adjusted basis in many real data sets.
https://www.sciencedirect.com/science/article/abs/pii/S0304405X10001893

Of the 14 models we evaluate across seven empirical datasets, none is consistently better than the 1/ N rule in terms of Sharpe ratio, certainty-equivalent return, or turnover, which indicates that, out of sample, the gain from optimal diversification is more than offset by estimation error. https://academic.oup.com/rfs/article-abstract/22/5/1915/1592901?login=false

This even refers to the book Rationality for Mortals: How People Cope with Uncertainty, stating that Markowitz, the developer of Modern Portfolio Theory, would have used this rule himself: Heuristics and Robustness in Asset Allocation: The 1/N Rule, “Hard” Constraints and Fractional Kelly Strategies | macroresilience

It would require an expert on the topic and months of time to summarize these formulas and wisdoms. However, by browsing the sources, I get the impression that this simple strategy can be surprisingly close to optimal: for example, 80 stocks at €5000 each, and a stock is sold if Inderes gives a Reduce recommendation, and a stock with an Increase recommendation that is not yet in the portfolio is bought in its place.

6 Likes

Wow! Thanks for the analysis :folded_hands:

If there’s any data you’d otherwise have to extract from reports, feel free to contact us and we can see if that data can be easily found in the database as a single package. We’ve already provided historical data for some theses and master’s theses.

77 Likes

I was just about to ask if the recommendation data was available, @vuh? The data wasn’t visible on GitHub.

1 Like