This is post three of my Crunching Numbers in APL series. I’m
returning to my database of the top twenty stocks in the
Standard and Poor’s 500.
sp20[;1 2 3 4 7] Symbol Name Price Div $ FCF WMT Walmart 142.09 2.28 ¯10929 AMZN Amazon 95.82 0 ¯1112 AAPL Apple 149.4 0.92 ¯2343 CVS CVS Health 86.04 2.42 2832 UNH UnitedHealth Group 488.17 6.6 8651 XOM Exxon Mobil 110.74 3.64 28024 BRK-B Berkshire Hathaway 300.69 0 0 GOOG Alphabet 91.07 0 0 MCK McKesson 360.33 2.16 0 ABC AmerisourceBergen 159.5 1.94 0 COST Costco Wholesale 493.14 3.6 0 CI Cigna 295.65 4.92 0 T AT&T 19.25 1.11 0 MSFT Microsoft 254.77 2.72 0 CAH Cardinal Health 77.7 1.98 0 CVX Chevron 161.93 6.04 0 HD Home Depot 299.31 8.36 0 WBA Walgreens Boots Alliance 36.21 1.92 0 MPC Marathon Petroleum 125.52 3 0 ELV Elevance Health 486.12 5.92 0 KR Kroger 43.91 1.04 0 F Ford Motor 12.07 0.6 0 VZ Verizon Communications 38.53 2.61 0
You’ll note I’ve added a column with some data. FCF is Free Cash
Flow. I’m using my own definition. I hope that it will act as
sieve to highlight stocks which deserve a closer look.
First I’d like to discuss databases. Chapter 11 of Crunching
Numbers in APL applies the principles of database design to APL
variables. We’re not to that point. We’re still in discovery
mode.
I set up a workspace for my research into companies that do not
pay dividends it includes the table sp20 shown above. As I’ve
done calculations I’ve tried to save those calculations and the
workspace as I played with Free Cash Flow. Here is where I
stand:
)vars aapl_free_cash amzn_free_cash cvs_free_cash date∆US date∆cal date∆dates date∆delim date∆time∆M date∆time∆delim date∆time∆utce date∆tz final_vym free_cash g_data g_return goog goog_covar goog_free_cash goog_hist goog_variance s_data s_return sp20 sp500 sp500_df tmp unh_free_cash v_divs v_lillian vd_lillian voo vym vym2 vym_div vym_hist wmt_free_cash xom_free_cash
All the variables that begin date∆
belong the to
the date workspace in library 3 DALY and I’ll ignore them.
The variables sp500...
, goog...
,
and vym...
were used for last week’s post on zero
dividend. The variables that end free_cash
are for
today’s column.
APL’s workspace concept allows us this luxury. As I explore a
subject I can save my work in variables. They just exist and
don’t get in the way once I move on to something else.
For this project I created the variable free_cash and the
function calc_free_cash.
free_cash Cash from operations 0 Interest 0 ------- Adj Cash from ops 0 Capital exp 0 Dividends paid 0 Debt serv 0 Stock repurchases 0 ------ Free cash 0 ======= Debt service Interest 0 Debt repayment 0 other 0 ------- 0 ∇rs←calc_free_cash fc [001] ⍝ Function calculate free cash flow from a free_cash [002] ⍝ workpaper and returns a free_cash workpaper with [003] ⍝ those results. [004] rs←fc [005] rs[4;2]←+/rs[1 2;2] [006] rs[13;2]←-rs[2;2] [007] rs[7;2]←rs[17;2]←+/rs[13 14 15;2] [008] rs[10;2]←+/rs[4 5 6 7 8;2]
My idea is a measure of the cash available from the operations
that can be used to grow the company. Today’s Wall Street
Journal has an article on evaluating companies that pay
dividends. It recommends ignoring the amount of the dividend and
instead focusing on cash flow.
The financial statements have five basic statements:
- Balance Sheet
- Income Statement
- Comprehensive Income
- Stockholder’s Equity
- Cash flow
My free cash flow calculation pulls amounts from that last
statement, Cash flow. Its worth looking the statement as whole.
First it reconciles net income to cash from operations. That
reconciliation includes items used to calculate net income which
do not use or provide cash, depreciation for example. The
reconciliation also includes changes in working capital that
require or provide cash.
Second it shows investment activity. I get my capital
expenditures from this section. I know that the company must
replace plant, property and equipment as it wears out. I use
this line as an estimate for future operations.
Third it shows financing activity, debt and equity
transactions. Here I find the amount of dividends paid and stock
repurchased. I calculate debt service as interest (from the
income statement) plus debt repayment for this section of the
cash flow statement.
The decision to finance the company through debt requires
consideration of the payment of interest and the retirement of
principle. I recognize this by adding interest to cash from
operations, and including it in debt service.
Many things may be said about this approach. It is
too simple. A thorough reading the financial statements and
Management’s Discussion and Analysis of Financial Condition and
Results of Operations might yield better estimates. In fact
those estimates my be buried in the 10-K somewhere.
This method is quick and dirty but I like it.
MCK, McKesson, is next on my list. I found its 10-K for the year
ended March 31, 2022 at www.sec.gov and its statement of cash
flow on page 74. Here is how I calculate free cash flow.
mck_free_cash←free_cash mck_free_cash[1;2]←4434 ⍝ This from the bottom of the cash flow statement mck_free_cash[2;2]←186 ⍝ The total of property, plant and equipment and software mck_free_cash[5;2]←¯388 + ¯147 mck_free_cash[6;2]←¯277 ⍝ Repayment of long-term debt and debt extinguishments mck_free_cash[12;2]←¯1648 + ¯184 mck_free_cash[8;2]←¯3516 ⍞←mck_free_cash←calc_free_cash mck_free_cash Cash from operations 4434 Interest 186 ------- Adj Cash from ops 4620 Capital exp ¯535 Dividends paid ¯277 Debt serv ¯2018 Stock repurchases ¯3516 ------ Free cash ¯1726 ======= Debt service ¯1832 Interest ¯186 Debt repayment 0 other 0 ------- ¯2018
Now I’ll update my database and cross McKesson of my list.
sp20[10;] MCK McKesson 360.33 2.16 21.79 263966 0 sp20[10;7]←¯1726 sp20[;1 2 3 4 7] Symbol Name Price Div $ FCF WMT Walmart 142.09 2.28 ¯10929 AMZN Amazon 95.82 0 ¯1112 AAPL Apple 149.4 0.92 ¯2343 CVS CVS Health 86.04 2.42 2832 UNH UnitedHealth Group 488.17 6.6 8651 XOM Exxon Mobil 110.74 3.64 28024 BRK-B Berkshire Hathaway 300.69 0 0 GOOG Alphabet 91.07 0 0 MCK McKesson 360.33 2.16 ¯1726 ABC AmerisourceBergen 159.5 1.94 0 COST Costco Wholesale 493.14 3.6 0 CI Cigna 295.65 4.92 0 T AT&T 19.25 1.11 0 MSFT Microsoft 254.77 2.72 0 CAH Cardinal Health 77.7 1.98 0 CVX Chevron 161.93 6.04 0 HD Home Depot 299.31 8.36 0 WBA Walgreens Boots Alliance 36.21 1.92 0 MPC Marathon Petroleum 125.52 3 0 ELV Elevance Health 486.12 5.92 0 KR Kroger 43.91 1.04 0 F Ford Motor 12.07 0.6 0 VZ Verizon Communications 38.53 2.61 0 JPM JPMorgan Chase 139.67 4 0 GM General Motors 39.25 0.36 0