Investing vs. (Algorithmic) Trading 
 
Asset Classes Money and (Crypto-) Currencies 
 
Why Trading Cryptocurrencies? 
 
Alternative Exchanges (Bybit Kraken etc.) 
 
Spot Trading vs. Derivatives (Futures) Trading (Part 1) 
 
Spot Trading vs. Derivatives (Futures) Trading (Part 2) 
 
[Article] Algorithmic Trading 101 and how to start 
 
Binance.com and Binance.US at a first glance 
 
How to get a 10% Discount on Trading Commissions 
 
Registration and Identity Verification 
 
How to instantly buy your first Cryptos 
 
Deposits and Withdrawals (Part 1) 
 
Deposits and Withdrawals (Part 2) 
 
The first Spot Trade (buy Bitcoin) 
 
Trade Analysis and Trading Fees/Commissions 
 
Another Spot Trade (sell Bitcoin) 
 
Limit Orders vs. Market Orders 
 
Bid-Ask-Spread and Slippage 
 
Total Costs of a Trade (visible vs. hidden Costs) 
 
Liquidity and Market Depth 
 
Introduction to Charting and Technical Indicators 
 
Test your debugging skills! 
 
Major reasons for Coding Errors 
 
The most commonly made Errors at a glance 
 
Omitting cells changing the sequence and more 
 
Misuse of function names and keywords 
 
TypeErrors and ValueErrors 
 
Getting help on StackOverflow.com 
 
How to traceback more complex Errors 
 
Problems with the Python Installation 
 
External Factors and Issues 
 
Errors related to the course content (Transcription Errors) 
 
Summary and Debugging Flow-Chart 
 
How to maximize your learning experience 
 
***Important Notice (August 2023 Update)*** 
 
Getting the API Key & other Preparations 
 
Commands to install required packages 
 
How to install the Binance API Wrapper 
 
Connecting to the API/Server 
 
Important notice for Binance.US users (Part 1) 
 
Retrieving general account/system Info (Part 1) 
 
Retrieving general account/system Info (Part 2) 
 
Getting (current) Market Data 
 
How to load Historical Price & Volume Data (Part 1) 
 
How to load Historical Price & Volume Data (Part 2) 
 
Excursus: Loading Historical Data (csv) from the Website 
 
Streaming real-time Market Data (Part 1) 
 
Important notice for Binance.US users (Part 2) 
 
Streaming real-time Market Data (Part 2) 
 
Streaming and collecting real-time Candles 
 
The Binance Spot Test Network 
 
***Important Notice (August 2023 Update)*** 
 
Creating a Connection to the Spot Testnet 
 
Spot Testnet API - Overview 
 
Placing a Market Buy Order 
 
Placing a Market Sell Order 
 
Reporting: Getting all (historical) Orders and Trades 
 
How to create & run a first (simple) Trading Bot 
 
Homework: Running the Trading Bot in a Python Script 
 
Introduction and Overview 
 
Installing and importing required Libraries/Packages 
 
Loading Financial Data from the Web 
 
Initial Inspection and Visualization 
 
[Article] Loading Data into Pandas - advanced topics 
 
Normalizing Time Series to a Base Value (100) 
 
Price changes and Financial Returns 
 
Reward and Risk of Financial Instruments 
 
Investment Multiple and CAGR 
 
Compound Returns & Geometric Mean Return 
 
Simple Returns vs Log Returns ( Part 1) 
 
Simple Returns vs Log Returns ( Part 2) 
 
Comparing the Performance of Financial Instruments 
 
(Non-) Normality of Financial Returns 
 
Annualizing Return and Risk 
 
Resampling / Smoothing of Financial Data 
 
Short Selling and Short Position Returns (Part 1) 
 
Introduction to Currencies (Forex) and Trading 
 
Short Selling and Short Position Returns (Part 2) 
 
Short Selling and Short Position Returns (Part 3) 
 
Covariance and Correlation 
 
Portfolios and Portfolio Returns 
 
Margin Trading and Levered Returns (Part 1) 
 
Margin Trading and Levered Returns (Part 2) 
 
Trading Strategies - Overview 
 
[Article] More on Trading Strategies 
 
Trading Strategies for Cryptocurrencies (best practices) 
 
How to create your own Trading Strategies 
 
[Article] The Lifecycle of a Trading Strategy 
 
Financial Data Analysis / Visual Inspection 
 
A simple Buy and Hold "Strategy" 
 
Strategy Optimization (Part 1) 
 
Strategy Optimization (Part 2) 
 
Putting everything together: a Backtester Class 
 
Backtesting & Forward Testing (Part 1) 
 
Backtesting & Forward Testing (Part 2) 
 
The Backtester Class explained (Part 1) 
 
The Backtester Class explained (Part 2) 
 
The Backtester Class explained (Part 3) 
 
The Backtester Class explained (Part 4) 
 
Important notice for Binance.US users 
 
Recap: Streaming and Collecting Real-Time Candles 
 
NEW: BinanceSocketManager (August 2023 Update) 
 
Creating the LongOnlyTrader Class 
 
Working with historical data and real-time data (Part 1) 
 
Working with historical data and real-time data (Part 2) 
 
Adding a Long-Only Trading Strategy 
 
Placing Orders and Executing Trades 
 
Trade Monitoring and Reporting 
 
How to set/automate the stop of a Trading Session 
 
Recap: Explanatory Data Analysis and generating a Trading Idea 
 
Defining the Long-Short Strategy 
 
A Long-Short Backtesting Framework 
 
A Long-Short Trading Framework 
 
Implementing and Automating a Long-Short Trading Strategy 
 
#Troubleshooting for the next Lecture# 
 
Running a Python Trader Script 
 
Introduction and Motivation 
 
Demonstration: AWS EC2 for Algorithmic Trading live in action 
 
Amazon Web Services (AWS) - Overview and how to create a Free Trial Account 
 
How to create an EC2 Instance 
 
How to connect to your EC2 Instance 
 
Required Installations and Downloads 
 
Getting the Instance Ready for Algorithmic Trading 
 
How to run Python Scripts in a Windows Command Prompt 
 
How to start Trading sessions with Batch (.bat) Files 
 
How to schedule Trading sessions with the Task Scheduler 
 
Creating an account on Binance Futures Testnet 
 
The first Futures Trade (Long) 
 
Margin Requirements and Liquidation (Part 1) 
 
Margin Requirements and Liquidation (Part 2) 
 
Excursus: The Futures Calculator 
 
How to add Stop Loss to an open position 
 
Stop Loss (SL) and Take Profit (TP) Orders 
 
Margin Mode: Cross vs. Isolated 
 
Position Mode: One-way (Netting) vs. Hedging 
 
How to work with many open positions 
 
Introduction to the Funding Rate 
 
The Funding Rate explained (Part 1) 
 
The Funding Rate explained (Part 2) 
 
The Funding Rate explained (Part 3) 
 
The Funding Rate live in action 
 
Introduction and Preparations 
 
How to change Settings and Modes 
 
Placing Market Orders (Part 1) 
 
Trade Analysis - Trade and Income History 
 
Placing Market Orders (Part 2) 
 
Getting Historical Futures Market Data 
 
***Important Notice (August 2023 Update)*** 
 
Streaming Future Prices in real-time 
 
A Futures Trading Bot (Part 1) 
 
A Futures Trading Bot (Part 2) 
 
Putting everything together 
 
General Exchange Information 
 
Loading Historical Data (Part 1) 
 
Loading Historical Data (Part 2) 
 
Streaming real-time Data (Part 1) 
 
Introduction to Multithreaded Programming 
 
Streaming real-time Data (Part 2) 
 
Streaming real-time Data (Part 3) 
 
Getting Historical Data and Streaming live Data 
 
How to connect to Testnets (Sandbox mode) 
 
Creating Orders and analyzing Trades (Spot) 
 
Creating Orders and analyzing Trades (Futures) 
 
A CCXT Futures Trading Bot 
 
Creating accounts on bybit.com and testnet.bybit.com 
 
More Preparations for (API) Trading with Bybit and CCXT 
 
API Trading with Bybit and CCXT - First Steps 
 
What you should consider for Backtesting 
 
Spot Trading (Orders and Trades) 
 
Futures Trading on Bybit (Orders and Trades) 
 
A Bybit Futures Trading Bot 
 
Intro to the Time Value of Money (TVM) Concept (Theory) 
 
Calculate Future Values (FV) with Python / Compounding 
 
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 
 
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 
 
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 
 
Introduction to while loops 
 
Modules Packages and Libraries - No need to reinvent the Wheel 
 
Indexing and Slicing Numpy Arrays 
 
Vectorized Operations with Numpy Arrays 
 
Changing Elements in Numpy Arrays & Mutability 
 
View vs. copy - potential Pitfalls when slicing Numpy Arrays 
 
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 
 
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 
 
Intro to Tabular Data / Pandas 
 
Create your very first Pandas DataFrame (from csv) 
 
Loading a CSV-file into Pandas 
 
Pandas Display Options and the methods head() & tail() 
 
Selecting one Column with the "dot notation" 
 
Zero-based Indexing and Negative Indexing 
 
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 
 
Summary Best Practices and Outlook 
 
First Steps with Pandas Series 
 
Analyzing Numerical Series with unique() nunique() and value_counts() 
 
Analyzing non-numerical Series with unique() nunique() value_counts() 
 
Sorting of Series and Introduction to the inplace - parameter 
 
First Steps with Pandas Index Objects 
 
Changing Row Index with set_index() and reset_index() 
 
Renaming Index & Column Labels with rename() 
 
Filtering DataFrames (one Condition) 
 
Filtering DataFrames by many Conditions (AND) 
 
Filtering DataFrames by many Conditions (OR) 
 
Advanced Filtering with between()  isin() and ~ 
 
Intro to NA Values / missing Values 
 
Handling NA Values / missing Values 
 
Exporting DataFrames to csv 
 
Summary Statistics and Accumulations 
 
Visualization with Matplotlib (Intro) 
 
Categorical Seaborn Plots 
 
Introduction to GroupBy Operations 
 
Understanding the GroupBy Object 
 
Introduction to OOP and examples for Classes 
 
The Financial Analysis Class live in action (Part 1) 
 
The Financial Analysis 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