Trading Systems Design

Title Trading Systems Design (51026)
Quarter Summer 2017
Instructor TBD
Website

Syllabus

Please note: The syllabus below is from 2016/17 and subject to change.

This class teaches the theory and practice of how to design a trading system.

Since 1998, after the U.S. Securities and Exchange Commission authorized electronic exchanges, the financial world has been using computer science extensively. The High Frequency Trading became a main actor of the main exchanges across the world.

During this course, we will learn how to create a reliable high-frequency trading system.

 

Course Organization

 

This course meets once a week for lectures and once a week for an optional TA session. Even if not recorded, attendance in class is strongly encouraged. Most of the coursework revolves around 1 programming assignment, as the primary focus will be for students to code. There will be one presentation (Week 5) and one Final Exam (Week 10). The course calendar, including the contents of each lecture is shown at the end of this page.

On Week 11, volunteers will present a topic on trading systems (the grade will provide extra points to your homework assignment).

 

The final grade will be based on the following:

Written assignments: 15%

Programming assignments: 50%

Midterm Exam (project presentation): 10%

Final Exam: 25%

 

 

Late Submission

Prorated points will be applied according to the number of late days.

1 day late: 75% of the grade will be considered.

2 days late: 50% of the grade will be considered.

3 days late: 25% of the grade will be considered.

After 3 days, no assignment will be accepted.

 

 

Exam

We will be giving a final exam at Week 10. The final exam is worth 25% of the grade.

The final exam will be a closed-book written exam on the whole content of the class.

The questions of this exam will be on the content of the lecture and the compiler project.

 

Written Assignments

We will assign simple written problems at the end of each lecture that will be due the following week. The goal of these assignments is to make you understand the course better. Some content can be hard to appreciate in class, and we encourage you to work them at home the same day. They will constitute 15% of the course grade.

 

 

Session 1 - Introduction to finance and trading system.

During this session, we will give a brief introduction to finance and we will talk about:

             Equities (common stocks, dividends, warrants , class of stock, ADRs), Debts (Fixed income, Corporate/Municipal Bonds)

             Options.

             Financial data and their Properties (asset returns, bond yields, volatility)

             Market data / Evaluation of a trading system

             Position / PNL

Session 2 - Real-time operating system for trading system

We will talk about general trading system designs highlighting the following features:

 

             Operating system / Distributed system

             Message passing / Inter process communication

             Parallelism / Process Scheduling / Multi-thread Programming / Synchronization

 

Session 3 - Communication component: Market data gateways

Communication Protocol with Exchanges - Market Data Parser/Composer

 

Session 4 - Strategy components: Book building / Strategy

             Sorting algorithms for book building

             Strategy signal / Execution

             Different trading strategies

Session 5 - Order life cycle component: Order Manager

Order life cycle / order / trade / rejection / slippage

 

Session 6 - Compliance/Risk Components

We will talk about regulations / risks.

 

Session 7 - Trading Simulator / Back testing

We will talk about how to test a trading strategy.

 

Session 8 - Visualization / Viewer / GUI / Command and Control

 

Session 9 - Trading System Optimization

Network / Kernel Bypass / FPGA

 

 

 

Programming Assignment

We will assign a programming assignment over the course of the term. You can choose to work on the programming assignment alone, however, it is strongly recommended to work by group of 2 people. You will need to inform us of your choice by Week 2.

The goal of this assignment will be to make you create your own distributed system. It will constitute 50% of the course grade.

 

In this project, you will design, implement and test a trading system. You will need to present your work during the mid-term by Week 5. During this project, you will create a system capable to trade stocks with the following components:

             Book building

             Data collection

             Order Manager

             Gateways

             GUI Viewer

 

Academic Honesty and Plagiarism

https://studentmanual.uchicago.edu/Policies

 

If you use github (or another collaborative shared system), please protect your account with a password.

No students should share his work with other students (except within the same project group).

Prerequisites (Courses)

Core Programming

Prerequisites (Other)

Non-MPCS students need to complete a course request form.

Satisfies

Elective

Time

Saturday 10am-1pm

Location

Young 302