Commit
·
f31132a
1
Parent(s):
dbff7e5
new graph with non agents
Browse files- app.py +1 -0
- tabs/staking.py +2 -1
- tabs/trades.py +80 -0
app.py
CHANGED
|
@@ -10,6 +10,7 @@ from tabs.trades import (
|
|
| 10 |
get_overall_winning_trades,
|
| 11 |
get_overall_winning_by_market_trades,
|
| 12 |
integrated_plot_trades_per_market_by_week,
|
|
|
|
| 13 |
integrated_plot_winning_trades_per_market_by_week,
|
| 14 |
)
|
| 15 |
from tabs.staking import plot_staking_trades_per_market_by_week
|
|
|
|
| 10 |
get_overall_winning_trades,
|
| 11 |
get_overall_winning_by_market_trades,
|
| 12 |
integrated_plot_trades_per_market_by_week,
|
| 13 |
+
integrated_plot_trades_per_market_by_week_v2,
|
| 14 |
integrated_plot_winning_trades_per_market_by_week,
|
| 15 |
)
|
| 16 |
from tabs.staking import plot_staking_trades_per_market_by_week
|
tabs/staking.py
CHANGED
|
@@ -35,10 +35,11 @@ def plot_staking_trades_per_market_by_week(
|
|
| 35 |
all_filtered_trades = all_filtered_trades.sort_values(
|
| 36 |
by="creation_timestamp", ascending=True
|
| 37 |
)
|
| 38 |
-
|
| 39 |
all_filtered_trades = all_filtered_trades.loc[
|
| 40 |
all_filtered_trades["market_creator"] == market_creator
|
| 41 |
]
|
|
|
|
| 42 |
if market_creator != "all":
|
| 43 |
all_filtered_trades["staking"] = all_filtered_trades["staking"].replace(
|
| 44 |
{market_creator: "staking_traders", "non_agent": "non_agent_traders"}
|
|
|
|
| 35 |
all_filtered_trades = all_filtered_trades.sort_values(
|
| 36 |
by="creation_timestamp", ascending=True
|
| 37 |
)
|
| 38 |
+
print(f"filtering by market creator = {market_creator}")
|
| 39 |
all_filtered_trades = all_filtered_trades.loc[
|
| 40 |
all_filtered_trades["market_creator"] == market_creator
|
| 41 |
]
|
| 42 |
+
print(all_filtered_trades.market_creator.value_counts())
|
| 43 |
if market_creator != "all":
|
| 44 |
all_filtered_trades["staking"] = all_filtered_trades["staking"].replace(
|
| 45 |
{market_creator: "staking_traders", "non_agent": "non_agent_traders"}
|
tabs/trades.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
import pandas as pd
|
| 3 |
import plotly.express as px
|
|
|
|
| 4 |
|
| 5 |
|
| 6 |
HEIGHT = 400
|
|
@@ -124,6 +125,85 @@ def integrated_plot_trades_per_market_by_week(trades_df: pd.DataFrame) -> gr.Plo
|
|
| 124 |
return gr.Plot(value=fig)
|
| 125 |
|
| 126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
def integrated_plot_winning_trades_per_market_by_week(
|
| 128 |
trades_df: pd.DataFrame,
|
| 129 |
) -> gr.Plot:
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
import pandas as pd
|
| 3 |
import plotly.express as px
|
| 4 |
+
import plotly.graph_objects as go
|
| 5 |
|
| 6 |
|
| 7 |
HEIGHT = 400
|
|
|
|
| 125 |
return gr.Plot(value=fig)
|
| 126 |
|
| 127 |
|
| 128 |
+
def integrated_plot_trades_per_market_by_week_v2(trades_df: pd.DataFrame) -> gr.Plot:
|
| 129 |
+
# adding the total
|
| 130 |
+
trades_all = trades_df.copy(deep=True)
|
| 131 |
+
trades_all["market_creator"] = "all"
|
| 132 |
+
|
| 133 |
+
# merging both dataframes
|
| 134 |
+
all_filtered_trades = pd.concat([trades_df, trades_all], ignore_index=True)
|
| 135 |
+
all_filtered_trades = all_filtered_trades.sort_values(
|
| 136 |
+
by="creation_timestamp", ascending=True
|
| 137 |
+
)
|
| 138 |
+
|
| 139 |
+
# Create binary staking category
|
| 140 |
+
all_filtered_trades["staking_type"] = all_filtered_trades["staking"].apply(
|
| 141 |
+
lambda x: "non_agent" if x == "non_agent" else "agent"
|
| 142 |
+
)
|
| 143 |
+
|
| 144 |
+
# Group by week, market_creator and staking_type
|
| 145 |
+
trades = (
|
| 146 |
+
all_filtered_trades.groupby(
|
| 147 |
+
["month_year_week", "market_creator", "staking_type"], sort=False
|
| 148 |
+
)
|
| 149 |
+
.size()
|
| 150 |
+
.reset_index(name="trades")
|
| 151 |
+
)
|
| 152 |
+
|
| 153 |
+
# category_orders={"market_creator": ["pearl", "quickstart", "all"]},
|
| 154 |
+
|
| 155 |
+
# Combine the traces
|
| 156 |
+
final_traces = []
|
| 157 |
+
market_colors = {"pearl": "purple", "quickstart": "goldenrod", "all": "darkgreen"}
|
| 158 |
+
# First add 'agent' traces
|
| 159 |
+
for market in ["pearl", "quickstart", "all"]:
|
| 160 |
+
market_data = trades[trades["market_creator"] == market]
|
| 161 |
+
agent_data = market_data[market_data["staking_type"] == "agent"]
|
| 162 |
+
|
| 163 |
+
trace = go.Bar(
|
| 164 |
+
x=agent_data["month_year_week"],
|
| 165 |
+
y=agent_data["trades"],
|
| 166 |
+
name=f"{market}-agent",
|
| 167 |
+
marker_color=market_colors[market],
|
| 168 |
+
offsetgroup=market,
|
| 169 |
+
showlegend=True,
|
| 170 |
+
)
|
| 171 |
+
final_traces.append(trace)
|
| 172 |
+
|
| 173 |
+
# Then add 'non_agent' traces
|
| 174 |
+
for market in ["pearl", "quickstart", "all"]:
|
| 175 |
+
market_data = trades[trades["market_creator"] == market]
|
| 176 |
+
non_agent_data = market_data[market_data["staking_type"] == "non_agent"]
|
| 177 |
+
|
| 178 |
+
trace = go.Bar(
|
| 179 |
+
x=non_agent_data["month_year_week"],
|
| 180 |
+
y=non_agent_data["trades"],
|
| 181 |
+
name=f"{market}-non_agent",
|
| 182 |
+
marker_color="black",
|
| 183 |
+
offsetgroup=market,
|
| 184 |
+
showlegend=True,
|
| 185 |
+
)
|
| 186 |
+
final_traces.append(trace)
|
| 187 |
+
|
| 188 |
+
# Create new figure with the combined traces
|
| 189 |
+
fig = go.Figure(data=final_traces)
|
| 190 |
+
|
| 191 |
+
# Update layout
|
| 192 |
+
fig.update_layout(
|
| 193 |
+
xaxis_title="Week",
|
| 194 |
+
yaxis_title="Weekly nr of trades",
|
| 195 |
+
legend=dict(yanchor="top", y=0.5),
|
| 196 |
+
width=WIDTH,
|
| 197 |
+
height=HEIGHT,
|
| 198 |
+
barmode="group",
|
| 199 |
+
)
|
| 200 |
+
|
| 201 |
+
# Update x-axis format
|
| 202 |
+
fig.update_xaxes(tickformat="%b %d\n%Y")
|
| 203 |
+
|
| 204 |
+
return gr.Plot(value=fig)
|
| 205 |
+
|
| 206 |
+
|
| 207 |
def integrated_plot_winning_trades_per_market_by_week(
|
| 208 |
trades_df: pd.DataFrame,
|
| 209 |
) -> gr.Plot:
|