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.


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


function getData(){
	if [ -n "$TICKER" ]
		#==================== Get Data From Yahoo! Finance ========================
		# Download key statistics from web
		wget$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" ]
			#==================== Parse Data ==========================================
			# Parse P/E
			PE=$(grep -Po 'Trailing P/E.*' out.txt | sed "s/Trailing P\/E (ttm, intraday)://g")

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

				# If null $LEVERED
				if [[ -z "$LEVERED" ]]
					# 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" ]
						LEVERED=$(echo "$LEVERED*1000000000" | bc -l)
					LEVERED=$(echo "$LEVERED*1000000" | bc -l)

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

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

			#==================== 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 ""
			echo "Ticker \""$TICKER"\" not found"
                        echo ""

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

if [ -z "$1" ]
	echo "usage: getLFCF [ticker symbol]"
	echo "Separate multiple tickers with a space."
	echo ""
	for var in "$@"
		# 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" ]

Related Item(s):