板情報の可視化(等高線)

板情報の可視化(等高線)

注意

ToDo: 解説を書く

import pandas as pd
import plotly.graph_objects as go
df = pd.read_pickle("btcusd_2020-07-08.pickle")
last_df = df.iloc[-10000:, :].copy()
last_df.head()
price size timestamp side
2020-07-08 23:51:30 9442.40 0.300000 2020-07-08 23:51:30 bid
2020-07-08 23:51:30 9442.39 4.030000 2020-07-08 23:51:30 bid
2020-07-08 23:51:30 9442.28 0.057611 2020-07-08 23:51:30 bid
2020-07-08 23:51:30 9440.47 0.063543 2020-07-08 23:51:30 bid
2020-07-08 23:51:30 9440.46 0.050000 2020-07-08 23:51:30 bid
last_df.loc[:, "size_side"] = last_df.loc[:, "size"] * last_df.loc[:, "side"].replace(
    "ask", 1
).replace("bid", -1)
last_df.tail()
price size timestamp side size_side
2020-07-08 23:59:59 9435.04 0.050000 2020-07-08 23:59:59 bid -0.050000
2020-07-08 23:59:59 9435.26 0.139661 2020-07-08 23:59:59 bid -0.139661
2020-07-08 23:59:59 9435.27 17.052425 2020-07-08 23:59:59 bid -17.052425
2020-07-08 23:59:59 9440.61 1.197847 2020-07-08 23:59:59 ask 1.197847
2020-07-08 23:59:59 9440.63 0.393151 2020-07-08 23:59:59 ask 0.393151
last_df.loc[:, "price_int"] = last_df.loc[:, "price"].round().astype(int)
last_df.head()
price size timestamp side size_side price_int
2020-07-08 23:51:30 9442.40 0.300000 2020-07-08 23:51:30 bid -0.300000 9442
2020-07-08 23:51:30 9442.39 4.030000 2020-07-08 23:51:30 bid -4.030000 9442
2020-07-08 23:51:30 9442.28 0.057611 2020-07-08 23:51:30 bid -0.057611 9442
2020-07-08 23:51:30 9440.47 0.063543 2020-07-08 23:51:30 bid -0.063543 9440
2020-07-08 23:51:30 9440.46 0.050000 2020-07-08 23:51:30 bid -0.050000 9440
pivot_df = pd.pivot_table(
    last_df, index="price_int", columns="timestamp", values="size_side"
)
pivot_df.head()
timestamp 2020-07-08 23:51:30 2020-07-08 23:51:31 2020-07-08 23:51:32 2020-07-08 23:51:33 2020-07-08 23:51:34 2020-07-08 23:51:35 2020-07-08 23:51:36 2020-07-08 23:51:37 2020-07-08 23:51:38 2020-07-08 23:51:39 ... 2020-07-08 23:59:50 2020-07-08 23:59:51 2020-07-08 23:59:52 2020-07-08 23:59:53 2020-07-08 23:59:54 2020-07-08 23:59:55 2020-07-08 23:59:56 2020-07-08 23:59:57 2020-07-08 23:59:58 2020-07-08 23:59:59
price_int
9432 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9433 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9434 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... -0.555000 NaN NaN NaN NaN NaN -0.379000 -0.379000 -0.253842 -0.379000
9435 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... -1.447386 -1.353769 -1.336357 -1.35653 -1.361585 -1.344857 -1.602103 -1.335915 -1.491190 -1.425335
9436 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 500 columns

fig = go.Figure(
    data=go.Contour(z=pivot_df.values, x=pivot_df.columns, y=pivot_df.index)
)
fig.show()