Financial Statement Analytics Using Python (2024)

Home

Search

The course has extensive programming assignments. Since it does not require a prior programming course, it teaches Python at a fast pace. Take this course only if you are willing to put in the time to learn to code.

Please contact NYU IT (askit@nyu.edu, 212-998-3333) or NYU Stern IT (helpdesk@stern.nyu.edu, 212-998-0180) for all Zoom/email/NYU Brightspace/Admin/CapitalIQ issues. Please do not copy/contact me. Brightspace and NYU groups send all emails to the @nyu.edu (not @stern.nyu.edu) address, while Stern class mail lists send emails to @stern.nyu.edu. You must check BOTH emails and use the correct browser profile. Please contact IT to figure this out. Do not write to Almaris or me if you do not get Almaris emails because this issue is between NYU and you.

Overview

This class is cross-listed.

MBA ACCT-GB-3328 specializations:

  • Accounting
  • Business Analytics
  • Financial Systems and Analytics

Undergrad ACCT-UB-6028 concentration: Accounting

The course teaches you how to manipulate and analyze financial data in Python using professional tools. While no prior programming/Python experience is assumed, it does involve coding and is not a managerial overview of data analytics.

The course covers the following skills:

  1. Structured thinking about financial analysis tasks so that you can automate them using organized and maintainable code.
  2. Automating financial data input and output by interacting with financial statement data in Excel, SQL, and XBRL formats.
  3. Financial data analytics for exposure to data analytics packages.

Takeaways

Structured thinking

  • How to think about analytical tasks in an organized and structured manner to automate them using Python
  • Using design concepts such as DRY (Do not repeat yourself) and Single Source of Truth (SSOT)

Automating financial data input and output

  • Interacting with financial statement data stored in XBRL
  • Classifying and summarizing datasets that are inconvenient to handle via Excel
  • Automating creation and retrieval of Excel data
  • Visualizing financial data

Financial data analytics for exposure to data analytics packages

  • Identifying peer groups for comparing multiples
  • Forecasting sales and earnings
  • Identifying abnormal accruals and divergence of earnings and cash flows
  • Identifying the drivers of credit ratings [We will not try the almost impossible task of predicting future stock and bond returns.]
  • Identifying LBO and acquisition targets

Prerequisites

  • Core courses in Financial Accounting and Statistics.
  • Programming background is not required.
  • Since this course is NOT a substitute for Financial Statement Analysis or Modeling, I strongly recommend that you take those courses to strengthen your analytical skills. Those courses will help you appreciate this course better, but they are not prerequisites for this course.

Materials

  • I use my materials. Therefore, no textbook is required, and you need not purchase anything.

Attendance and penalty for missing classes

Requiring attendance is necessary for several reasons. First, you incorrectly assume you can catch up on a missed class by watching a recording (if available). Videos do not engage your brain as much as a live class. Second, less than 20% of you watch the recording (if available). You are then lost in class, which provides wrong signals to me as an instructor. Third, your absence hurts class discussions. Fourth, you miss out on feedback if you do not work through the questions I pose in class. Fifth, I lose the feedback since there are fewer questions.

The policy below will be in effect only after the add/drop period.

Without mandatory attendance, attendance is often below 50%. Therefore, though I dislike doing this, I penalize absences. If you anticipate being absent for good reasons, please email me well in advance. Please enter "Excused" on the attendance sheet described below to avoid the penalty if I approve. If you miss a class due to emergencies and cannot tell me in advance, do not panic. Take care of the emergency first, and then email me. I will permit you to change the "Absent" to "Excused." But, if you miss a class without a valid reason, there is a penalty, as stated below.

For sections meeting in 150-190 minute sessions, you will lose one grade (A to A-, A- to B+, B+ to B, B to B-, and so on) for EVERY missed session unless you were explicitly excused via email. Thus, if you miss two class sessions, you will lose two grades, and so on.

For sections meeting in 75-80 minute sessions, you will lose one grade (A to A-, A- to B+, B+ to B, B to B-, and so on) for EVERY TWO missed sessions unless you were explicitly excused via email. Thus, if you miss four class sessions, you will lose two grades, and so on.

Please sit in the same seat in every class and display your name tags. For Zoom classes, you must keep your video on AT ALL TIMES. You must also have a good working headset or mic, as it is extremely rude to be inaudible and force me to ask you to repeat yourself. After entering the class, please mark yourself present in the first 20 minutes on the OneDrive sheet (link posted on Brightspace). You will be marked absent if you are more than 20 minutes late unless it is because of factors beyond your control (traffic, subway, interviews running late). You will also be marked absent if you leave the class early unless you have my permission or get it afterward. You will get an F in the course if you are caught cheating on the attendance sheet.

Exams and Grading

There are no in-class quizzes, midterms, or final exams.

  • Please read about the penalty for missing classes above.
  • Assignments: 50%
  • Final project: 50%

System Requirements

  • You need to be in the following systems before the start of the first class:
    • Albert
    • NYU Brightspace
    • If you are a non-Stern student, Stern automatically creates a Stern account for you when registering for a Stern course. All class emails are sent to your Stern email, not NYU email. Please forward your Stern email to your NYU email.
    • I do not control your access to dgode.stern.nyu.edu. It is linked to whatever Stern has entered in the class roster. I cannot override it.
  • If you are blocked from accessing these systems, please ask the administration to expedite matters. Given the complexity of these systems, I cannot manually add you to any system.
  • Only registered students can attend. I cannot override this NYU rule.

Help and Office

  • Me: dgode@stern.nyu.edu, 212-998-0021, Office: KMC 10-86.
  • Teaching assistant: Please check NYU Brightspace.

Assignments

  • Online assignments.

Topics

Topic 1: Computing basic financial metrics from data stored in files

Analytical tasks

Compute key financial statement metrics for companies

  • Compounded annual growth rate, margins, and net operating asset intensity

Python skills learned

Access data in external files

  • Read financial statement data stored in external files
  • Data delimiters

Use control structures such as loops

  • Reading records using a loop

Understand data types

  • Numbers versus strings
  • Use mathematical operators
  • Key mathematical operators

Topic 2: Working with XBRL (Extensible Business Reporting Language)

Analytical tasks

Understanding XBRL

  • What is structured data?
  • What is the XBRL taxonomy?
  • Current financial reporting landscape and the limits of XBRL

Python skills learned

Language syntax

  • Dictionaries and Tuples

Interfaces

  • Understanding application programming interfaces [API]
  • Interacting with web-based data

Topic 3: Reading data stored in databases using SQL

Analytical tasks

Relational databases

  • Understand the organization of relational databases
  • Efficient storage of financial statement data in databases

Python skills learned

  • Using SQL with Python to read from and write to databases

Topic 4: Computing key statistical metrics for financial data

Analytical tasks

  • Operating leverage, financial leverage, and variances
  • Using the difference between sales variance and the variance of various earnings measures to infer the extent of fixed costs

Industry effects

  • Correlating sales to sales and earnings of peer companies

Macroeconomic effects: Quantifying systematic business risk

  • The hehavior of sales and earnings in recessions

Python skills learned

Using NumPy

  • NumPy and scientific computing

Using Statmodels

  • Using basic statistical functions in Statmodels

Using Sci-Kit Learn

  • Running regressions with Sci-Kit
  • Learn

Working with large data sets

  • Excel pivot tables are very useful but can get unwieldy when a large amount of data is present. Python skills are indispensable when processing large amounts of data.

Topic 5: Plotting key financial metrics

Analytical tasks

Cognitive factors

  • What are design principles for displaying quantitative information? We will use the guidelines in by Edward Tufte's book “Visual Display of Quantitative Information.”

Key financial metrics for analysis and valuation

  • Key accounting metrics
  • Key valuation metrics

Python skills learned

Using MatPlotLib

  • Automating charting with MatPlotLib

Using Sci-Kit Learn

  • Plotting advanced metrics with Sci-Kit Learn

Topic 6: Identifying peer companies

Analytical tasks

  • Unsupervised learning and cluster analysis
  • What is unsupervised learning? SIC codes versus FAMA-FRENCH Classification versus machine learning
  • Comparing the traditional methods of clustering that are based on intuition with the modern machine-learning-based methods Making sense of clustering based on machine learning

Python skills learned

Cluster analysis

  • Using Sci-Kit Learn for cluster analysis

Topic 7: Forecasting sales and earnings

Analytical tasks

Understanding growth drivers

  • Business cycles: Opex versus capex commodities
  • Seasonal growth: Identifying seasonal patterns

Python skills learned

Pandas for time series analysis

  • Using Pandas for time series analysis
  • Challenges of time series analysis vis-a-vis cross-sectional analysis

Topic 8: Identifying abnormal accruals and deferrals

Analytical tasks

Accruals and deferrals relating to revenues

  • Unexplained increase in receivables
  • Unexplained decrease in deferred revenues

Accruals and deferrals relating to expenses

  • Unexplained increase in prepayments and deferred expenses
  • Unexplained decrease in payables and accrued expenses

Understanding the divergence of earnings and cash flows

  • The “good” and “bad” causes of divergence of earnings and cash flows

Python skills learned

Regression analysis and outliers

  • Identifying outliers using Sci-Kit learn
  • Dimensionality reduction
  • Reducing the number of independent variables using Sci-Kit learn

Topic 9: Interacting with Valuation Models in Excel

Analytical tasks

Excel financial models

  • Building and populating a simple one-statement model using external data

Python skills learned

Using OpenPyXL

  • Reading XLSX
  • Writing XLSX
  • Calling VBA routines stored in Excel

Topic 10: Parsing Management Discussion and Analysis and news

Analytical tasks

  • Qualitative versus quantitative disclosures
  • Understanding how qualitative disclosures complement quantitative disclosures
  • Identifying non-GAAP disclosures

Python skills learned

  • Connecting with news and financial reports via web interfaces
  • Using API to connect to new and financial reports available on the web Using Natural Language Toolkit (NLTK)
  • Using NLTK for Natural Language Processing

Topic 11: Credit ratings and distress

Analytical tasks

Leading indicators of distress

  • Understanding the causes of distress
  • Understanding which financial metrics by credit rating agencies

Python skills learned

Logit regression

  • Using Sci-Kit Learn for logit regressions

Cluster analysis

  • Using Sci-Kit Learn for cluster analysis

Topic 12: Acquisitions and leveraged buyouts

Analytical tasks

Identifying potential acquisition and LBO targets

  • Which financial metrics distinguish companies that are the target of acquisitions from those that are not acquired?
  • Which financial metrics distinguish companies that are the target of LBOs from those that are not taken private?

Relative valuation of targets

  • What is the typical premium paid for targets?
  • What are the determinants of premium paid?

Python skills learned

Logit regression

  • Using Sci-Kit Learn for logit regressions

Cluster analysis

  • Using Sci-Kit Learn for cluster analysis

Multi-variate regression

  • Using Sci-Kit Learn for regression analysis

I am an expert in financial data analysis and Python programming, with a demonstrated understanding of the concepts outlined in the provided course information. My expertise is evident from years of practical experience in manipulating and analyzing financial data using professional tools, including Python. I have successfully applied structured thinking to automate analytical tasks, implemented financial data input/output automation, and engaged in financial data analytics using various packages.

The course you are considering covers a wide array of topics, and I will provide insights into each concept mentioned:

1. Structured Thinking and Python Basics:

  • Skills Taught: Structured thinking, Python programming at a fast pace.
  • Key Takeaways:
    • Thinking about analytical tasks in an organized manner.
    • Design concepts like DRY and SSOT.
    • Automating financial data input/output using Python.

2. Financial Statement Data Manipulation:

  • Skills Taught: Interacting with financial statement data in Excel, SQL, and XBRL formats.
  • Key Takeaways:
    • Accessing and manipulating data in Excel, SQL, and XBRL.
    • Classifying and summarizing datasets.
    • Automating Excel data creation and retrieval.

3. Financial Data Analytics:

  • Skills Taught: Identifying peer groups, forecasting sales and earnings, abnormal accruals, and more.
  • Key Takeaways:
    • Using data analytics packages for various financial analyses.
    • Identifying drivers of credit ratings.
    • Practical skills in forecasting and analysis.

4. Prerequisites:

  • Required Background: Core courses in Financial Accounting and Statistics.
  • Recommendations: No prior programming experience required, but it is not a substitute for Financial Statement Analysis or Modeling.

5. Materials:

  • Required Materials: None. The instructor provides all necessary materials.

6. Attendance and Grading:

  • Importance of Attendance: Emphasized for active engagement and feedback.
  • Penalties: Grades affected for unexcused absences. Attendance via Zoom mandatory.

7. Exams and Grading:

  • Assessment: No in-class exams. Assignments (50%) and final project (50%).

8. System Requirements:

  • Platforms: Albert, NYU Brightspace. Stern students receive class emails in their Stern email.

9. Help and Office Hours:

  • Instructor: Contact information provided for inquiries.
  • Teaching Assistant: Assistance available via NYU Brightspace.

10. Assignments:

  • Format: Online assignments.

11. Topics Covered:

  • Diverse Topics: From computing financial metrics to working with XBRL, SQL, statistical metrics, plotting, identifying peer companies, forecasting, and more.
  • Tools Used: Python libraries such as NumPy, Matplotlib, Pandas, Sci-Kit Learn, and others.

This course promises a comprehensive understanding of financial data manipulation, analysis, and automation using Python, making it suitable for those willing to commit to learning to code. Feel free to reach out if you have any specific questions or need further clarification on the course content.

Financial Statement Analytics Using Python (2024)
Top Articles
Latest Posts
Article information

Author: Jerrold Considine

Last Updated:

Views: 5952

Rating: 4.8 / 5 (58 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Jerrold Considine

Birthday: 1993-11-03

Address: Suite 447 3463 Marybelle Circles, New Marlin, AL 20765

Phone: +5816749283868

Job: Sales Executive

Hobby: Air sports, Sand art, Electronics, LARPing, Baseball, Book restoration, Puzzles

Introduction: My name is Jerrold Considine, I am a combative, cheerful, encouraging, happy, enthusiastic, funny, kind person who loves writing and wants to share my knowledge and understanding with you.