Tips: How to get the most out of this Course (don´t skip!) 
 
FAQ / Your Questions answered 
 
How to download and install Anaconda for Python coding 
 
Jupyter Notebooks - let´s get started 
 
How to work with Jupyter Notebooks 
 
Intro to the Time Value of Money (TVM) Concept (Theory) 
 
Calculate Future Values (FV) with Python / Compounding 
 
***NEW*** Udemy Online Coding Exercises - Intro 
 
Calculate Present Values (PV) with Python / Discounting 
 
Interest Rates and Returns (Theory) 
 
Calculate Interest Rates and Returns with Python 
 
Introduction to Variables 
 
Excursus: How to add inline comments 
 
Variables and Memory (Theory) 
 
More on Variables and Memory 
 
Variables - Dos Don´ts and Conventions 
 
TVM Problems with many Cashflows 
 
Zero-based Indexing and negative Indexing in Python (Theory) 
 
For Loops - Iterating over Lists 
 
The range Object - another Iterable 
 
Iterating over range objects 
 
Calculate FV and PV for many Cashflows 
 
The Net Present Value - NPV (Theory) 
 
Calculate an Investment Project´s NPV 
 
The Data Type Hierarchy (Theory) 
 
Excursus: Dynamic Typing in Python 
 
How to round Floats (and Integers) with round() 
 
Lists and Element-wise Operations 
 
Changing Elements in Lists 
 
Sorting and Reversing Lists 
 
Adding and removing Elements from/to Lists 
 
Adding and Removing Elements 
 
Mutable vs. immutable Objects (Part 1) 
 
Mutable vs. immutable Objects (Part 2) 
 
Comparison Logical and Membership Operators in Action 
 
Keywords pass continue and break 
 
Calculate a Project´s Payback Period 
 
The Internal Rate of Return - IRR  (Theory) 
 
Solving for a Project´s IRR 
 
Bonds and the Yield to Maturity - YTM (Theory) 
 
Solving for a Bond´s Yield to Maturity (YTM) 
 
Modules Packages and Libraries - No need to reinvent the Wheel 
 
Indexing and Slicing Numpy Arrays 
 
Vectorized Operations with Numpy Arrays 
 
PV with vectorized Numpy Code 
 
Changing Elements in Numpy Arrays & Mutability 
 
View vs. copy - potential Pitfalls when slicing Numpy Arrays 
 
Changing elements in Arrays (and Copies) 
 
Numpy Array Methods and Attributes 
 
Numpy Universal Functions 
 
Boolean Arrays and Conditional Filtering 
 
Advanced Filtering & Bitwise Operators 
 
Determining a Project´s Payback Period with np.where() 
 
Creating Numpy Arrays from Scratch 
 
Numpy Arrays from Scratch 
 
Evaluating Investments with npf.npv() and npf.irr() 
 
Evaluating Annuities with npf.fv() - Funding Phase 
 
Evaluating Annuities with npf.fv() - Payout Phase 
 
How to solve for annuity payments with npf.pmt() 
 
How to solve for the number of periodic payments with npf.nper() 
 
How to calculate the required Contract Value with npf.pv() 
 
Frequency of compounding and the effective annual interest rate 
 
How to evaluate a Retirement Plan A-Z 
 
Retirement Plan: Sensitivity Analysis 
 
Mortgage Loan Analysis - Debt Sizing 
 
Mortgage Loan Analysis - Interest Payments and Amortization Schedule 
 
Calculate PV of equal installments with npf.pv() - Valuation of Bonds 
 
Capital Budgeting - Mutually exclusive Projects (Part 1) 
 
Capital Budgeting - Mutually exclusive Projects (Part 2) 
 
Capital Budgeting - Mutually exclusive Projects (Part 3) 
 
Visualizing Frequency Distributions with plt.hist() 
 
Relative and Cumulative Frequencies with plt.hist() 
 
Measures of Central Tendency (Theory) 
 
Coding Measures of Central Tendency - Mean and Median 
 
Coding Measures of Central Tendency - Geometric Mean 
 
Excursus: Why Log Returns are useful 
 
Variability around the Central Tendency / Dispersion (Theory) 
 
Minimum Maximum and Range with Python/Numpy 
 
Variance and Standard Deviation with Python/Numpy 
 
Percentiles with Python/Numpy 
 
Skew and Kurtosis (Theory) 
 
How to calculate Skew and Kurtosis with scipy.stats 
 
How to generate Random Numbers with Numpy 
 
Reproducibility with np.random.seed() 
 
Probability Distributions - Overview 
 
Discrete Uniform Distributions 
 
Continuous Uniform Distributions 
 
The Normal Distribution (Theory) 
 
Creating a normally distributed Random Variable 
 
Normal Distribution - Probability Density Function (pdf) with scipy.stats 
 
Normal Distribution - Cumulative Distribution Function (cdf) with scipy.stats 
 
The Standard Normal Distribution and Z-Values 
 
Properties of the Standard Normal Distribution (Theory) 
 
Probabilities and Z-Values with scipy.stats 
 
Confidence Intervals with scipy.stats 
 
Sample Statistic Sampling Error and Sampling Distribution (Theory) 
 
Sampling with np.random.choice() 
 
Central Limit Theorem (Coding Part 1) 
 
Central Limit Theorem (Coding Part 2) 
 
Central Limit Theorem (Theory) 
 
Point Estimates vs. Confidence Interval Estimates (known Population Variance) 
 
The Student´s t-distribution: What is it and why/when do we use it? 
 
Unknown Population Variance - the Standard Case (Example 1) 
 
Unknown Population Variance - the Standard Case (Example 2) 
 
Student´s t-Distribution vs. Normal Distribution with scipy.stats 
 
Bootstrapping with Python: an alternative method without Statistics 
 
Hypothesis Testing (Theory) 
 
Two-tailed Z-Test with known Population Variance 
 
What is the p-value? (Theory) 
 
Calculating and interpreting z-statistic and p-value with scipy.stats 
 
One-tailed Z-Test with known Population Variance 
 
Two-tailed t-Test (unknown Population Variance) 
 
One-tailed t-Test (unknown Population Variance) 
 
Hypothesis Testing with Bootstrapping 
 
Testing for Normality of Financial Returns with scipy.stats 
 
How to work with nested Lists 
 
2-dimensional Numpy Arrays 
 
How to slice 2-dim Numpy Arrays (Part 1) 
 
How to slice 2-dim Numpy Arrays (Part 2) 
 
Recap: Changing Elements in a Numpy Array / slice 
 
How to perform row-wise and column-wise Operations 
 
Reshaping and Transposing 2-dim Numpy Arrays 
 
Creating 2-dim Numpy Arrays from Scratch 
 
Arithmetic & Vectorized Operations with 2-dim Numpy Arrays 
 
Adding & Removing Elements 
 
Merging and Concatenating Numpy Arrays 
 
Defining your first user-defined Function 
 
What´s the difference between Positional Arguments vs. Keyword Arguments? 
 
How to work with Default Arguments 
 
The Default Argument None 
 
Sequences as arguments and *args 
 
How to return many results 
 
How to create Nested Functions 
 
Putting it all together - Case Study 
 
What is the Value-at-Risk (VaR)? (Theory) 
 
Analyzing the Data / past Performance 
 
How to use the Parametric Method to calculate Value-at-Risk (VaR) 
 
How to use the Historical Method to calculate Value-at-Risk (VaR) 
 
Monte Carlo Simulations for Value-at-Risk - Parametric (Part 1) 
 
Monte Carlo Simulations for Value-at-Risk - Parametric (Part 2) 
 
Monte Carlo Simulations for Value-at-Risk - Parametric (Part 3) 
 
Monte Carlo Simulations for Value-at-Risk - Bootstrapping (Part 1) 
 
Monte Carlo Simulations for Value-at-Risk - Bootstrapping (Part 2) 
 
Conditional Value-at-Risk (CVaR) 
 
Dynamic & path-dependent Simulations (Part 1) 
 
Dynamic & path-dependent Simulations (Part 2) 
 
Dynamic & path-dependent Simulations (Part 3) 
 
Dynamic & path-dependent Simulations (Part 4) 
 
First Steps (Inspection of Data Part 1) 
 
First Steps (Inspection of Data Part 2) 
 
Built-in Functions Attributes and Methods 
 
Explore your own Dataset: Coding Exercise 1 (Intro) 
 
Explore your own Dataset: Coding Exercise 1 (Solution) 
 
Selecting Rows with Square Brackets (not advisable) 
 
Selecting Rows with iloc (position-based indexing) 
 
Slicing Rows and Columns with iloc (position-based indexing) 
 
Position-based Indexing Cheat Sheets 
 
Selecting Rows with loc (label-based indexing) 
 
Slicing Rows and Columns with loc (label-based indexing) 
 
Label-based Indexing Cheat Sheets 
 
Coding Exercise 2 (Intro) 
 
Coding Exercise 2 (Solution) 
 
First Steps with Pandas Series 
 
Analyzing Numerical Series with unique() nunique() and value_counts() 
 
UPDATE Pandas Version 0.24.0 (Jan 2019) 
 
EXCURSUS: Updating Pandas / Anaconda 
 
Analyzing non-numerical Series with unique() nunique() value_counts() 
 
Sorting of Series and Introduction to the inplace - parameter 
 
Coding Exercise 3 (Intro) 
 
Coding Exercise 3 (Solution) 
 
First Steps with Pandas Index Objects 
 
Changing Row Index with set_index() and reset_index() 
 
Renaming Index & Column Labels with rename() 
 
Coding Exercise 4 (Intro) 
 
Coding Exercise 4 (Solution) 
 
Sorting DataFrames with sort_index() and sort_values() 
 
nunique() and nlargest() / nsmallest() with DataFrames 
 
Filtering DataFrames (one Condition) 
 
Filtering DataFrames by many Conditions (AND) 
 
Filtering DataFrames by many Conditions (OR) 
 
Advanced Filtering with between()  isin() and ~ 
 
Coding Exercise 5 (Intro) 
 
Coding Exercise 5 (Solution) 
 
Intro to NA Values / missing Values 
 
Handling NA Values / missing Values 
 
Exporting DataFrames to csv 
 
Summary Statistics and Accumulations 
 
Coding Exercise 6 (Intro) 
 
Coding Exercise 6 (Solution) 
 
Adding new Columns to a DataFrame 
 
Arithmetic Operations (Part 1) 
 
Arithmetic Operations (Part 2) 
 
Creating DataFrames from Scratch with pd.DataFrame() 
 
Adding new Rows (Hands-on) 
 
Adding new Rows to a DataFrame 
 
Manipulating Elements in a DataFrame 
 
Coding Exercise 8 (Intro) 
 
Coding Exercise 8 (Solution) 
 
Introduction to GroupBy Operations 
 
Understanding the GroupBy Object 
 
split-apply-combine applied 
 
Hierarchical Indexing with Groupby 
 
Coding Exercise 9 (Intro) 
 
Coding Exercise 9 (Solution) 
 
Importing Time Series Data from csv-files 
 
Converting strings to datetime objects with pd.to_datetime() 
 
Initial Analysis / Visualization of Time Series 
 
Indexing and Slicing Time Series 
 
Creating a customized DatetimeIndex with pd.date_range() 
 
Coding Exercise 10 (intro) 
 
Coding Exercise 10 (Solution) 
 
Downsampling Time Series with resample() (Part 1) 
 
Downsampling Time Series with resample (Part 2) 
 
Advanced Indexing with reindex() 
 
Coding Exercise 11 (intro) 
 
Coding Exercise 11 (Solution) 
 
Getting Ready (Installing required library) 
 
Importing Stock Price Data from Yahoo Finance (it still works!) 
 
Initial Inspection and Visualization 
 
Normalizing Time Series to a Base Value (100) 
 
The methods diff() and pct_change() 
 
Measuring Stock Performance with MEAN Returns and STD of Returns 
 
Financial Time Series - Return and Risk 
 
Financial Time Series - Covariance and Correlation 
 
Importing Financial Data from Excel 
 
Merging / Aligning Financial Time Series (hands-on) 
 
Coding Exercise 12 (intro) 
 
Coding Exercise 12 (Solution) 
 
Creating the equally-weighted Portfolio 
 
Creating many random Portfolios with Python 
 
What is the Sharpe Ratio and a Risk Free Asset? 
 
Portfolio Analysis and the Sharpe Ratio with Python 
 
Finding the Optimal Portfolio 
 
Excursus: Portfolio Optimization with scipy 
 
Sharpe Ratio - visualized and explained 
 
Coding Exercise 13 (Intro) 
 
Coding Exercise 13 (Solution) 
 
Capital Market Line (CML) & Two-Fund-Theorem 
 
The Portfolio Diversification Effect 
 
Systematic vs. unsystematic Risk 
 
Capital Asset Pricing Model (CAPM) & Security Market Line (SLM) 
 
Redefining the Market Portfolio 
 
Cyclical vs. non-cyclical Stocks - another Intuition on Beta 
 
Coding Exercise 14 (Intro) 
 
Coding Exercise 14 (Solution) 
 
Cleaning and preparing the Data - Movies Database (Part 1) 
 
Cleaning and preparing the Data - Movies Database (Part 2) 
 
Covariance and Correlation Coefficient (Theory) 
 
How to calculate Covariance and Correlation in Python 
 
Correlation and Scatterplots – visual Interpretation 
 
Creating a Confidence Interval for the Correlation Coefficient (Bootstrapping) 
 
Testing for Correlation (t-Test) 
 
What is Linear Regression? (Theory) 
 
A simple Linear Regression Model with numpy & Scipy 
 
How to interpret Intercept and Slope Coefficient 
 
Case Study (Part 1): The Market Model (Single Factor Model) 
 
Case Study (Part 2): The Market Model (Single Factor Model) 
 
OLS (Ordinary Least Squares) Regression (Theory) 
 
OLS Regression with statsmodels - Intro 
 
OLS Regression - ANOVA (Theory) 
 
OLS Regression with Statsmodels - ANOVA 
 
Coefficient of Determination (R squared) 
 
OLS Regression with statsmodels and DataFrames 
 
Confidence Intervals for Regression Coefficients - Bootstrapping 
 
Hypothesis Testing of Regression Coefficients (Theory) 
 
Hypothesis Testing of Regression Coefficients with statsmodels 
 
Regression Analysis with statsmodels - the Summary Table 
 
Case Study (Part 3): The Market Model (Single Factor Model) 
 
Multiple Regression (Theory) 
 
Movies Dataset - Preparing the Data 
 
Multiple Regression Analysis with statsmodels 
 
Coefficient of Determination (Adjusted R squared) 
 
Regression Coefficients Hypothesis Testing & Model Specification 
 
How to test the Significance of the Model as a whole (F-Test) 
 
Creating and working with Dummy Variables (Part 1) 
 
Creating and working with Dummy Variables (Part 2) 
 
Fama-French: An Introduction 
 
Single-Factor Models with the Fama-French Market Portfolio (Part 1) 
 
Single-Factor Models with the Fama-French Market Portfolio (Part 2) 
 
How to create a Fama-French Three-Factor Model 
 
The Factors Profitability and Investment 
 
How to create a Fama-French Five-Factor Model 
 
Linear Regression - not that easy! 
 
Detecting and Handling Outliers (Part 1) 
 
Detecting and Handling Outliers (Part 2) 
 
Non-Linear Relationships - Feature Transformation 
 
Detecting and Handling Multicollinearity 
 
Detecting and Correcting Heteroskedasticity 
 
Detecting and Handling Serial Correlation (Autocorrelation) 
 
Logistic Regression (Theory) 
 
Logistic Regression with statsmodels (Part 1) 
 
Logistic Regression with statsmodels (Part 2) 
 
Downloads for this Section ***Updated May 2023*** 
 
Introduction to OOP and examples for Classes 
 
The FinancialInstrument Class live in action (Part 1) 
 
The FinancialInstrument Class live in action (Part 2) 
 
The special method __init__() 
 
String representation and the special method __repr__() 
 
The methods plot_prices() and plot_returns() 
 
Encapsulation and protected Attributes 
 
Adding more methods and performance metrics 
 
Inheritance and the super() Function 
 
Adding meaningful Docstrings 
 
Creating and Importing Python Modules (.py) 
 
Coding Exercise: Create your own Class