cyberosa commited on
Commit
3498a52
·
1 Parent(s): 8704528

new money invested tabs and graphs

Browse files
Files changed (3) hide show
  1. app.py +18 -25
  2. tabs/market_plots.py +11 -63
  3. tabs/trader_plots.py +57 -0
app.py CHANGED
@@ -17,6 +17,7 @@ from tabs.trader_plots import (
17
  get_metrics_text,
18
  plot_winning_metric_per_trader,
19
  get_interpretation_text,
 
20
  )
21
  from tabs.daily_graphs import (
22
  get_current_week_data,
@@ -27,7 +28,6 @@ from tabs.daily_graphs import (
27
  from scripts.utils import get_traders_family
28
  from tabs.market_plots import (
29
  plot_kl_div_per_market,
30
- plot_nr_trades_per_trader_per_market,
31
  plot_total_bet_amount_per_trader_per_market,
32
  )
33
 
@@ -406,56 +406,49 @@ with demo:
406
  with gr.Column(scale=1):
407
  interpretation = get_interpretation_text()
408
 
409
- with gr.TabItem("📮 Number of trades per market"):
410
  with gr.Row():
411
- gr.Markdown(
412
- "# Weekly nr of trades per trader per market for all traders"
413
- )
414
-
415
  with gr.Row():
416
- trades_volume_plot = plot_nr_trades_per_trader_per_market(
417
- trader_agents_data
418
- )
419
  with gr.Row():
420
  gr.Markdown(
421
- "# Weekly nr of trades per trader per market for trader Agents 🤖"
422
  )
423
-
424
  with gr.Row():
425
- trades_volume_plot = plot_nr_trades_per_trader_per_market(
426
  trader_agents_data, trader_filter="agent"
427
  )
 
428
  with gr.Row():
429
  gr.Markdown(
430
- "# Weekly nr of trades per trader per market for non-Agent traders"
431
  )
432
-
433
  with gr.Row():
434
- trades_volume_plot = plot_nr_trades_per_trader_per_market(
435
  trader_agents_data, trader_filter="non_agent"
436
  )
437
- with gr.TabItem("💰 Money invested"):
438
  with gr.Row():
439
- gr.Markdown("# Weekly total bet amount by market for all traders")
440
  with gr.Row():
441
- total_bet_amount = plot_total_bet_amount_per_trader_per_market(
442
  trader_agents_data
443
  )
444
 
445
  with gr.Row():
446
- gr.Markdown("# Weekly total bet amount by market for traders Agents 🤖")
447
  with gr.Row():
448
- a_trader_total_bet_amount = plot_total_bet_amount_per_trader_per_market(
449
  trader_agents_data, trader_filter="agent"
450
  )
451
 
452
  with gr.Row():
453
- gr.Markdown("# Weekly total bet amount by market for Non-agent traders")
454
  with gr.Row():
455
- na_trader_total_bet_amount = (
456
- plot_total_bet_amount_per_trader_per_market(
457
- trader_agents_data, trader_filter="non_agent"
458
- )
459
  )
460
 
461
  with gr.TabItem("🎖️Weekly winning trades % per trader"):
 
17
  get_metrics_text,
18
  plot_winning_metric_per_trader,
19
  get_interpretation_text,
20
+ plot_total_bet_amount,
21
  )
22
  from tabs.daily_graphs import (
23
  get_current_week_data,
 
28
  from scripts.utils import get_traders_family
29
  from tabs.market_plots import (
30
  plot_kl_div_per_market,
 
31
  plot_total_bet_amount_per_trader_per_market,
32
  )
33
 
 
406
  with gr.Column(scale=1):
407
  interpretation = get_interpretation_text()
408
 
409
+ with gr.TabItem("💰 Money invested per trader"):
410
  with gr.Row():
411
+ gr.Markdown("# Weekly total bet amount per trader for all traders")
 
 
 
412
  with gr.Row():
413
+ total_bet_amount = plot_total_bet_amount(trader_agents_data)
414
+
 
415
  with gr.Row():
416
  gr.Markdown(
417
+ "# Weekly total bet amount per trader for traders Agents 🤖"
418
  )
 
419
  with gr.Row():
420
+ a_trader_total_bet_amount = plot_total_bet_amount(
421
  trader_agents_data, trader_filter="agent"
422
  )
423
+
424
  with gr.Row():
425
  gr.Markdown(
426
+ "# Weekly total bet amount per trader for Non-agent traders"
427
  )
 
428
  with gr.Row():
429
+ na_trader_total_bet_amount = plot_total_bet_amount(
430
  trader_agents_data, trader_filter="non_agent"
431
  )
432
+ with gr.TabItem("💰 Money invested per market"):
433
  with gr.Row():
434
+ gr.Markdown("# Weekly bet amounts per market for all traders")
435
  with gr.Row():
436
+ bet_amounts = plot_total_bet_amount_per_trader_per_market(
437
  trader_agents_data
438
  )
439
 
440
  with gr.Row():
441
+ gr.Markdown("# Weekly bet amounts per market for traders Agents 🤖")
442
  with gr.Row():
443
+ a_trader_bet_amounts = plot_total_bet_amount_per_trader_per_market(
444
  trader_agents_data, trader_filter="agent"
445
  )
446
 
447
  with gr.Row():
448
+ gr.Markdown("# Weekly bet amounts per market for Non-agent traders")
449
  with gr.Row():
450
+ na_trader_bet_amounts = plot_total_bet_amount_per_trader_per_market(
451
+ trader_agents_data, trader_filter="non_agent"
 
 
452
  )
453
 
454
  with gr.TabItem("🎖️Weekly winning trades % per trader"):
tabs/market_plots.py CHANGED
@@ -7,6 +7,15 @@ import matplotlib.pyplot as plt
7
  import seaborn as sns
8
  from tabs.daily_graphs import color_mapping
9
 
 
 
 
 
 
 
 
 
 
10
 
11
  def plot_kl_div_per_market(closed_markets: pd.DataFrame) -> gr.Plot:
12
 
@@ -88,67 +97,6 @@ def plot_kl_div_with_off_by(closed_markets: pd.DataFrame) -> gr.Plot:
88
  )
89
 
90
 
91
- def plot_total_bet_amount(trades_df: pd.DataFrame) -> gr.Plot:
92
- """Plots the trade metrics."""
93
- # Create binary staking category
94
- trades_df["trader_type"] = trades_df["staking"].apply(
95
- lambda x: "non_agent" if x == "non_agent" else "agent"
96
- )
97
-
98
- total_bet_amount = (
99
- trades_df.groupby(
100
- ["month_year_week", "market_creator", "trader_type"], sort=False
101
- )["collateral_amount"]
102
- .sum()
103
- .reset_index(name="total_bet_amount")
104
- )
105
- color_mapping = [
106
- "darkviolet",
107
- "purple",
108
- "goldenrod",
109
- "darkgoldenrod",
110
- "green",
111
- "darkgreen",
112
- ]
113
- total_bet_amount["trader_market"] = total_bet_amount.apply(
114
- lambda x: (x["trader_type"], x["market_creator"]), axis=1
115
- )
116
-
117
- fig = px.bar(
118
- total_bet_amount,
119
- x="month_year_week",
120
- y="total_bet_amount",
121
- color="trader_market",
122
- color_discrete_sequence=color_mapping,
123
- category_orders={
124
- "market_creator": ["pearl", "quickstart", "all"],
125
- "trader_market": [
126
- ("agent", "pearl"),
127
- ("non_agent", "pearl"),
128
- ("agent", "quickstart"),
129
- ("non_agent", "quickstart"),
130
- ("agent", "all"),
131
- ("non_agent", "all"),
132
- ],
133
- },
134
- barmode="group",
135
- facet_col="market_creator",
136
- )
137
-
138
- fig.update_layout(
139
- xaxis_title="Week",
140
- yaxis_title="Weekly total bet amount",
141
- legend=dict(yanchor="top", y=0.5),
142
- )
143
- for axis in fig.layout:
144
- if axis.startswith("xaxis"):
145
- fig.layout[axis].update(title="Week")
146
- fig.update_xaxes(tickformat="%b %d")
147
- return gr.Plot(
148
- value=fig,
149
- )
150
-
151
-
152
  def plot_total_bet_amount_per_trader_per_market(
153
  trades_df: pd.DataFrame, trader_filter: str = "all"
154
  ) -> gr.Plot:
@@ -202,10 +150,10 @@ def plot_total_bet_amount_per_trader_per_market(
202
  },
203
  # facet_col="trader_type",
204
  )
205
-
206
  fig.update_layout(
207
  xaxis_title="Week",
208
- yaxis_title="Weekly total bet amount per trader per market",
209
  legend=dict(yanchor="top", y=0.5),
210
  width=1000, # Adjusted for better fit on laptop screens
211
  height=600, # Adjusted for better fit on laptop screens
 
7
  import seaborn as sns
8
  from tabs.daily_graphs import color_mapping
9
 
10
+ color_mapping = [
11
+ "darkviolet",
12
+ "purple",
13
+ "goldenrod",
14
+ "darkgoldenrod",
15
+ "green",
16
+ "darkgreen",
17
+ ]
18
+
19
 
20
  def plot_kl_div_per_market(closed_markets: pd.DataFrame) -> gr.Plot:
21
 
 
97
  )
98
 
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  def plot_total_bet_amount_per_trader_per_market(
101
  trades_df: pd.DataFrame, trader_filter: str = "all"
102
  ) -> gr.Plot:
 
150
  },
151
  # facet_col="trader_type",
152
  )
153
+ fig.update_traces(boxmean=True)
154
  fig.update_layout(
155
  xaxis_title="Week",
156
+ yaxis_title="Weekly bet amounts per trader per market",
157
  legend=dict(yanchor="top", y=0.5),
158
  width=1000, # Adjusted for better fit on laptop screens
159
  height=600, # Adjusted for better fit on laptop screens
tabs/trader_plots.py CHANGED
@@ -173,3 +173,60 @@ def plot_winning_metric_per_trader(traders_winning_df: pd.DataFrame) -> gr.Plot:
173
  return gr.Plot(
174
  value=fig,
175
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  return gr.Plot(
174
  value=fig,
175
  )
176
+
177
+
178
+ def plot_total_bet_amount(
179
+ trades_df: pd.DataFrame, trader_filter: str = "all"
180
+ ) -> gr.Plot:
181
+ """Plots the trade metrics."""
182
+ traders_all = trades_df.copy(deep=True)
183
+ traders_all["market_creator"] = "all"
184
+
185
+ # merging both dataframes
186
+ final_traders = pd.concat([traders_all, trades_df], ignore_index=True)
187
+ final_traders = final_traders.sort_values(by="creation_date", ascending=True)
188
+ # Create binary staking category
189
+ final_traders["trader_type"] = final_traders["staking"].apply(
190
+ lambda x: "non_agent" if x == "non_agent" else "agent"
191
+ )
192
+
193
+ color_discrete_sequence = ["purple", "goldenrod", "darkgreen"]
194
+ if trader_filter == "agent":
195
+ color_discrete_sequence = ["darkviolet", "goldenrod", "green"]
196
+ final_traders = final_traders.loc[final_traders["trader_type"] == "agent"]
197
+ elif trader_filter == "non_agent":
198
+ final_traders = final_traders.loc[final_traders["trader_type"] != "agent"]
199
+
200
+ total_bet_amount = (
201
+ final_traders.groupby(
202
+ ["month_year_week", "market_creator", "trader_address"], sort=False
203
+ )["collateral_amount"]
204
+ .sum()
205
+ .reset_index(name="total_bet_amount")
206
+ )
207
+
208
+ fig = px.box(
209
+ total_bet_amount,
210
+ x="month_year_week",
211
+ y="total_bet_amount",
212
+ color="market_creator",
213
+ color_discrete_sequence=color_discrete_sequence,
214
+ category_orders={
215
+ "market_creator": ["pearl", "quickstart", "all"],
216
+ },
217
+ # barmode="group",
218
+ # facet_col="market_creator",
219
+ )
220
+ fig.update_traces(boxmean=True)
221
+ fig.update_layout(
222
+ xaxis_title="Week",
223
+ yaxis_title="Weekly total bet amount",
224
+ legend=dict(yanchor="top", y=0.5),
225
+ )
226
+ # for axis in fig.layout:
227
+ # if axis.startswith("xaxis"):
228
+ # fig.layout[axis].update(title="Week")
229
+ fig.update_xaxes(tickformat="%b %d")
230
+ return gr.Plot(
231
+ value=fig,
232
+ )