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