{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# G-Research Crypto Forecasting \n\nQuick investigation how BTC data in the data set compares to various crypto instruments on Binance.\n\nWe compare the randomly selected data points on {sample_date}.\n","metadata":{}},{"cell_type":"code","source":"import pandas as pd\n\nsample_date = \"2021-06-01\"\ntrain = pd.read_csv(\"/kaggle/input/g-research-crypto-forecasting/train.csv\")\n# train = pd.read_csv(\"/kaggle/input/g-research-crypto-forecasting/supplemental_train.csv\")\n\ntrain = train.query(\"Asset_ID == 1\")\ntrain[\"DateTime\"] = pd.to_datetime(train[\"timestamp\"], unit=\"s\")\n\ntrain.query(f\"DateTime == '{sample_date} 00:01'\")\n","metadata":{"execution":{"iopub.status.busy":"2022-01-31T08:33:52.487076Z","iopub.execute_input":"2022-01-31T08:33:52.487361Z","iopub.status.idle":"2022-01-31T08:34:39.097813Z","shell.execute_reply.started":"2022-01-31T08:33:52.487332Z","shell.execute_reply":"2022-01-31T08:34:39.096966Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# coin margined derivatives\nurl = f\"https://data.binance.vision/data/futures/cm/daily/klines/BTCUSD_PERP/1m/BTCUSD_PERP-1m-{sample_date}.zip\"\n# usd margined derivatives\nurl = f\"https://data.binance.vision/data/futures/um/daily/klines/BTCBUSD/1m/BTCBUSD-1m-{sample_date}.zip\"\nurl = f\"https://data.binance.vision/data/futures/um/daily/klines/BTCUSDT/1m/BTCUSDT-1m-{sample_date}.zip\"\n\nbinance = pd.read_csv(\n    url,\n    skiprows=1,\n    names=[\"Open Time\", \"Open\", \"High\", \"Low\", \"Close\", \"Volume\", \"Close Time\", \"Quote asset volume\", \"Number of trades\", \"Taker buy base asset volume\", \"Taker buy quote asset volume\", \"Ignore\"]\n)\nbinance[\"DateTime\"] = pd.to_datetime(binance[\"Open Time\"], unit=\"ms\")\n# if quote asset volume is in USD, divide by price for BTC volume\nbinance[\"BaseVolume\"] = binance[\"Quote asset volume\"] / binance[\"Close\"]\n\nbinance.query(f\"DateTime == '{sample_date} 00:01:00'\")\n","metadata":{"execution":{"iopub.status.busy":"2022-01-31T08:32:20.501104Z","iopub.execute_input":"2022-01-31T08:32:20.501761Z","iopub.status.idle":"2022-01-31T08:32:21.348342Z","shell.execute_reply.started":"2022-01-31T08:32:20.501716Z","shell.execute_reply":"2022-01-31T08:32:21.347532Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# spot\nurl = f\"https://data.binance.vision/data/spot/daily/klines/BTCBUSD/1m/BTCBUSD-1m-{sample_date}.zip\"\nurl = f\"https://data.binance.vision/data/spot/daily/klines/BTCUSDT/1m/BTCUSDT-1m-{sample_date}.zip\"\n\nbinance_spot = pd.read_csv(\n    url,\n    skiprows=1,\n    names=[\"Open Time\", \"Open\", \"High\", \"Low\", \"Close\", \"Volume\", \"Close Time\", \"Quote asset volume\", \"Number of trades\", \"Taker buy base asset volume\", \"Taker buy quote asset volume\", \"Ignore\"]\n)\nbinance_spot[\"DateTime\"] = pd.to_datetime(binance_spot[\"Open Time\"], unit=\"ms\")\n# if quote asset volume is in USD, divide by price for BTC volume\nbinance_spot[\"BaseVolume\"] = binance_spot[\"Quote asset volume\"] / binance_spot[\"Close\"]\n\nbinance_spot.query(f\"DateTime == '{sample_date} 00:01:00'\")\n","metadata":{"execution":{"iopub.status.busy":"2022-01-31T08:33:02.728275Z","iopub.execute_input":"2022-01-31T08:33:02.728720Z","iopub.status.idle":"2022-01-31T08:33:03.323397Z","shell.execute_reply.started":"2022-01-31T08:33:02.728684Z","shell.execute_reply":"2022-01-31T08:33:03.322551Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import holoviews as hv\nfrom holoviews import opts\nhv.extension(\"bokeh\")\nopts.defaults(opts.Curve(tools=[\"hover\"]))\n\ntrain = train.query(\"DateTime >= '2021-06-01 00:00' and DateTime < '2021-06-02 00:00'\")\nhv.Curve((binance_spot.DateTime, binance_spot.BaseVolume), label=\"Binance Spot\") * \\\nhv.Curve((binance.DateTime, binance.BaseVolume), label=\"Binance Futures\") * \\\nhv.Curve((train.DateTime, train.Volume), label=\"Competition Data\")\n","metadata":{"execution":{"iopub.status.busy":"2022-01-31T08:35:06.691312Z","iopub.execute_input":"2022-01-31T08:35:06.691916Z","iopub.status.idle":"2022-01-31T08:35:09.669729Z","shell.execute_reply.started":"2022-01-31T08:35:06.691877Z","shell.execute_reply":"2022-01-31T08:35:09.669129Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Conclusion\n\nIt looks like the competition data trading volumes are mid way between Binance spot and futures volumes.\n\nThere do not appear to be any exact matches with different USD pairs.\n\nMy assumption would be that the competition trading volumes are composed of average traded volumes across multiple exchanges as apposed to a cumulative sum.\n","metadata":{}}]}