UNIT CODE: ACFIM0015
UNIT NAME: Algorithmic Trading
DEADLINE: Monday 28 April 2025 before 13:00 BST
SUBMIT TO BLACKBOARD UNIT SUBMISSION POINT
Overview
• Your summative coursework represents 100% of the final mark for the unit.
• The coursework is in the form of a written report, in the style of an academic research paper.
• Your report should describe the design, implementation, and testing/evaluation of an algorithmic trading system. The evaluation will require you to run a suitably large number of computer simulation experiments which are likely to take many hours (or days) of continuous computation: plan your time accordingly and do not leave this assessment to the last minute!
• Penalties will apply if the coursework is submitted late.
• Penalties will apply if the coursework is submitted in a format other than the one specified.
• The coursework is an individual piece of work – you should work on this yourself and not as a group. You will be required to make a plagiarism statement and your submission will be tested for originality.
• Use of AI text generators such as ChatGPT is prohibited. The text of your report should be written by you, in your own words. If we find that you have used ChatGPT, that will be treated with the same seriousness/severity as if you had been found guilty of plagiarism.
Coursework Requirement
Eight-page research paper on algorithmic trading strategies
The Brief:
For this coursework submission you will be given pre-existing Python code for an algorithmic trading system known as PT2, which operates as an intra-day proprietary trader (often abbreviated to a “prop trader”) of a cryptocurrency, i.e. a trader that starts each day with a sum of money and then buys and sells cryptocoins on a financial exchange, trading for its own profit, rather than on behalf of a third-party client, and at the end of the day liquidates any holdings into cash. Your assignment for this coursework is to modify, and potentially adapt, extend, or replace, the code for PT2 in an attempt at improving its performance relative to another prop trader algorithm known as PT1, which you will also be given the Python code for. You should compare the performance of PT1 and your version of PT2 in a market simulator where the dynamics of the price for the cryptocoin is modelled on time-series data from one or more cryptocurrencies. For this coursework you should use the Bristol Stock Exchange (BSE) market simulator, which is freely available on GitHub.
BSE is a minimal simulation of the core mechanism within most technology-enabled financial markets: the Limit Order Book (LOB) and its associated Matching Engine. BSE is written in Python, and includes code for six different types of algorithmic trading “robots” called Giveaway, ZIC, Shaver, Sniper, ZIP, and PRZI, each of which trades according to some simple algorithm, and several of which were introduced in Lecture 3. ZIC is an implementation of the Zero-Intelligence Constrained strategy introduced by Gode & Sunder (1993); Sniper is inspired by, but not identical to, Kaplan’s Sniper (Rust et al., 1992). Giveaway, Shaver, ZIP, and PRZI are all by Cliff (Cliff, 1997, 2018, 2023). In keeping with the tradition for trading algorithms being referred to by a short sequence of letters reminiscent of a stock-market ticker-code, within BSE the Giveaway algorithm is referred to as GVWY, and the Shaver algorithm is referred to as SHVR.
The source-code for BSE (a single file, BSE.py) is freely available under the MIT Open Source License, and can be downloaded from the GitHub repository: https://github.com/davecliff/BristolStockExchange.
Documentation for BSE is in the repository’s Wiki: https://github.com/davecliff/BristolStockExchange/wiki.
In the Python code for BSE you will see that PT2 is a verbatim clone of the simple prop trader algorithm called PT1. For this assessment, you should alter/extend/replace the PT2 code and then explore the behaviour of your new PT2 trader by running a series of sensibly structured comparative experiments, and then analyse the results from those experiments using appropriate visualization and statistical methods. You may want to adapt and extend the existing PT2 algorithm code, or you might want to instead implement someone else’s trading algorithm, such as “GD” by Gjerstad & Dickhaut (1998), which, like ZIP, was demonstrated by Das et al. (2001) to outperform human traders, or one of its extensions such as MGD (Tesauro & Das, 2001) or GDX (Tesauro & Bredin, 2002) – see also (De Luca & D. Cliff, 2011); or you may want to try your hand at developing your own novel trading algorithm from scratch – maybe involving contemporary machine learning methods such as XGBoost (Chen & Guestrin, 2016; Chen, 2023), or LSTM Deep Learning (Hochreiter & Schmidhuber, 1997; Wray, Meades, & Cliff, 2020; Cismaru 2024).
Finally, you should write a brief report in the style of an academic research paper, as if you were going to submit it to an international conference for peer-review. It should clearly explain how your PT2 trader robot works, the design of the experiments to evaluate the performance of PT2, their outcomes, and your analysis of the results and whatever conclusions you draw in response to your analysis. You are free to choose how to structure your paper, but it should at least include a clear introduction and explanation of: 1) your PT2 algorithm, citing any publications that influenced your design; 2) your choice of performance evaluation metric; 3) your design of experiments to evaluate PT2; 4) statistical analysis of the performance of your PT2; and 5) the conclusions you draw from the analysis of your experiment data.
Your report should be formatted according to the Springer Lecture Notes in Computer Science (LNCS) conference-proceedings format, details of which (including templates for Microsoft Word and for LaTeX) are available here:
https://www.springer.com/gp/computer-science/lncs/conference-proceedings-guidelines
The target word-count for your report is approximately 2000 words of text, but the hard length-limit is that it should be no more than eight pages in the required format (specified below) – in this format an entire page full of written English is about 500 words, so 2000 words of pure text would be only four pages, but to do a good job of this you will need to have figures/graphs/tables etc as well as the written narrative. should be no longer than eight pages in LNCS format, including all figures, references, equations, tables, and any snippets of code or pseudocode that you include to explain your PT2 algorithm. The full code for your Trader_PT2 algorithm should then be included as an appendix. The additional pages for appendices showing your code are not counted in the 8-page limit. Your paper That is, you can write eight pages of content explaining your work, and then the content on Page 9 and onwards should be just the code for your PT2, along with details of any edits you made elsewhere in BSE.py.