MS in Data Analytics and Business Computing
Data Visualization
Course code: SHBI-GB 7140 B01
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
Spring 2023: As a cross-listed grad/undergrad class.
MBA ACCT-GB-3328 specializations:
- Accounting
- Business Analytics
- Financial Systems and Analytics
Undergrad ACCT-UB-0028 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:
- Structured thinking about financial analysis tasks so that you can automate them using organized and maintainable code.
- Automating financial data input and output by interacting with financial statement data in Excel, SQL, and XBRL formats.
- 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.
- 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
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
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