The Wall Street Journal is an excellent resource for data mining, albeit not all reports are downloadable into excel (only the Historical Prices are). For this reason, we must copy and paste the income statement, balance sheet, and statement of cash flow separately into Excel in order to build an all-encompassing pro forma statement. However, in so doing, we build an automated process (macro) that takes the pasted data and arranges it in such a way that helps our efforts and is aesthetically sound.
What is a pro forma statement?
Pro Forma Financial Analysis
Pro Forma
- Latin term translating to “for the sake of form.”
Financial Analysis
- Income Statement
- Balance Sheet
- Statement of Cash Flows
As we discussed in our introduction, we can obtain the financials of any publicly traded company via:
- Yahoo Finance
- The Wall Street Journal
- The investor relations section of the corporation’s website
Piecing together a pro forma from the investor relations section of the company’s website can prove to be quite cumbersome.
- Some companies don’t have exportable excel files
- Makes the workload more tedious and time consuming
- It confuses certain line items that are available in other reliable sources
Income Statement
- A company’s performance measured by revenues and expenses
- In Economics:
Profit: \(\pi\) = TR - TC
- In Finance/ Accounting:
Profit = Revenue – Cost
- Operating Income (or Loss) = Total Revenue – Total Operating Expenses
- EBIT = Earnings Before Interest and Taxes
- Net Income from Continuing Operations = Total Other Income (and/or Expenses) Net + EBIT – Income Tax Expense
Balance Sheet
- Assets = Liabilities + Shareholder’s Equity
Cash Flow Statement
- Cash from Operating Activities
- Cash from Investing Activities
- Cash from Financing Activities
- We are going to compute Free Cash Flow (FCF) and use the discounted cash flow model (DCF) to valuate a company.
- Before we compute the FCF, let’s remember that financing activities of the cash flow statement can be disregarded.
- FCF = Operating activities – Capital Expenditures (CAPEX)
Recording Our First Macro
We will record a macro (automated process) that will create a script on the back end (in VBA).
- In Excel, click on “View,” then “Macros,” and click on “Record Macro.”
Make sure that you have your steps mapped out such that you do not make any mistakes in the process (i.e., accidentally click or type somewhere that was not intended).
Ensure that you name your macro such that it DOES NOT contain any spaces.
Write-up an optional description.
Click “OK.”
Once you are finished going through the process of recording a macro, go back to “View,” “Macros,” and ensure to click on “Stop Recording.”
- To view the resulting script, go back to the process in the diagram above.
- The resulting dialog box pops up. Click “Edit.”
- Let’s name our macro: “WSJProForma.”
- Let’s add the following description:
“ProForma Macro – useful for sites like WSJ
re-arranges columns (years) in ascending order”
- Select all data in range: (column A – column K).
- Unselect “Wrap Text.”
- With the data still selected, click on “Unmerge Cells.”
- Get rid of the border surrounding the data set (you want to ensure to remove all borders in columns A-K ).
- Insert a blank column in front of column B (where the header is marked as 2020).
- Repeat step 7 (above) 4 times until 4 blank columns are created in front of 2020. You can do this by pressing down ctrl + y on your keyboard 3 more times as a shortcut. The reason for creating 4 more columns to the front of 2020 is so that we can proceed to rearrange the years in chronological order.
- Highlight column J (where the header is marked as year 2016), copy the data, and paste the data into column A. Do the same for columns I – F , until all the dates are rearranged in chronological order.
- If there is any data in column K: such as “5 year-trend, etc.,” ensure to delete it. You can do this by deleting column K in its entirety. Data in column K is what was left over from the copying and pasting of original data.
- Go back to column A , highlight it, and align it to the left.
- This concludes the steps for this macro. Ensure to go back to the View tab on top of the Excel menu, go to “Macros,” and click on “Stop Recording.”
This takes us to the VBA Editor. On the back end, a screenshot of the script for the macro is shown below:
Wall Street Journal Pro Forma Macro (Script)
Sub ProFormaAlign()
' ProForma Macro - useful for sites like WSJ
' re-arranges columns (years) in ascending order
With Selection
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = -1
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
Selection.UnMerge
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("A:A").EntireColumn.AutoFit
Columns("J:J").Select
Selection.Cut
Range("B1").Select
ActiveSheet.Paste
Columns("I:I").Select
Selection.Cut
Range("C1").Select
ActiveSheet.Paste
Columns("H:H").Select
Selection.Cut
Range("D1").Select
ActiveSheet.Paste
Columns("G:G").Select
Selection.Cut
Range("E1").Select
ActiveSheet.Paste
Columns("K:K").Select
Selection.Delete Shift:=xlToLeft
Columns("A:A").Select
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
Columns("A:F").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Columns("A:F").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End With
End Sub