Archived and not actively maintained. An exploratory analysis of cryptocurrency market capitalisation and volatility, written in January 2021 as an early learning exercise, following the DataCamp guided project of the same name.
The analysis is deliberately small: it loads one point-in-time CoinMarketCap snapshot, filters it, and produces four plots. There is no modelling, no time series, and no forecasting.
Two public CoinMarketCap snapshots, taken through the (then public) CoinMarketCap API. Both sit either side of the December 2017 / January 2018 crypto peak, which is what makes them worth keeping: the December file captures the market at close to its most speculative, with over a thousand listed coins.
| File | Snapshot date | Rows | Columns | Used by the notebook |
|---|---|---|---|---|
datasets/coinmarketcap_06122017.csv |
6 December 2017 | 1,326 | 16 | Yes, all of it |
datasets/coinmarketcap_06012018.csv |
6 January 2018 | 100 (top 100 by rank) | 16 | No |
Columns are id, name, symbol, rank, price_usd, price_btc, market_cap_usd, 24h_volume_usd, available_supply, total_supply, max_supply, percent_change_1h, percent_change_24h, percent_change_7d, last_updated, and an unnamed index column.
The January 2018 file is included but never read by the notebook. It is kept because it is part of the original dataset, not because the analysis uses it.
notebook.ipynb, in run order:
- Loads the December 2017 snapshot and selects
idandmarket_cap_usd. 1,326 coins are listed; only 1,031 have a market capitalisation. - Filters to the 1,031 coins with a market capitalisation above zero.
- Plots the top 10 coins as a percentage of total listed market capitalisation.
- Redraws the same bar chart on a log scale, with colours grouping related coins (Bitcoin forks, smart-contract chains, non-minable coins), because Bitcoin's share flattens everything else on a linear axis.
- Selects
percent_change_24handpercent_change_7d, drops missing rows (1,239 coins remain) and sorts by 24-hour change. - Plots the 10 largest 24-hour losers and gainers side by side.
- Repeats the same visualisation for the 7-day change.
- Filters to coins above a 10 billion USD capitalisation.
- Counts coins in three size bands and plots them.
All figures are from the 6 December 2017 snapshot.
- Bitcoin held roughly 57% of the total listed market capitalisation, with Ethereum second at about 12% and Bitcoin Cash third at about 7%. The remaining thousand-plus coins shared under a quarter of the market between them.
- Only four coins were above 10 billion USD: Bitcoin, Ethereum, Bitcoin Cash and IOTA.
- Short-run volatility was extreme across the long tail. Over 24 hours the range ran from about -96% (flappycoin) to about +833% (fedoracoin); over 7 days, from about -100% (royalties) to about +3,361% (bitzeny). None of the coins at either extreme were large ones.
- Most coins were tiny. Of the 1,031 with a market capitalisation, 39 were above 300 million USD, 96 between 50 and 300 million, and 896 below 50 million.
The overall picture is a market heavily concentrated in a handful of coins, with a very long tail of small, highly volatile ones. That is what the data shows and the notebook does not attempt to explain why.
The notebook reads the CSVs from datasets/ relative to the repository root, and makes no network calls.
pip install -r requirements.txt
jupyter notebook notebook.ipynbThe committed outputs were produced on Python 3.6 in 2021. Re-running on a current pandas and matplotlib should reproduce the same numbers, though plot styling may differ.
| Path | Description |
|---|---|
notebook.ipynb |
The analysis, with outputs, using pandas and matplotlib |
datasets/ |
The two CoinMarketCap snapshots |
requirements.txt |
Python dependencies |
This is a point-in-time snapshot from late 2017 and says nothing about current markets. Nothing here is investment advice.
MIT, see LICENSE.