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
