Tag Archives: FFP.PA

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

FFP announces 2014 results, reinstates dividend

FFP, the French holding company that owns a large stake in Peugeot, announced their results for 2014 today. Since the portfolio contains mostly publicly traded securities the increase in NAV wasn’t a surprise, but the fact that the company decided to start paying a dividend was:

With the company returning to profit after two years of losses, the Board of Directors has decided to propose a dividend of €2.00 per share to shareholders in the General Meeting, of which €1.20 of ordinary dividend and €0.80 of special dividend.

The €2.00 dividend represent a 3% yield. It’s not a whole lot, but it is nice since it is a tangible way to get fair value out of a vehicle that is trading at a sizable discount. I have updated my spreadsheet based on the 2014 results and the sale of call options on Peugeot earlier this year by the holding company. The discount is now at 44%, just a few percentage points lower than when I initiated my position at the end of 2013:

NAV FFP based on 2014 results

Disclosure

Author is long FFP

Short Google Drive tutorial based on the FFP spreadsheet

FFP released their semi-annual results last Friday which prompted me to update my Google Drive spreadsheet that tracks the NAV of the company in real-time. The spreadsheet is publicly accessible using this link and currently looks as follows:

FFP NAV spreadsheet

In the past months NAV/share has been going up while the discount has been getting a bit smaller, so that’s obviously good news for me, but that is not what I want to talk about. What I want to focus on is on how you can create a spreadsheet like this with real time prices, and specifically how to incorporate price data when the standard =GoogleFinance() function is unavailable. This is a recurring issue when you use Google Drive because foreign exchanges are often not supported. The FFP spreadsheet ran into this problem for the first time because FFP now owns Peugeot warrants and it has made an investment in a Mauritius listed stock.

The easy way

Step one in adding a quote that is not supported by Google Drive is finding a webpage that does have a quote. Bloomberg.com or ft.com are often a good source for foreign stocks. With the =ImportHTML() function it easy to grab data from a webpage. It is limited since it can only get stuff that is presented in a table or a list on the webpage, but luckily Bloomberg does have some relevant stuff in a table. To grab for example the latest price for Fujimak (A Japanese company I own) you can use the following command:

=ImportHTML("http://www.bloomberg.com/quote/5965:JP", "table", 1)

The first argument specifies on what web page the data can be found, the second argument specifies if you want to grab it from a list or a table and the last argument specifies the number of the table or list (there are often a couple of different tables on one page). Because Bloomberg doesn’t have a quote for the Peugeot warrants nor for the CIEL group on its website we have to take a slightly more complicated path.

The hard way: CIEL Group

If you want to be able to access everything you can use the =ImportXML() function. It takes two arguments: an URL and a XPath query. The XPath language can be used to select nodes in a HTML document (plenty of tutorials available online), but we don’t need a lot of fancy stuff to find a quote. You could use "\\div" as a XPath and you would basically get the whole HTML page dumped in your spreadsheet. This isn’t a very neat solution because there is a high risk that something will change in the page and that the cell that contains the latest price is suddenly moved: breaking the spreadsheet. The better solution is to specifically search for the HTML element that contains the price.

The latest price of the CIEL group can be found here on the site of the Mauritius stock exchange. Right-click in Google Chrome on the price and select “inspect element” and you will see a bunch of HTML code with one highlighted line, a div with the id “general_price_details”:

Finding the div id

We can now select this specific element with the following XPath query:

=ImportXML(B19, "//div[@id='general_price_details']")

Getting the warrant price

The price for the Peugeot warrants can be found on the site of the Euronext stock exchange. Here things are made even a bit more complex because the website is designed in such a way that the price is loaded asynchronously with the main page.  We can once again use the Google Chrome development tools to figure out where the data is coming from.

Right-click on any page element and select “inspect element”. Select the “Network” tab and refresh the page by pressing F5. You will see a list of all kinds of files that are loaded by your browser when the page is rendered. Most of the files are small images, scripts and style sheets, but there is also a small HTML page that contains the price data. We need to copy the URL of this page to Google Drive for our =ImportXML() function:

Finding the page with the Peugeot warrants  price

We can now import the price in Google Drive using this command (B3 refers to the URL):

=ImportXML(B3, "//div[@class='quote with-label']")

There remains one tricky issue that needs to be resolved. Google tries to automatically convert the price data to a number, but the Euronext website uses a comma as a decimal mark while Google drive expects a point. When the price is for example €1,641 Google drive translates this to €1641 (and it is easily fixed by a division by one thousand). If the price is €1,64 Drive doesn’t recognize a number, and we need to remove the €-sign and convert the comma to a point our self. This can be done with the following command:

=VALUE(RIGHT(REGEXREPLACE(D3, ",", "."), 5))

Hopefully this was educational!

Disclosure

Author is long FFP

Updated the FFP spreadsheet

I updated the spreadsheet that tracks FFP’s NAV discount to include the results of the latest annual report and to reflect the partial sale of the Zodiac stake in the beginning of this year. The spreadsheet updates automatically all share prices and the current discount, and is publicly accessible on Google Drive using this link. As is visible FFP’s NAV discount is basically unchanged at 47% since I initiated my position a half year ago:

FFP NAV

Disclosure

Author is long FFP.PA

Some thoughts on holdco and CEF discounts

My recent article on FFP received a lot of attention, but most comments were along the following lines: “sure there is a 50% discount, but what if the discounts stays at this level?”. I would say: that’s exactly what’s value investing is about! You buy cheap, and you have to have some faith that at some point in time the market will recognize how much its truly worth. This is what Benjamin Graham had to say about the subject in 1955 to a Senate commission (the full transcript is available online):

The Chairman: … One other question and I will desist. When you find a special situation and you decide, just for illustration, that you can buy for 10 and it is worth 30, and you take a position, and then you cannot realize it until a lot of other people decide it is worth 30, how is that process brought about – by advertising, or what happens?

Mr. Graham: That is one of the mysteries of our business, and it is a mystery to me as well as to everybody else. We know from experience that eventually the market catches up with value. It realizes it in one way or another.

I’m not saying that the discount will completely be eliminated in time, because there are valid reasons why a holding company or a closed-end fund should trade at a discount. These are overhead costs, tax inefficiencies and potential value destruction. In general overhead costs for holding companies are low, while closed-end funds incur higher costs because there is an ‘active investment manager’ that gets a fee based on AUM. Holding companies on the other hand are often less tax efficient. Dividends cannot always be passed through from the operating companies to the holding company in a tax free manner. In most jurisdictions this is not a major issue: It is usually possible to pass through dividends in a tax free manner if the holding company has a sufficiently big stake in the operating company.

The last important ingredient that should determine the discount is whether or not the manager is adding value, subtracting value, or is value neutral. I think the best assumption is usually the last one. Most CEF’s invest for example in large cap companies: they don’t underperform the market before trading costs in the long-term, but they also don’t deliver outperformance. If you already account for trading costs under the overhead the manager probably doesn’t add further negative performance. Holding companies are very often passive vehicles, and since they are passive there is neither value destruction nor creation. Rella is a nice example of a holding company that is actually creating value, simply by buying back undervalued shares.

Discount fluctuations

Both CEF discounts and holdco discounts usually vary over time. Sometimes they are small, and sometimes they are big. My thesis is that these fluctuations can be partly explained by the perceived attractiveness of the underlying assets, general investor sentiment and the fact that both holdco’s and CEF’s have a fixed supply of shares outstanding.

I wrote for example about mortgage closed-end funds two months ago. Rising interest rates resulted in declining prices for the underlying assets and at the same time the number of investors willing to invest in CEF with these type of assets also declined. As a result the discounts to NAV increased at the same time as NAV’s declined. If the market would be efficient this would be hard to explain since the lower underlying asset prices should already have reflected the bad news.

The reason that this doesn’t happen is that there is no (easy) arbitrage between share price and NAV. So when investors want to exit anyway only one thing can happen: the discount increases. Similar mechanics are at work behind the holdco discounts, except that there is even less of a possibility of arbitrage between share price and underlying value. When a closed-end fund starts trading at a huge discount activist investors can usually acquire a big enough stake to push for liquidation while holdco’s are often tightly controlled by their founders. They might want to take advantage of the discount by buying back shares at some point, but it’s also possible that you simply have to wait for sentiment to change.

Possible returns

I have no idea when investor sentiment is going to change for FFP, but I do think it will probably change at some point in time. Between 2007 and today the discount varied between 30 and 50%, and in the next five or ten years I would be surprised if it wouldn’t move back to the bottom of this range at some point in time. And you shouldn’t underestimate the amount of alpha you can create when this does happen.

If it would take 10 full years for the discount to shrink from 50% to 30% you still generate 2.9% alpha annualized (this is after accounting for 0.5% in overhead costs). If it takes ‘just’ 5 years you are looking at 6.4% annualized alpha. I don’t know about you, but that’s certainly attractive enough for me!

Disclosure

Long FFP.PA and RELLA.CO