Trading & Finance

Trading since March 2023

I instantly knew it was something I would develop a deep interest in…

In March 2023 my father introduced me to investing and trading, I instantly felt a sense of possibility and excitement that I hadn’t felt for engineering. I became fascinated with trading strategies and began consuming lots of online content to learn as much as possible. I then turned to other resources, books and podcasts, from which I learned about trading psychology, derivatives, and technical analysis.

Since then I have managed a portfolio on Hargreaves Lansdown consisting of equities, index funds, and leveraged commodity ETNs for short term gains, using Trading 212 for its more intricate charting tools. I have created and implemented a mix of discretionary and systematic strategies of various time frames, with some long-term growth positions as well as capitalising on short term market rallies. In August 2025 I began trading Forex pairs on MetaTrader 5, which provides a more technically rigorous and fast-paced trading environment, as opposed to the longer term investment focus of HL, along with the possibility of implementing algorithmic trading.

Quantitative Trading Projects

Finding rule-based, systematic trading strategies that were simple, repeatable, and objective has been a great interest of mine. Whilst human discretion, biases, and emotions can get in the way of successful trading, a data-driven trading strategy can bypass all of these common pitfalls.

It all started when I noticed (by eye) some frequently repeating patterns on a certain commodity ETN, and I wanted to find a way to capitalise on this through a mean-reversion strategy. Just from looking at the charts, I could tell there was the opportunity for massive gains. To create a strategy, I wanted to find out some specific data about the ETN: essentially how many days on average it trends for, how long it takes to revert back to the mean, the percentage gap between the end of the trend and the mean, and the time between successive peaks/troughs. If I could work out the averages of these, then I could devise a strategy that incorporates this data so I have a better chance of entering and exiting at the correct times. For example, on the long side, if it, on average, trends down for 13 days, takes 6 days to revert back to the mean, and bottoms out at 15% below the mean, I could look at a down trend and compare to this data to make an informed assessment of when the trend is likely to end, then project the mean 6 days in advance and set my take profit at this point.

Initially, I collected this information by hand. Going back two years on the charts and putting this information into an Excel spreadsheet was a lengthy and inefficient process. Despite this, it worked and I was able to determine the mean, median, and mode of these values in Excel. I didn’t finish collecting all the data, since I was doing this as a side project during my third year at university where my workload was very high, so I parked this for a while until I thought…

There must be a better way of doing this…

And that’s where this all started.

Trading Strategy Back Testing Algorithms – Python

Using Python to create a program that can rapidly test a strategy for any given asset, in any time frame, over any time period is hugely beneficial as a trader. Over time I have massively improved my ability to transform a strategy idea into a functional backtesting framework, with fully tuneable input parameters and strategy performance metrics.

Below are some of the strategies I have created, in chronological order, showing the progression of my projects over time. They have increased in complexity as I have developed a greater understanding of Python and its capabilities.

Simple Momentum Strategy

Following a YouTube tutorial for my first ever algorithmic trading project, I learned how to import market data using the Yahoo Finance API into Python; how to extract this data and create basic indicators, such as moving averages; how to create trade entry and exit rules; how to log trade data; and how to print price data on a graph using matplotlib.

This taught me the absolute fundamentals, as well as refreshing my memory on Python syntax, whilst laying the groundwork for all my future projects to come.

Mean-Reversion using Williams % R

One day I was researching mean-reversion strategies when I came across the Williams % Range indicator. I instantly took a liking to it, gaining an understanding of how it’s derived and what it represents. Applying it to some charts, I found that it became a highly effective indicator for signalling potential price reversion, so a strategy idea was born and the very same day I got to replicating the strategy in Python.

The strategy relied on Bollinger Bands, Williams % R, and price action. The strategy aimed to take a long position whenever the Williams % R went below a certain threshold, then exit when it hit the middle Bollinger Band (the mean).

Forex – RSI Momentum Strategy

The basis for this strategy was to try to capture trends in prices in Forex pairs, getting into the market early using a fast-period RSI so that most of the trend could be captured and turned into profit. Since pairs could trend for multiple hours, entering one early on a 5-minute chart could resort in a very high risk/reward ratio. However, if markets were ranging this approach could be stopped out a lot. Initially I tried to implement this live on MetaTrader 5, but carrying out such a strategy manually is extremely difficult, and emotions can get in the way. I wanted to also know whether it was profitable in the first place or not. Whether the strategy had a positive return or not wasn’t important – if it did then I could implement the strategy as it was, if it had a negative return (i.e. lost money) I could reverse the positions and turn it into a winning strategy. Either way I would find out some extremely valuable information.

Forex – RSI Mean-Reversion Strategy

Having found that the previous trend-following strategy had a negative return on EUR/USD, amongst other pairs, I used this valuable information to build the exact same strategy, but with reversed positions. When the previous strategy would have taken a long position, this one would short, and vice-versa. It essentially used the same logic, but I had to invert the entry signals and the take profit and stop loss levels.

This strategy ended up showing great success on some currency pairs, however, it really shined when applied to cryptocurrencies, boasting around a 320-times-risk gain on Ethereum and slightly under 300 on the Bitcoin-USD pairing, over the course of the 2 month backtest.

Portfolio Monte-Carlo & Risk Modelling – Python

Time Series Analysis & Forecasting – Python

ARIMA Forecasting (AutoRegression, Integration, Moving Average)

GARCH Volatility Modelling