Monthly Archives: April 2017

How I use Google Sheets to track my portfolio

Regular readers of my blog have probably noticed that I use Google Sheets for almost everything. I use it to track the live net asset values of various companies, I built my valuation models in Google Sheets and everything is tied together in a master portfolio sheet (some if its functionality you can glimpse from my performance review posts) . A few years ago I wrote a short tutorial that explained how you can add realtime price information in Google Sheets for stocks that aren’t support by the standaard =GoogleFinance() function.

What I’ll be focusing on today is how you can pull data from multiple documents to create one sheet with a nice overview of everything. To make this easy it’s smart to standardize your documents a bit. What I do is that when I value a company there is always a sheet called “Thesis” that has a few standardized items at fixes positions, like this:

The price target links to a valuation model in a different sheet (but in the same document), the price (in this case) comes from the =GoogleFinance() function and the last update cell is useful to keep track if I have updated my valuation recently. As you can see here I should probably take a little bit of time soon to update my Pardee Resources valuation. If you make it a habit of doing this for everything your research you can make a nice portfolio sheet that tracks realtime how much upside every position has remaining. Part of my portfolio sheet looks like this:


For obvious reasons I have hidden the number of shares I own, and the value of every position, but you can see how I have an price target for every position that is updated automatically based on the latest price. To pull data from a different document in the sheet we can use the =ImportRange() command. It requires two arguments, one is the url of the sheet where you want to pull the data from, and the second one is the reference to the cell you want to pull the data from. So it would look something like this:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/blabla/edit#gid=123456789","thesis!C15")

After entering this function in a cell you initially get an error message. Hover with the mouse cursor above the error message, and you will see that a small pop-up that asks if you want to give your sheet access to the other sheet. Do this, and the data will appear :).

Combined with the option to get realtime prices (as discussed in my old tutorial) you have an incredible toolset to make a fancy spreadsheet.  Not only will this give a quick overview of which positions are perhaps becoming more or less attractive, it’s also easy to build a watchlist like this (I have done this as well). Everything that you researched, but didn’t buy can be put in that list together with positions that you have sold in the past.

One limitation to keep in mind is that Google isn’t happy if one sheet requires to much calls to outside sources, and by making one sheet dependent on tons of other sheets the number of calls can explode quickly. So you will have to try to not invoke to many =ImportHTML() and =ImportXML() functions in all the combined sheets in order not to break things.

Disclosure

Author is long the stuff in the sheet

Updated FFP spreadsheet based on 2016 numbers

Yesterday FFP released their 2016 annual report (French) which prompted me to update my spreadsheet that calculates the live NAV of the holding company. Since I started my position in FFP in 2013 the discount has shrunk a little bit, but has remain fairly constant so far. I estimate it to be 40.4%, just a handful of percentage points lower than the 46.5% discount it was trading at three/four years ago. Because of that I’m happy to continue holding my position. If you want to access the spreadsheet yourself, I have shared it here.

Disclosure

Author is long FFP

Conduril reports 2016 results

One of the annual reports I anticipated most was the Conduril one for 2016, and that it finally arrived yesterday. The results are a bit of a mixed story, but offer some basis to be cautiously optimistic. Last year the company saw revenues drop with more than 25%, but remained profitable with €29.1M in EBITDA (down 18.0%) and €4.2M in net income (down 31.1%). Next year is probably going to be better though since the backlog is up to €385 million from €340 million last year. As long as Conduril remains profitable I’m happy, since at this point in time the most important part of the investment thesis is the large discount of 57% to net current asset value (I’m including non-current financial assets in this number as well).

On the balance side of the equation it’s nice to see that a net debt position of €24.6 million was turned in a net cash position of €36.9 million. This number nets the debt at Conduril with assets held for trading (Angolan government bonds) and other financial assets (guaranteed by the Portuguese state), so it’s not yet true cash. This is a bit disappointing since in the latest interim report the €83 million receivable with a guarantee of the Portuguese state was already on the balance sheet, and I expected that it would have been settled for cash by now. Instead the promise that it will be settled soon is the same language as six months ago. Note 18.4:

As of December 31, 2016, this caption falls under the “Convention on the Exportation of Equipment and Services Portuguese Origin, for the Republic of Angola “that benefits from the Portuguese State Guarantee. It will be settled by a Financial institution in the national territory in the short term

This was translated by Google, so it might miss some meaning. While we apparently have to wait a bit longer to get cold hard cash, I’m happy that Conduril has shifted some of its credit exposure from Angola to Portugal during the year. Given the large discount between the current market cap, and its net current asset value I think Conduril remains a very attractive idea. Especially considering that it remains profitable in this challenging environment.

Portugal | Subconcessão do Baixo Alentejo

Disclosure

Author is long Conduril

Ming Fai publishes 2016 results

Last year was not an uneventful year for Ming Fai. The company sold its investment property and subsequently attracted some attention from David Webb, an activist investor who pressured the company to pay out the proceeds of the sale as a large dividend. Ming Fai listened just a little bit, and paid a special dividend of HK$0.20/share during the year in addition to its regular dividend payments. While this was a nice development the company continues to hold a net cash balance of HK$0.68/share while shares trade at HK$1.06.

The results of Ming Fai itself during the year were not spectacular. The main amenity segment continued to perform well with revenue increasing 0.25% while earnings before tax increased by 16.1%. Unfortunately the solid performance of the main business continues to be obscured by the loss making retail segment that saw losses grow from HK$27.1 million to HK$37.5 million (a part of these losses are shared with outside minority shareholders). While this is not a great result, I think Ming Fai continues to do the right things to address the problem. The number of stores they operate dropped once again, from 543 to 387, and the company is also cutting overhead and other expenses in the retail segment.

While Ming Fai is cheap no matter how you slice it, my thesis hings for a part on the company being rational and not keeping a loss making segment around forever. They either turn it around, or liquidate it completely. If you ignore the loss making retail segment for a second, and only value the amenity business and the excess cash you can see how much upside potential there still is:

Disclosure

Author is long Ming Fai