rosacastillo commited on
Commit
d58fc7b
·
1 Parent(s): ae57283

new graph with non agents

Browse files
Files changed (3) hide show
  1. app.py +1 -0
  2. tabs/staking.py +2 -1
  3. 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: