CS-7646 | Machine Learning for Trading (ML4T) | Summer 2022
August marks the end of my second semester at Georgia Tech. I decided to take CS-7646 Machine Learning for Trading (ML4T) for my Summer 2022 course due to it’s positive reviews and to get experience with Machine Learning. The course was created by Professor Tucker Balch, and instructed by Professor David Joyner.
CS-7646 is a mix of lessons related to investment trading topics, as well as machine learning algorithms. The course is project heavy, and includes a multiple choice midterm and final. Since summer is a condensed semester, a project was due every week, which put constant strain on completing the assignments on time. Overall, the topics of finance and how we could use machine learning concepts to determine investment strategies were interesting and were good primers to introductory topics in both fields.
Finance topics include stock market analysis (technical analysis vs fundamental analysis), market indicator evaluations(bollinger bands, simple moving average, rate of change, etc), market theory and concepts (efficient market hypothesis), and more. Machine Learning topics included linear regression and categorical learners, optimizing, implementing, and evaluation of learners such as decision trees, random forests, and bagging.
The course projects were written in Python, with heavy use of NumPy and Pandas libraries to deal with large datasets of financial stock data.
Below are brief summaries of the 8 projects we completed in this course.
Projects
Project 1: Martingale
Conduct probabilistic experiments and write code to analyze the Martingale betting strategy involving an American Roulette Wheel.
Project 2: Optimize Something
Use python to optimize a theoretical financial investment portfolio. Find the most optimal allocation of investments to maximize gains, and evaluate portfolio metrics including mean, standard deviation, cumulative returns, sharpe ratio, and more.
Project 3: Assess Learners
Implement and evaluate a decision tree learner, random tree learner, and ensemble learner using bagging.
Project 4: Defeat Learners
Create a dataset that is optimized for linear regression learner, and a decision tree learner.
Project 5: Marketsim
Simulate market trades and return portfolio values and metrics over time.
Project 6: Manual Strategy
Create a strategy manually without learners that would give an optimally max portfolio returns. Develop and research technical indicators that can be used along with a learner to make buying decisions.
Project 7: Q Learning Robot
Implement a model free reinforcement learning algorithm called Q-Learning. Implement a Q-Learner with model based Dyna Q to solve a robot navigation problem.
Project 8: Strategy Learner
Use indicators along with learner of choice to create a trading strategy, and evaluate portfolio performance against a manually traded strategy.
Summary
In summary, ML4T at times felt like a grind, with a project or test due every week. Some projects had a Report component which added additional time outside of coding. In terms of learning opportunities, I came out of the class with financial and machine learning literacy I did not have going into the class. I have a stronger understanding of common market terms, and an introductory understanding of regression and categorical learners, how to implement them, and how to evaluate their performance. I do not feel as if I can implement my current knowledge of the stock market into a productive strategy that would maximize gains, as learning these new topics exposed the nuances necessary to understand the market and the multitude of indicators investors track in order to make business decisions.
I am happy to have had more opportunities to practice coding in Python, and using NumPy and Pandas.