Overview

This course has been thoroughly revised and updated for Spring 2025.

A revolution in data analysis is underway. Analysts who downloaded data manually and used Excel for analysis must learn to use Python API and data scrapers to download exploding volumes of data and use Numpy, Pandas Dataframes, and associated packages for analysis. This course teaches how to analyze financial data using the Python API, scrapers, Pandas data frames, and related packages while leveraging cutting-edge AI tools such as ChatGPT as assistants.

MBA ACCT-GB-3328 specializations

Undergrad ACCT-GB-6028 concentrations

Takeaways

Use Python to access data needed for financial analysis

Use Python for financial statement analysis

Use Python to build simple financial statement models in Python

Use Python to run finance simulations

Required Prerequisites

All ACCT courses have the core courses in Financial Accounting as a prerequisite.

Recommended Background

The course assumes you have taken a statistics course in your graduate or undergraduate program. It will also be extremely helpful if you have taken a half-semester Python course.

Materials

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

ChatGPT

The course will use ChatGPT extensively. If you use VSCode, you can sign up for GitHub Copilot for free. Otherwise, I strongly recommend that you subscribe to ChatGPT 4.0.

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.

System Requirements

Help and Office

Assignments

Topic 1: Data structures used to represent financial data

Analytical concepts

Organization of financial data: Row versus column orientation

Python skills

Numpy versus Pandas

Pandas essentials

Understand data types and simple operators

Manipulate rows and columns in Pandas

Topic 2: Access external financial data and save it in files

Analytical concepts

Understanding XBRL

Python skills

Application Programming Interfaces [API]

File formats

Handling dates

Data structures

Topic 3: ROIC and free cash flow drivers: Size, growth, margins, and NOA turnover

Analytical concepts

Sales growth

ROIC drivers

Unlevered free cash flows

Python skills

Loops versus vectorized and broadcast operations

Topic 4: Plotting ROIC and free cash flow drivers

Analytical concepts

Cognitive factors

Peer company analysis

Python skills

Types of charts

Pandas plotting

Full power of Matplotlib plotting

Topic 5: Discount rates, time value of money, loans, and bonds

Analytical concepts

Time value functions

Simple financial instruments

Python skills

Numpy

Date manipulation in Python

XLSXWriter

scipy.optimize

Topic 6: How business risk raises discount rate

Analytical concepts

Operating leverage and business risk

Identifying time series patterns

Identifying discrete events

Python skills

Matplotlib

Statmodels

Sci-Kit Learn

Topic 7: Business risk drivers: Cyclicality and seasonality

Analytical concepts

Statistical techniques

Python skills

Introduction to statistical packages for time series analysis

Package Primary Purpose
Pandas Data manipulation, resampling, rolling averages
Matplotlib Visualization of time series trends
Seaborn Enhanced plotting for time series analysis
Statsmodels Time series decomposition, ARIMA, SARIMA
SciPy Fourier analysis for detecting cycles
Prophet Forecasting with strong seasonal patterns
TensorFlow Deep learning for complex cyclical and seasonal patterns
PyCaret Automated machine learning for time series forecasting

Topic 8: Liquidity, leverage, and ROE

Analytical concepts

Liquidity

Leverage

Return on equity

Python skills

Advanced plotting with Matplotlib and Plotly

Statmodels

Topic 9: Three-statement model of growth and ROIC

Analytical concepts

Three-statement financial model

Monte Carlo simulations

Python skills

Comparing Numpy, Pandas data series, and Pandas data frames

Challenges of developing iterative models in Python

Topic 10: Valuation multiples and stock prices

Analytical concepts

Stock returns

Macroeconomic effects: Quantifying systematic business risk

Identifying discrete events

Key valuation multiples

Python skills

Using Python for regressions

Topic 11: Simulating portfolio returns

Analytical concepts

Simulating correlated stock returns

Optimal portfolios and capital asset pricing model (CAPM)

Python skills

Numpy matrices