Posted by CANbike on Mon, 5 Aug 2013

[Finance] Price * Shares Outstanding / Levered Free Cash Flow

The PS/LFCF ratio is a simple measure of a company’s stock share price per owner levered free cash flow. In other words, an approximate measure of share price per owner’s earnings.

PS/LFCF Ratio

Price * Shares Outstanding / Levered Free Cash Flow

PS/LFCF Ratio Derived

The amount of cash that is left over for stockholders after interest on company debt has been paid out.
Free Cash Flow = Cash Flows from Operations - Capital Expenditure
Levered Free Cash Flow = Free Cash Flow - Mandatory Repayment of Debt (interest, principal repayment)

  • The Levered Free Cash Flow per Share is then defined as
Levered Free Cash Flow / Shares Outstanding
  • Dividing the share Price by Levered Free Cash Flow per Share results in the PS/LFCF Ratio
Price / (Levered Free Cash Flow / Shares Outstanding) => Price * Shares Outstanding / Levered Free Cash Flow

Why not use the P/E ratio instead?

There are two reasons. First, earnings can easily be tweaked or manipulated through accounting practices. On the other hand, it is very hard to manipulate cash flow. Second, Levered Free Cash Flow is an important metric of the amount cash a company has after paying all the bills. That cash can then be used for research, investments, and dividends.

What is a Good PS/LFCF Ratio?

Just like the P/E ratio, the answer depends on the industry and the investor. As a general rule of thumb for a conservative investor, 0-15 is good, while 30 and above is too high. A negative number means a loss of cash.

Can it Detect Value Traps?

Nope, there is no magic formula. It is one of many tools for an investor to use. Due dillegence is still required and other aspects of a company need to be analyzed before investing.

Is this Warren Buffet’s Owner Earnings?

Nope. It’s a poor mans version of it.

Warren Buffet has access or pays for access to more detailed and better data to calculate Owner Earnings. Levered Free Cash Flow is defined differently and at best a crude approximation of it, but it is available for free.

Where do I Get the PS/LFCF Ratio Data for Free?

It has to be calculated. Thankfully Price, Shares Outstanding, and Levered Free Cash Flow (TTM) are available for free on Yahoo! Finance. Data is provided by Capital IQ.

  1. Go to Yahoo! Finance
  2. Enter a company’s ticker symbol
  3. Click on Key Statistics

Surely There is a Faster Way to Get PS/LFCF Data?

There is, sort of. Linux users can use the following shell script getLFCF written by CANbike. Data is scraped from Yahoo! Finance.

  • The script "getLFCF" is provided as is for informational purposes only. It is not responsible for the accuracy of the data.

Usage is simple. Enter a ticker symbol, or multiple ticker symbols separated by a space.

usage: getLFCF [ticker symbol]
Separate multiple tickers with a space.

GetLFCF-01-thumb.pngGetLFCF-02-thumb.pngGetLFCF-03-thumb.pngPrice-Shares Outstanding-Over-Levered Free Cash Flow-thumb.jpg

Shell Script: getLFCF

#!/bin/sh

function getData(){
	if [ -n "$TICKER" ]
	then
		#==================== Get Data From Yahoo! Finance ========================
		#
		# Download key statistics from web
		wget http://finance.yahoo.com/q/ks?s=$TICKER+Key+Statistics -O out.txt -nv &> /dev/null

		# Add newlines
		sed -i "s/<\/tr\>/\\`echo -e '\n\r'`/g" out.txt
		sed -i "s/<\/span\>/\\`echo -e '\n\r'`/g" out.txt

		# Clean key statistics
		sed -i "s/><tr><td class=\"yfnc_tablehead1\" width=\"74%\">//g" out.txt
		sed -i "s/<\/td><td class=\"yfnc_tabledata1\">//g" out.txt
		sed -i "s/<\/td>//g" out.txt
		sed -i "s/<font size=\"-1\"><sup>[0-9]<\/sup><\/font>//g" out.txt
		sed -i "s/.*yfs_l84.*\">/Quote:/g" out.txt

		# Delete non key statistics
		sed -i 's/^[ \t].*//' out.txt
		sed -i "s/>.*//g" out.txt
		sed -i "s/<.*//g" out.txt
		sed -i "s/.*}.*//g" out.txt
		sed -i "s/.*{.*//g" out.txt
		sed -i "s/.*\*.*//g" out.txt

		# Delete empty lines
		sed -i "s/\r//g" out.txt
		sed -i '/^$/d' out.txt
		#--------------------------------------------------------------------------

		#==================== Parse Quote ==========================================
		#
		# Parse share price
		QUOTE=$(grep -Po 'Quote.*' out.txt | sed "s/Quote://g")

		#==================== Check Quote ==========================================
		#
		# Check if quote exists
		if [ -n "$QUOTE" ]
		then
			#==================== Parse Data ==========================================
			#
			# Parse P/E
			PE=$(grep -Po 'Trailing P/E.*' out.txt | sed "s/Trailing P\/E (ttm, intraday)://g")

			if [ -n "$PE" ]
			then
				# Parse levered free cash flow, millions?
				LEVERED=$(grep -o -P '(?<=Levered Free Cash Flow \(ttm\):).*(?=M)' out.txt)

				# If null $LEVERED
				if [[ -z "$LEVERED" ]]
				then
					# Parse levered free cash flow, billions?
					LEVERED=$(grep -o -P '(?<=Levered Free Cash Flow \(ttm\):).*(?=B)' out.txt)

					# Check $LEVERED not null, convert.
					if [ -n "$LEVERED" ]
					then
						LEVERED=$(echo "$LEVERED*1000000000" | bc -l)
					else
						LEVERED="N/A"
					fi
				else
					LEVERED=$(echo "$LEVERED*1000000" | bc -l)
				fi

				# Parse shares outstanding
				SHARESO=$(grep -o -P '(?<=Shares Outstanding:).*(?=M)' out.txt)
				if [[ -z "$SHARESO" ]]
				then
					SHARESO=$(grep -o -P '(?<=Shares Outstanding:).*(?=B)' out.txt)
					SHARESO=$(echo "$SHARESO*1000000000" | bc -l)
				else
					SHARESO=$(echo "$SHARESO*1000000" | bc -l)
				fi
			else
				PE="N/A"
				LEVERED="N/A"
				SHARESO="N/A"
			fi
			#--------------------------------------------------------------------------

			#==================== Calculate PLT =======================================
			#
			# Calculate: price/(levered free cash flow/shares outstanding)
			if [ "$LEVERED" != "N/A" ]
			then		
				PLT=$(echo "scale=4;$QUOTE/($LEVERED/$SHARESO)" | bc -l)
			else
				PLT="Not Available"
			fi			
			#--------------------------------------------------------------------------

			#==================== Output Data =========================================
			#
			# Output results to screen
			echo "Ticker: "$TICKER
			echo "Quote: $"$QUOTE" | LFCF: $"$LEVERED" | Shares Outstanding: "$SHARESO
			echo "PS/LFCF: "$PLT
			echo "P/E: "$PE
			echo ""
                        #--------------------------------------------------------------------------
		else
			echo "Ticker \""$TICKER"\" not found"
                        echo ""
		fi	

		# Remove temp files
		rm out.txt
		#--------------------------------------------------------------------------	
	else
		# Missing argument. Output instructions.
		echo "usage: getLFCF [ticker symbol]"
                echo ""
	fi
}

if [ -z "$1" ]
then
	echo
	echo "usage: getLFCF [ticker symbol]"
	echo "Separate multiple tickers with a space."
	echo ""
else
	for var in "$@"
	do
		# Convert argument to uppercase
		TICKER=$(echo $var | tr "[a-z]" "[A-Z]")
		# Remove comma
		TICKER=$(echo $TICKER | sed -e 's/,//g')

		# Call Function
		if [ -n "$TICKER" ]
		then
			getData
		fi
	done
fi

Related Item(s):