Final assignment for Spring 2019 Neural Networks course at Leiden University. We have developed a set of algorithms that apply machine learning techniques to publicly available S&P 500 stock data (see the relevant Kaggle site https://www.kaggle.com/camnugent/sandp500 for more details). The Gaussian mixture modelling algorithm is built upon the one made available from Oleg Gnedin's Computational Astrophysics course at the University of Michigan.