Algorithmic trading serves as a practical application of software engineering and data science methodologies and quantitative analysis techniques within the context of financial markets. This project-based course offers an introduction to algorithmic trading and the principles behind it, while emphasizing universally applicable engineering concepts and data-driven methodologies.
Students will gain an understanding of the fundamentals of financial markets and trading systems, learn how to manage data, generate signals, backtest strategies, and use APIs to execute trades. Additionally, they will apply risk management principles, position sizing, and software development best practices such as unit testing in Python. Most importantly, the course will teach students specific thinking patterns and data science methodologies that can be applied across various engineering and data analysis fields. Students will be equipped with a toolbox needed to continue researching trading strategies, predictive analytics, or other data science-related topics independently.
Following condensed lecture videos, the course will emulate a professional environment through a series of individual assignments culminating in a functional project. Delivery of the project will be guided by direct instruction, Q&A calls, and an online chat group with the lecturers, similar to a real workplace. Students will deliver a functional project in Python, according to a specification, while also taking exams on the theoretical materials covered in the lectures.
Student progress is assessed through the delivery of practical projects according to a specification and evaluation criteria. While there are no prerequisites for this course, an understanding of statistics, probabilities, hypothesis testing, measures of spread, confidence intervals, and related topics is assumed.
Students will develop a strong foundation in universally applicable data engineering principles through the lens of algorithmic trading. They will gain insights into the nature of algorithmic trading in financial markets, various types of orders, and instruments while emphasizing the engineering and research principles that underpin the development of robust trading systems. Students will learn to apply these principles when creating signal processing systems, managing data, and performing hypothesis testing.
Additionally, they will acquire the skills to design execution infrastructure using API libraries, learn about risk management techniques, and adhere to best practices in software development to deliver high-quality code. Throughout the course, students will utilize Python programming and various libraries, emphasizing the importance of universally applicable engineering and research principles in creating, testing, and optimizing algorithmic trading strategies, while gaining hands-on experience in addressing real-world challenges.
By the end of this course, students will be able to:
- Understand the fundamental concepts of financial markets and trading systems, which can be applied to various fields of engineering and data analysis.
- Analyze and select appropriate data sources for various engineering and research applications, considering optimization, data mining, and model robustness.
- Develop and evaluate data-driven strategies and signals, applying a range of data types and indicators across different engineering and research disciplines.
- Design and implement a research infrastructure for data analysis, focusing on data management, validation, hypothesis testing, and handling specifics of different data sources.
- Utilize various APIs and libraries to develop execution infrastructure for data-driven applications, including the execution management of algorithmic trading strategies.
- Understand the principles of risk management and decision-making in various engineering applications, including exposure management and decorrelation techniques in algorithmic trading.
- Develop and maintain high-quality code and documentation, adhering to best practices in unit testing, code style, exception handling, and user-friendly error handling across different engineering projects.
- Adopt a systematic approach to data analysis by focusing on specific metrics generated by tests on various data slices, improving the stability of performance and predictive capacity across multiple applications.
- Develop and apply professional validation procedures to minimize overfitting, emphasizing a systematic approach rather than solely focusing on signal analysis and hypothesis testing.
The delivery of the course will happen in 4 phases:
- Phase I: Introductory lectures (10%),
- Phase II: Research Infrastructure phase (60%),
- Phase III: Research phase (20%),
- Phase IV: Execution phase (10%).
In Phase I, short, condensed lectures will be delivered, clarifying main concepts. The topics covered in Phase I will be the following:
Introduction to Algorithmic Trading
- Overview of financial markets and how trading systems generate profits
- Types of orders, bid and ask spread, long and short positions
- Trading entries and exits, trading costs, liquidity and volatility
- The order book and the matching engine, market microstructure
- Overview of different instrument types
- Principles of evidence-based technical analysis
Choosing Instruments and Periods without Directional Bias
- Optimization spaces, data mining
- Robustness versus specificity, overfitting and underfitting
- Model fitness expectancy
- Capturing alpha and testing trading ideas from academic papers, books, and magazines
- Types of signals and strategies (mean reverting, momentum, breakouts, delta neutral, etc.)
- Characteristics of signals (stability, hold time, capacity, etc.)
- Technical indicators, data types (fundamentals, economic data, price data, alternative data)
- Data Management
- Time series databases, tick data, OHLC, volume, resampling
- Gaps in data, time zones, sessions
- Specifics of different instruments (stock splits, fragmented FX, biases of indices, contract expiry for futures…)
- Assumptions (buys on the ask, sells on the bid, OHLC vs. tick, capacity, latency, costs, etc.)
- API-s (FIX & Others)
- Basic Python execution using FIX API libraries
- Paper trading
- Order Routing & Execution Management
- Position Sizing
- Separating alpha from sizing
- Martingale (avoid), fixed fractional, compounding, others
- Turnoff Mechanisms
- Exposure management
- Decorrelation and portfolio dynamics (MPT)
- Unit tests,
- PEP8, PEP20
- Exception handling
- User-friendly error handling
- Comments, docstrings, documentation
In the project implementation phases support and oversight will be given to students in Q&A sessions.