-
Book Overview & Buying
-
Table Of Contents
Python for Finance Cookbook - Second Edition
By :
The last data source we will cover is dedicated purely to cryptocurrencies. CoinGecko is a popular data vendor and crypto-tracking website, on which you can find real-time exchange rates, historical data, information about exchanges, upcoming events, trading volumes, and much more.
We can list a few of the advantages of CoinGecko:
In this recipe, we download Bitcoin’s OHLC from the last 14 days.
Execute the following steps to download data from CoinGecko:
from pycoingecko import CoinGeckoAPI
from datetime import datetime
import pandas as pd
cg = CoinGeckoAPI()
ohlc = cg.get_coin_ohlc_by_id(
id="bitcoin", vs_currency="usd", days="14"
)
ohlc_df = pd.DataFrame(ohlc)
ohlc_df.columns = ["date", "open", "high", "low", "close"]
ohlc_df["date"] = pd.to_datetime(ohlc_df["date"], unit="ms")
ohlc_df
Running the snippet above returns the following DataFrame:

Figure 1.14: Preview of the DataFrame containing the requested Bitcoin prices
In the preceding table, we can see that we have obtained the requested 14 days of data, sampled every 4 hours.
After importing the libraries, we instantiated the CoinGeckoAPI object. Then, using its get_coin_ohlc_by_id method we downloaded the last 14 days’ worth of BTC/USD exchange rates. It is worth mentioning there are some limitations of the API:
1/7/14/30/90/180/365/max.The output of the get_coin_ohlc_by_id is a list of lists, which we can convert into a pandas DataFrame. We had to manually create the column names, as they were not provided by the API.
We have seen that getting the OHLC prices can be a bit more difficult using the CoinGecko API as compared to the other vendors. However, CoinGecko has additional interesting information we can download using its API. In this section, we show a few possibilities.
We can use CoinGecko to acquire the top 7 trending coins—the ranking is based on the number of searches on CoinGecko within the last 24 hours. While downloading this information, we also get the coins’ symbols, their market capitalization ranking, and the latest price in BTC:
trending_coins = cg.get_search_trending()
(
pd.DataFrame([coin["item"] for coin in trending_coins["coins"]])
.drop(columns=["thumb", "small", "large"])
)
Using the snippet above, we obtain the following DataFrame:

Figure 1.15: Preview of the DataFrame containing the 7 trending coins and some information about them
We can also extract current crypto prices in various currencies:
cg.get_price(ids="bitcoin", vs_currencies="usd")
Running the snippet above returns Bitcoin’s real-time price:
{'bitcoin': {'usd': 47312}}
In the accompanying notebook, we present a few more functionalities of pycoingecko, such as getting the crypto price in different currencies than USD, downloading the entire list of coins supported on CoinGecko (over 9,000 coins), getting each coin’s detailed market data (market capitalization, 24h volume, the all-time high, and so on), and loading the list of the most popular exchanges.
You can find the documentation of the pycoingecko library here: https://github.com/man-c/pycoingecko.