ACCT 101, Session 9: Financial Statement Analysis

Dr. Richard M. Crowley

https://rmc.link/

Front matter

Learning objectives

  1. Learn about financial statement analysis
  2. Calculate and interpret financial ratios

Financial statement analysis

What matters?

  1. The business environment
    • Economy health
    • Other countries (particularly for multinational firms)
    • Industry demand
    • Resource scarcity or supplier concentration
    • Consumer concentration
  2. Historical financials
    • Financial statements and notes
    • Competitors statements

What matters?

  1. Historical non-financials
    • Governance
    • Risk disclosures
    • Audit report
    • Shareholders
    • supplier relationships

Predicting firm value

  1. Trend analysis (a.k.a. Horizontal analysis)
    • Compare dollar and percent changes across years
  2. Common size financial statements (a.k.a. Vertical analysis)
    • Compare financials across years or firms
    • A subset of ratio analysis
  3. Ratio analysis
  4. Analytics

Only ratio analysis is on the final – we’ll cover the others briefly.

Trend analysis

What is it?

  • Comparing different years or quarters of data to see the trend in measures.
  • Examples:
    • Revenue grew by 3% this year
    • Net income grew by 4% this quarter
    • Quarterly revenue decreased 2% year over year

Examples

But the 13 per cent growth rate for ESG and climate tools outstripped MSCI’s overall organic increase in operating revenues in the second quarter, which was 10 per cent.FT

Singapore-based superapp Grab announced Thursday that its revenue grew 17 percent year-over-year to $664 million in the second quarter of 2024, driven by revenue growth across all segments.TN Global

How to do it

  1. Get 2 financial statements from the same company (typically the income statement)
  2. Find the percentage change from the old figures to the new figures

Common-size financial statements

What is it?

  • Standardizing figures in a financial statement by dividing by another figure.
  • Allows for comparing financial statements across companies
  • Ex.:
    • Divide an income statement by revenue
      • \(\frac{Gross\ profit}{Revenue}=Gross\ Margin\)
      • \(\frac{Net\ income}{Revenue}=Profit\ Margin\)
    • Divide financial statements by total assets

Examples

Tesla on July 23 reported its lowest profit margin in more than five years and missed Wall Street earnings targets in the second quarter, as the electric vehicle (EV) maker cut prices to revive demand while it increased spending on artificial intelligence (AI) projects.Straits Times

Nike Inc (NYSE:NKE) reported gross margin expansion of 120 basis points to 45.4%, driven by lower product costs and strategic pricing actions.Yahoo! Finance

How to do it

  1. Get a financial statement
  2. Divide every number by the same amount (sales, total assets, etc.) to get the percent (of sales, of assets, etc.)

We can compare accross companies or years

Balance sheet ratios

What is ratio analysis?

  • Using various ratios of numbers from financial statements to better understand companies

All examples use the following data:

Caveats

  1. There are a few differences between the ratios in these slides and in the book. These differences are due to simplifications I have made – you can use these ratios on the final instead of the book’s ratios without penalty.
  2. Some ratios have many definitions. If you look online, you may find other definitions for some of these ratios. Don’t use those on the final.

Inventory turnover

\[ \frac{COGS}{\frac{1}{2}\left(Inventory_T + Inventory_{T-1}\right)} \]

  • How many times per year a company sells its inventory on hand
  • A similar measure is Inventory resident period
    • A.k.a. Number of days’ sales in inventory
    • Calculated as \(\frac{365}{Inventory\ turnover}\)
    • The number of days it take to sell the company’s inventory

Microsoft’s 2017 inv. turnover: \(\frac{34,261}{\frac{1}{2}\left(2,181 + 2,251\right)} = 15.46\)

Microsoft’s 2017 inv. period: \(\frac{365}{15.46}=23.6\ days\)

Accounts receivable turnover

\[ \frac{Revenue}{\frac{1}{2}\left(A/R_T + A/R_{T-1}\right)} \]

  • How many times per year a company collects its A/R on hand
  • A similar measure is Receivable collection period
    • A.k.a. Number of days’ sales in receivables
    • Calculated as \(\frac{365}{Accounts\ receivable\ turnover}\)
    • The number of days it take to collect the company’s A/R

Microsoft’s 2017 A/R turnover: \(\frac{89,950}{\frac{1}{2}\left(19,792 + 18,277\right)} = 4.73\)

Microsoft’s 2017 A/R period: \(\frac{365}{4.73}=77.2\ days\)

Payable turnover

\[ \frac{COGS}{\frac{1}{2}\left(A/P_T + A/P_{T-1}\right)} \]

  • How many times per year a company pays its A/P it owes
  • A similar measure is Payable outstanding period
    • Calculated as \(\frac{365}{Payable\ turnover}\)
    • The number of days it take to pay the company’s A/P

Microsoft’s 2017 A/P turnover: \(\frac{34,261}{\frac{1}{2}\left(7,390 + 6,898\right)} = 4.80\)

Microsoft’s 2017 A/P period: \(\frac{365}{4.80}=76.1\ days\)

Cash conversion cycle

\[ \begin{equation*} \frac{365}{Inventory\ turnover} + \frac{365}{A/R\ turnover} - \frac{365}{A/P\ turnover}\\ \Updownarrow\\ \scriptstyle Receivable\ collection\ period + Inventory\ resident\ period - Payable\ outstanding\ period \end{equation*} \]

  • Measures how long it takes from paying payables to receiving cash for a sale
  • Can calculate from turnover ratios or periods

Microsoft’s 2017 cash conversion cycle: \(23.6 + 77.2 - 76.1 = 24.7\ days\)

Asset turnover

\[ \text{Asset turnover} = \frac{Net~revenue}{\frac{1}{2}\left(Assets_T + Assets_{T-1}\right)} \]

  • Measures sales volume in relation to asset base

Microsoft’s 2017 asset turnover: \(\frac{89,950}{\frac{1}{2}\left(241,086+193,468)\right)}=41.4\%\)

Current ratio

\[ \frac{Current\ assets}{Current\ liabilities} \]

  • Measures a company’s ability to pay current liabilities
  • This should usually be \(>2\)

Microsoft’s 2017 current ratio: \(\frac{159,851}{64,527}=2.48\)

Quick ratio

\[ \frac{Cash + Short\ term\ investments + A/R}{Current\ liabilities} \]

  • A.k.a. acid-test ratio
  • Measures a company’s ability to pay current liabilities
    • Only factors in liquid current assets
  • This should be \(>1\)

Microsoft’s 2017 quick ratio: \(\frac{7,663 + 125,318 + 19,792}{64,527}=2.37\)

Debt to equity ratio

\[ \frac{Total\ liabilities}{Total\ equity} \]

  • Measures a company’s leverage
    • Leverage = how much the company is financed by debt
  • Higher = more leverage = more debt financing

Microsoft’s 2017 debt to equity ratio: \(\frac{168,692}{72394}=2.33\)

Times-interest-earned ratio

\[ \frac{Income\ from\ operations}{Interest\ expense} \]

  • Measures a company’s ability to cover interest payments
  • Higher is better, \(<1\) should cause some worry

Microsoft’s 2017 times-interest-earned ratio: \(\frac{22,326}{2,222}=10.05\)

Practice

Calculate the following ratios for Microsoft in 2016

  • Payable outstanding period
  • Quick ratio
  • Debt to equity ratio
  • Times-interest-earned ratio

Extra info: Microsoft’s A/P in 2015 was $6,591M

Income statement ratios

Profit Margin

\[ \frac{Profit}{Revenue} \]

  • Gross profit margin tells you about the company’s selling margins
  • Net profit margin tells you about its overall profitability

Microsoft’s 2017 gross profit margin: \(\frac{55,689}{89,950}=61.9\%\)

Microsoft’s 2017 net profit margin: \(\frac{21,204}{89,950}=23.6\%\)

Return on assets (ROA)

\[ \frac{Net\ income}{\frac{1}{2}\left(Assets_T + Assets_{T-1}\right)} \]

  • Measures overall profitability based on the company’s size
  • Very common measure in practice
  • Higher is better

Microsoft’s 2017 ROA: \(\frac{21,204}{\frac{1}{2}\left(241,086+193,468)\right)}=9.76\%\)

Return on equity (ROE)

\[ \frac{Net\ income}{\frac{1}{2}\left(Equity_T + Equity_{T-1}\right)} \]

  • Measures overall profitability based on the company’s size
    • Stockholder focussed
  • Very common measure in practice
  • Higher is better

Microsoft’s 2017 ROE: \(\frac{21,204}{\frac{1}{2}\left(72,394+71,997)\right)}=29.4\%\)

Practice

Calculate the following ratios for Microsoft in 2016

  • Net profit margin
  • Return on assets (ROA)
  • Return on equity (ROE)

Extra info: Microsoft’s 2015 total assets was $176,223M and Microsoft’s 2015 total equity was $80,083M

Equity ratios

Earnings per share (EPS)

\[ \frac{Net\ income - Dividends\ on\ pref.\ shares}{\frac{1}{2}\left(\#Shares_T+\#Shares_{T-1}\right)} \]

  • Measures the amount of profit tied to each share of stock
  • Very common measure in practice
  • Assume shares in year \(T\) and \(T-1\) are the same if not stated
  • Very easily manipulated

Microsoft’s 2017 EPS: \(\frac{21,204 - 0}{\frac{1}{2}\left(7,708+7,808)\right)}=\$2.73/share\)

Price/earnings ratio (P/E ratio)

\[ \frac{Stock\ price}{EPS} \]

  • A measure of if a stock is overpriced
  • 6 to 8 is common, 20+ is common for tech firms
    • Higher = overpriced
    • Lower = underpriced
  • Very common measure in practice
  • Very easily manipulated, since EPS is easily manipulated

Microsoft’s 2017 P/E ratio: \(\frac{68.93}{2.73}=25.2\)

Practice

Calculate the following ratios for Microsoft in 2016

  • EPS
  • P/E Ratio

Extra info: Microsoft’s 2015 outstanding shares was 8,027M

Equations

Balance sheet ratio equations

\[ {\scriptsize \begin{align*} \text{Inventory turnover} &= \frac{COGS}{\frac{1}{2}\left(Inventory_T + Inventory_{T-1}\right)} \\ \text{A/R turnover} &= \frac{Revenue}{\frac{1}{2}\left(A/R_T + A/R_{T-1}\right)} \\ \text{A/P turnover} &= \frac{COGS}{\frac{1}{2}\left(A/P_T + A/P_{T-1}\right)}\\ \text{Cash conversion cyle} &= \frac{365}{Inv.\ turnover} + \frac{365}{A/R\ turnover} - \frac{365}{A/P\ turnover}\\ \text{Asset turnover} &= \frac{Net~revenue}{\frac{1}{2}\left(Assets_T + Assets_{T-1}\right)} \\ \text{Current ratio} &= Current\ assets / Current\ liabilities \\ \text{Quick ratio} &= \frac{Cash + Short\ term\ investments + A/R}{Current\ liabilities} \\ \text{Debt to equity ratio} &= Total\ liabilities / Total\ equity \\ \text{Times-interest-earned} &= \frac{Income\ from\ operations}{Interest\ expense} \end{align*}} \]

Income statement ratio equations

\[ \scriptsize \begin{align*} \text{Gross (profit) margin} &= \frac{Gross\ profit}{Revenue} \\ \text{Net profit margin} &= \frac{Net\ income}{Revenue} \\ \text{Return on assets (ROA)} &= \frac{Net\ income}{\frac{1}{2}\left(Assets_T + Assets_{T-1}\right)} \\ \text{Return on equity (ROE)} &= \frac{Net\ income}{\frac{1}{2}\left(Equity_T + Equity_{T-1}\right)} \end{align*} \\ \]

Equity ratio equations

\[ \scriptsize \begin{align*} \text{Earnings per share (EPS)} &= \frac{Net\ income - Dividends\ on\ pref.\ shares}{\frac{1}{2}\left(\#Shares_T+\#Shares_{T-1}\right)} \\ \text{Price/earnings ratio (P/E)} &= \frac{Stock\ price}{EPS} \end{align*} \]

Analytics

Background

This is a quick preview of a module called “Forecasting and Forensic Analytics,” part of the Analytics and Forensics majors in SOA

  • You don’t need to know this for this class, but the techniques covered here are becoming more and more important

Revenue prediction

Predicting ROA for tech companies using prior year data

summary(fit)

Call:
lm(formula = ROA ~ ROA_lag + Revenue_lag + Debt_lag + factor(gind), 
    data = df_tech)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.4421 -0.0238  0.0107  0.0467  0.4378 

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)         0.004095   0.031227   0.131  0.89569    
ROA_lag             0.469025   0.061576   7.617 6.91e-14 ***
Revenue_lag         0.030639   0.015260   2.008  0.04498 *  
Debt_lag            0.121253   0.040732   2.977  0.00299 ** 
factor(gind)451020 -0.092444   0.035630  -2.595  0.00964 ** 
factor(gind)451030 -0.035024   0.033293  -1.052  0.29310    
factor(gind)452010 -0.138055   0.034286  -4.027 6.16e-05 ***
factor(gind)452020 -0.077091   0.032478  -2.374  0.01784 *  
factor(gind)452030 -0.090377   0.034553  -2.616  0.00906 ** 
factor(gind)453010 -0.014934   0.032090  -0.465  0.64178    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1827 on 851 degrees of freedom
  (134 observations deleted due to missingness)
Multiple R-squared:  0.1201,    Adjusted R-squared:  0.1108 
F-statistic: 12.91 on 9 and 851 DF,  p-value: < 2.2e-16

Code: Revenue prediction

library(readr)
library(dplyr)
df <-read.csv("/media/Data/Data/Compustat/Compustat_199301-201703.csv")
df <- data.frame(df)
df_tech <- subset(df,gsector == 45 & at > 10000,
                  select=c("gvkey","datadate","at","ni","lt","revt","gind"))
df_tech <- arrange(df_tech, gvkey, datadate)
df_tech$ROA <- df_tech$ni / df_tech$at
df_tech$Revenue <- df_tech$revt / df_tech$at
df_tech$Debt <- df_tech$lt / df_tech$at
x <- c("ROA", "Revenue","Debt") # Columns to lag
df_tech <- df_tech %>%
  group_by(gvkey) %>%
  mutate_at(.cols=x, .funs=funs(lag = dplyr::lag(., n=1, default=NA)))
is.na(df_tech) <- sapply(df_tech, is.infinite)
fit <- lm(ROA ~ ROA_lag + Revenue_lag + Debt_lag + factor(gind), data=df_tech)
save(fit, file = "../Data/fit.rda")
summary(fit)

Revenue prediction for Microsoft

Predict out Microsoft’s 2018 ROA

Code: Revenue prediction for Microsoft

df_ms <- subset(df,gvkey==12141, select=c("gvkey","datadate","at", "ni","lt",
                                          "revt","gind"))
df_ms2 <- data.frame(gvkey=12141, datadate=20170630, at=241086,ni=21204,
                     lt=168692,revt=89950,gind=451030)
df_ms3 <- data.frame(gvkey=12141, datadate=20180630, at=NA,ni=NA,
                     lt=NA,revt=NA,gind=451030)
df_ms <- rbind(df_ms, df_ms2, df_ms3)
df_ms$ROA <- df_ms$ni / df_ms$at
df_ms$Revenue <- df_ms$revt / df_ms$at
df_ms$Debt <- df_ms$lt / df_ms$at
x <- c("ROA", "Revenue","Debt") # Columns to lag
df_ms <- df_ms %>%
  group_by(gvkey) %>%
  mutate_at(.cols=x, .funs=funs(lag = dplyr::lag(., n=1, default=NA)))
df_ms$ROA_predicted <- predict(fit, df_ms)
df_ms$year = floor(df_ms$datadate/10000)
save(df_ms, file="Data/df_ms.rda")
suppressPackageStartupMessages(library(plotly))
m <- list(l = 60,  r = 50,  b = 60,  t = 100,  pad = 4)
plot_ly(df_ms,x=~year,y=~ROA, name='Actual ROA', type='scatter',
        mode='lines', width = 800, height = 500) %>%
  add_trace(y=~ROA_predicted, name='Predicted ROA') %>%
  layout(autosize = F, margin = m,
         xaxis=list(title="Year"), yaxis=list(title="ROA"))

Fraud detection

  • Using 3 components:
    1. Topic – what companies say in annual reports
    2. Style – writing style used in annual reports
    3. Financials – financial ratios

  • Brown, Crowley, & Elliott (2020, Journal of Accounting Research)

Text classification of what we cover in ACCT 101

  • This shows the output of a simple machine learning model trained on individual slides from our course
  • Its goal is to summarize the content by grouping related words together

End matter

Wrap up

  • For next week
    1. Do Quiz 2 on eLearn!
    2. Recap the reading for this week
    3. Read the pages for next week
      • Cash flows (Chapter 11)
    4. Practice on eLearn
      • Practice on Financial ratios
      • Automatic feedback provided
  • Survey on the class session at rmc.link/101survey2

Packages used for these slides