# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import plotly
import plotly.graph_objs as go
plotly.offline.init_notebook_mode(connected=False)
TAKER_RATE = 0.075 / 100
MAKER_RATE = -0.025 / 100
# BTC price (1k to 10k USD)
df = pd.DataFrame({"price" : list(range(1000, 10000, 50))})
# Break-Even Price Range
# price_range = (rate1 + rate2) / (1 - rate1) * price
# Taker & Taker
rate1 = TAKER_RATE
rate2 = TAKER_RATE
coef = (rate1 + rate2) / (1 - rate1)
df["TT"] = round(df["price"] * coef, 2)
# Taker & Maker
rate1 = TAKER_RATE
rate2 = MAKER_RATE
coef = (rate1 + rate2) / (1 - rate1)
df["TM"] = round(df["price"] * coef, 2)
# Maker & Taker
rate1 = MAKER_RATE
rate2 = TAKER_RATE
coef = (rate1 + rate2) / (1 - rate1)
df["MT"] = round(df["price"] * coef, 2)
# Maker & Maker
rate1 = MAKER_RATE
rate2 = MAKER_RATE
coef = (rate1 + rate2) / (1 - rate1)
df["MM"] = round(df["price"] * coef, 2)
data = [
go.Scatter(x=df["price"], y=df["TT"], name="Taker & Taker"),
go.Scatter(x=df["price"], y=df["TM"], name="Taker & Maker"),
go.Scatter(x=df["price"], y=df["MT"], name="Maker & Taker"),
go.Scatter(x=df["price"], y=df["MM"], name="Maker & Maker"),
]
layout = go.Layout(
title="BitMEX Trade Fee Break-Even Line",
legend={"x":0, "y":1},
xaxis={"title":"BTC Price (USD)"},
yaxis={"title":"Price Range (USD)"},
)
fig = go.Figure(data=data, layout=layout)
plotly.offline.iplot(fig)