A 2017 time capsule: predicting Bitcoin with Keras and Python 2.7
Student project compares LSTM, GRU, and 1D CNN on five-minute Poloniex tick data, finds deep learning barely beats linear regression.

What it does
Trains LSTM, GRU, and 1D CNN models in Keras on 256-step windows of Bitcoin price data (five-minute ticks from Poloniex) to predict the next 16 steps—about 80 minutes ahead. The repo includes data collection notebooks, model scripts, and plotted validation results. It was built as a final-year project and the README frames it explicitly as a learning exercise.
The interesting bit
The results table is admirably honest: the best LSTM barely edges out a simple lag baseline and linear regression on test loss, and the author flags a likely bug in the 4-layer CNN that explodes validation loss to 12 million. That transparency is rarer than the “state-of-art” claim in the introduction suggests.
Key highlights
- Three model architectures: LSTM, GRU, and 1D CNN with configurable layers and activations
- Data pipeline from Poloniex → h5py via Jupyter notebooks (DataCollection.ipynb, PastSampler.ipynb)
- MinMax-scaled inputs, MSE loss, 100 training epochs per experiment
- Leaky ReLU consistently outperforms plain ReLU across architectures
- CNN trains fast (2 sec/epoch on GPU) but captures local temporal patterns less effectively than recurrent models
Caveats
- Frozen in 2017: requires Python 2.7, TensorFlow 1.2.0, and Keras 2.1.1—reproducing this today is archaeology, not engineering
- The “state-of-art” framing in the README is aspirational; the results show marginal improvement over trivial baselines
- No code for the regularization update mentioned at the bottom—only a notebook name, no file
Verdict
Worth a quick skim for students building their first financial time-series project and wanting a template for honest benchmarking. Anyone seeking profitable crypto prediction should look elsewhere—though they probably already knew that.