cyberosa commited on
Commit
3035b84
·
1 Parent(s): 5b74576

new labels for traders

Browse files
app.py CHANGED
@@ -77,14 +77,21 @@ def get_all_data():
77
  FROM read_parquet('./data/daily_info.parquet')
78
  """
79
  df3 = con.execute(query3).fetchdf()
 
 
 
 
 
 
 
80
  con.close()
81
 
82
- return df1, df2, df3
83
 
84
 
85
  def prepare_data():
86
 
87
- all_trades, closed_markets, daily_info = get_all_data()
88
 
89
  all_trades["creation_date"] = all_trades["creation_timestamp"].dt.date
90
 
@@ -99,6 +106,7 @@ def prepare_data():
99
  all_trades, volume_trades_per_trader_and_market, on=["trader_address", "title"]
100
  )
101
  daily_info["creation_date"] = daily_info["creation_timestamp"].dt.date
 
102
  # adding the trader family column
103
  traders_data["trader_family"] = traders_data.apply(
104
  lambda x: get_traders_family(x), axis=1
@@ -106,29 +114,28 @@ def prepare_data():
106
  print(traders_data.head())
107
 
108
  traders_data = traders_data.sort_values(by="creation_timestamp", ascending=True)
109
-
 
 
110
  traders_data["month_year_week"] = (
111
  traders_data["creation_timestamp"].dt.to_period("W").dt.strftime("%b-%d")
112
  )
113
-
 
 
114
  closed_markets["month_year_week"] = (
115
  closed_markets["opening_datetime"].dt.to_period("W").dt.strftime("%b-%d")
116
  )
117
- return traders_data, closed_markets, daily_info
118
 
119
 
120
- traders_data, closed_markets, daily_info = prepare_data()
121
 
122
  demo = gr.Blocks()
123
  # get weekly metrics by market creator: qs, pearl or all.
124
  weekly_metrics_by_market_creator = compute_weekly_metrics_by_market_creator(
125
  traders_data
126
  )
127
- print(
128
- weekly_metrics_by_market_creator.loc[
129
- weekly_metrics_by_market_creator["market_creator"] == "all"
130
- ].roi_diff_perc.describe()
131
- )
132
  weekly_metrics_by_market_creator = compute_weekly_metrics_by_market_creator(
133
  traders_data, trader_filter="non_Olas"
134
  )
@@ -136,6 +143,10 @@ weekly_non_olas_metrics_by_market_creator = compute_weekly_metrics_by_market_cre
136
  traders_data, trader_filter="non_Olas"
137
  )
138
 
 
 
 
 
139
  weekly_winning_metrics = compute_winning_metrics_by_trader(traders_data=traders_data)
140
  weekly_non_olas_winning_metrics = compute_winning_metrics_by_trader(
141
  traders_data=traders_data, trader_filter="non_Olas"
@@ -191,7 +202,7 @@ with demo:
191
 
192
  with gr.Row():
193
  with gr.Column(scale=3):
194
- a_trader_markets_plot = plot_trader_metrics_by_market_creator(
195
  metric_name=default_trader_metric,
196
  traders_df=weekly_metrics_by_market_creator,
197
  )
@@ -207,14 +218,14 @@ with demo:
207
  trader_o_details_selector.change(
208
  update_a_trader_details,
209
  inputs=trader_o_details_selector,
210
- outputs=a_trader_markets_plot,
211
  )
212
 
213
  # Non-Olas traders graph
214
  with gr.Row():
215
  gr.Markdown("# Weekly metrics of Non-Olas traders")
216
  with gr.Row():
217
- trader_na_details_selector = gr.Dropdown(
218
  label="Select a weekly trader metric",
219
  choices=trader_metric_choices,
220
  value=default_trader_metric,
@@ -222,23 +233,53 @@ with demo:
222
 
223
  with gr.Row():
224
  with gr.Column(scale=3):
225
- na_trader_markets_plot = plot_trader_metrics_by_market_creator(
226
  metric_name=default_trader_metric,
227
  traders_df=weekly_non_olas_metrics_by_market_creator,
228
  )
229
  with gr.Column(scale=1):
230
  trade_details_text = get_metrics_text()
231
 
232
- def update_na_trader_details(trader_detail):
233
  return plot_trader_metrics_by_market_creator(
234
  metric_name=trader_detail,
235
  traders_df=weekly_non_olas_metrics_by_market_creator,
236
  )
237
 
238
- trader_na_details_selector.change(
239
- update_na_trader_details,
240
- inputs=trader_na_details_selector,
241
- outputs=na_trader_markets_plot,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  )
243
  with gr.TabItem("📅 Daily metrics"):
244
  current_week_trades = get_current_week_data(trades_df=traders_data)
@@ -283,11 +324,11 @@ with demo:
283
  inputs=[trade_live_details_selector, trade_live_details_plot],
284
  outputs=[trade_live_details_plot],
285
  )
286
-
287
  with gr.Row():
288
  gr.Markdown("# Daily live metrics for 🌊 Olas traders")
289
  with gr.Row():
290
- a_trader_live_details_selector = gr.Dropdown(
291
  label="Select a daily live metric",
292
  choices=trader_daily_metric_choices,
293
  value=default_daily_metric,
@@ -295,7 +336,7 @@ with demo:
295
 
296
  with gr.Row():
297
  with gr.Column(scale=3):
298
- a_trader_live_details_plot = plot_daily_metrics(
299
  metric_name=default_daily_metric,
300
  trades_df=live_metrics_by_market_creator,
301
  trader_filter="Olas",
@@ -304,22 +345,22 @@ with demo:
304
  trade_details_text = get_metrics_text(daily=True)
305
 
306
  def update_a_trader_live_details(trade_detail, a_trader_live_details_plot):
307
- a_trader_plot = plot_daily_metrics(
308
  metric_name=trade_detail,
309
  trades_df=live_metrics_by_market_creator,
310
  trader_filter="Olas",
311
  )
312
- return a_trader_plot
313
 
314
- a_trader_live_details_selector.change(
315
  update_a_trader_live_details,
316
- inputs=[a_trader_live_details_selector, a_trader_live_details_plot],
317
- outputs=[a_trader_live_details_plot],
318
  )
319
  with gr.Row():
320
  gr.Markdown("# Daily live metrics for Non-Olas traders")
321
  with gr.Row():
322
- na_trader_live_details_selector = gr.Dropdown(
323
  label="Select a daily live metric",
324
  choices=trader_daily_metric_choices,
325
  value=default_daily_metric,
@@ -327,7 +368,7 @@ with demo:
327
 
328
  with gr.Row():
329
  with gr.Column(scale=3):
330
- na_trader_live_details_plot = plot_daily_metrics(
331
  metric_name=default_daily_metric,
332
  trades_df=live_metrics_by_market_creator,
333
  trader_filter="non_Olas",
@@ -336,19 +377,19 @@ with demo:
336
  trade_details_text = get_metrics_text(daily=True)
337
 
338
  def update_na_trader_live_details(
339
- trade_detail, na_trader_live_details_plot
340
  ):
341
- na_trader_plot = plot_daily_metrics(
342
  metric_name=trade_detail,
343
  trades_df=live_metrics_by_market_creator,
344
  trader_filter="non_Olas",
345
  )
346
- return na_trader_plot
347
 
348
- na_trader_live_details_selector.change(
349
  update_na_trader_live_details,
350
- inputs=[na_trader_live_details_selector, na_trader_live_details_plot],
351
- outputs=[na_trader_live_details_plot],
352
  )
353
 
354
  with gr.TabItem("📉 Markets Kullback–Leibler divergence"):
@@ -381,7 +422,7 @@ with demo:
381
  "# Weekly total bet amount per trader type for Pearl markets"
382
  )
383
  with gr.Row():
384
- a_trader_total_bet_amount = plot_total_bet_amount(
385
  traders_data, market_filter="pearl"
386
  )
387
 
@@ -390,9 +431,10 @@ with demo:
390
  "# Weekly total bet amount per trader type for Quickstart markets"
391
  )
392
  with gr.Row():
393
- na_trader_total_bet_amount = plot_total_bet_amount(
394
  traders_data, market_filter="quickstart"
395
  )
 
396
  with gr.TabItem("💰 Money invested per market"):
397
  with gr.Row():
398
  gr.Markdown("# Weekly bet amounts per market for all traders")
@@ -402,14 +444,14 @@ with demo:
402
  with gr.Row():
403
  gr.Markdown("# Weekly bet amounts per market for 🌊 Olas traders")
404
  with gr.Row():
405
- a_trader_bet_amounts = plot_total_bet_amount_per_trader_per_market(
406
  traders_data, trader_filter="Olas"
407
  )
408
 
409
  with gr.Row():
410
  gr.Markdown("# Weekly bet amounts per market for Non-Olas traders")
411
  with gr.Row():
412
- na_trader_bet_amounts = plot_total_bet_amount_per_trader_per_market(
413
  traders_data, trader_filter="non_Olas"
414
  )
415
 
 
77
  FROM read_parquet('./data/daily_info.parquet')
78
  """
79
  df3 = con.execute(query3).fetchdf()
80
+
81
+ # Query to fetch daily live data of unknown daily traders
82
+ query4 = f"""
83
+ SELECT *
84
+ FROM read_parquet('./data/unknown_traders.parquet')
85
+ """
86
+ df4 = con.execute(query4).fetchdf()
87
  con.close()
88
 
89
+ return df1, df2, df3, df4
90
 
91
 
92
  def prepare_data():
93
 
94
+ all_trades, closed_markets, daily_info, unknown_traders = get_all_data()
95
 
96
  all_trades["creation_date"] = all_trades["creation_timestamp"].dt.date
97
 
 
106
  all_trades, volume_trades_per_trader_and_market, on=["trader_address", "title"]
107
  )
108
  daily_info["creation_date"] = daily_info["creation_timestamp"].dt.date
109
+ unknown_traders["creation_date"] = unknown_traders["creation_timestamp"].dt.date
110
  # adding the trader family column
111
  traders_data["trader_family"] = traders_data.apply(
112
  lambda x: get_traders_family(x), axis=1
 
114
  print(traders_data.head())
115
 
116
  traders_data = traders_data.sort_values(by="creation_timestamp", ascending=True)
117
+ unknown_traders = unknown_traders.sort_values(
118
+ by="creation_timestamp", ascending=True
119
+ )
120
  traders_data["month_year_week"] = (
121
  traders_data["creation_timestamp"].dt.to_period("W").dt.strftime("%b-%d")
122
  )
123
+ unknown_traders["month_year_week"] = (
124
+ unknown_traders["creation_timestamp"].dt.to_period("W").dt.strftime("%b-%d")
125
+ )
126
  closed_markets["month_year_week"] = (
127
  closed_markets["opening_datetime"].dt.to_period("W").dt.strftime("%b-%d")
128
  )
129
+ return traders_data, closed_markets, daily_info, unknown_traders
130
 
131
 
132
+ traders_data, closed_markets, daily_info, unknown_traders = prepare_data()
133
 
134
  demo = gr.Blocks()
135
  # get weekly metrics by market creator: qs, pearl or all.
136
  weekly_metrics_by_market_creator = compute_weekly_metrics_by_market_creator(
137
  traders_data
138
  )
 
 
 
 
 
139
  weekly_metrics_by_market_creator = compute_weekly_metrics_by_market_creator(
140
  traders_data, trader_filter="non_Olas"
141
  )
 
143
  traders_data, trader_filter="non_Olas"
144
  )
145
 
146
+ weekly_unknown_trader_metrics_by_market_creator = (
147
+ compute_weekly_metrics_by_market_creator(unknown_traders)
148
+ )
149
+
150
  weekly_winning_metrics = compute_winning_metrics_by_trader(traders_data=traders_data)
151
  weekly_non_olas_winning_metrics = compute_winning_metrics_by_trader(
152
  traders_data=traders_data, trader_filter="non_Olas"
 
202
 
203
  with gr.Row():
204
  with gr.Column(scale=3):
205
+ o_trader_markets_plot = plot_trader_metrics_by_market_creator(
206
  metric_name=default_trader_metric,
207
  traders_df=weekly_metrics_by_market_creator,
208
  )
 
218
  trader_o_details_selector.change(
219
  update_a_trader_details,
220
  inputs=trader_o_details_selector,
221
+ outputs=o_trader_markets_plot,
222
  )
223
 
224
  # Non-Olas traders graph
225
  with gr.Row():
226
  gr.Markdown("# Weekly metrics of Non-Olas traders")
227
  with gr.Row():
228
+ trader_no_details_selector = gr.Dropdown(
229
  label="Select a weekly trader metric",
230
  choices=trader_metric_choices,
231
  value=default_trader_metric,
 
233
 
234
  with gr.Row():
235
  with gr.Column(scale=3):
236
+ trader_no_markets_plot = plot_trader_metrics_by_market_creator(
237
  metric_name=default_trader_metric,
238
  traders_df=weekly_non_olas_metrics_by_market_creator,
239
  )
240
  with gr.Column(scale=1):
241
  trade_details_text = get_metrics_text()
242
 
243
+ def update_no_trader_details(trader_detail):
244
  return plot_trader_metrics_by_market_creator(
245
  metric_name=trader_detail,
246
  traders_df=weekly_non_olas_metrics_by_market_creator,
247
  )
248
 
249
+ trader_no_details_selector.change(
250
+ update_no_trader_details,
251
+ inputs=trader_no_details_selector,
252
+ outputs=trader_no_markets_plot,
253
+ )
254
+ # Unknown traders graph
255
+ with gr.Row():
256
+ gr.Markdown("# Weekly metrics of Unknown traders")
257
+ with gr.Row():
258
+ trader_u_details_selector = gr.Dropdown(
259
+ label="Select a weekly trader metric",
260
+ choices=trader_metric_choices,
261
+ value=default_trader_metric,
262
+ )
263
+
264
+ with gr.Row():
265
+ with gr.Column(scale=3):
266
+ trader_u_markets_plot = plot_trader_metrics_by_market_creator(
267
+ metric_name=default_trader_metric,
268
+ traders_df=weekly_unknown_trader_metrics_by_market_creator,
269
+ )
270
+ with gr.Column(scale=1):
271
+ trade_details_text = get_metrics_text()
272
+
273
+ def update_u_trader_details(trader_detail):
274
+ return plot_trader_metrics_by_market_creator(
275
+ metric_name=trader_detail,
276
+ traders_df=weekly_unknown_trader_metrics_by_market_creator,
277
+ )
278
+
279
+ trader_u_details_selector.change(
280
+ update_u_trader_details,
281
+ inputs=trader_u_details_selector,
282
+ outputs=trader_u_markets_plot,
283
  )
284
  with gr.TabItem("📅 Daily metrics"):
285
  current_week_trades = get_current_week_data(trades_df=traders_data)
 
324
  inputs=[trade_live_details_selector, trade_live_details_plot],
325
  outputs=[trade_live_details_plot],
326
  )
327
+ # Olas traders
328
  with gr.Row():
329
  gr.Markdown("# Daily live metrics for 🌊 Olas traders")
330
  with gr.Row():
331
+ o_trader_live_details_selector = gr.Dropdown(
332
  label="Select a daily live metric",
333
  choices=trader_daily_metric_choices,
334
  value=default_daily_metric,
 
336
 
337
  with gr.Row():
338
  with gr.Column(scale=3):
339
+ o_trader_live_details_plot = plot_daily_metrics(
340
  metric_name=default_daily_metric,
341
  trades_df=live_metrics_by_market_creator,
342
  trader_filter="Olas",
 
345
  trade_details_text = get_metrics_text(daily=True)
346
 
347
  def update_a_trader_live_details(trade_detail, a_trader_live_details_plot):
348
+ o_trader_plot = plot_daily_metrics(
349
  metric_name=trade_detail,
350
  trades_df=live_metrics_by_market_creator,
351
  trader_filter="Olas",
352
  )
353
+ return o_trader_plot
354
 
355
+ o_trader_live_details_selector.change(
356
  update_a_trader_live_details,
357
+ inputs=[o_trader_live_details_selector, o_trader_live_details_plot],
358
+ outputs=[o_trader_live_details_plot],
359
  )
360
  with gr.Row():
361
  gr.Markdown("# Daily live metrics for Non-Olas traders")
362
  with gr.Row():
363
+ no_trader_live_details_selector = gr.Dropdown(
364
  label="Select a daily live metric",
365
  choices=trader_daily_metric_choices,
366
  value=default_daily_metric,
 
368
 
369
  with gr.Row():
370
  with gr.Column(scale=3):
371
+ no_trader_live_details_plot = plot_daily_metrics(
372
  metric_name=default_daily_metric,
373
  trades_df=live_metrics_by_market_creator,
374
  trader_filter="non_Olas",
 
377
  trade_details_text = get_metrics_text(daily=True)
378
 
379
  def update_na_trader_live_details(
380
+ trade_detail, no_trader_live_details_plot
381
  ):
382
+ no_trader_plot = plot_daily_metrics(
383
  metric_name=trade_detail,
384
  trades_df=live_metrics_by_market_creator,
385
  trader_filter="non_Olas",
386
  )
387
+ return no_trader_plot
388
 
389
+ no_trader_live_details_selector.change(
390
  update_na_trader_live_details,
391
+ inputs=[no_trader_live_details_selector, no_trader_live_details_plot],
392
+ outputs=[no_trader_live_details_plot],
393
  )
394
 
395
  with gr.TabItem("📉 Markets Kullback–Leibler divergence"):
 
422
  "# Weekly total bet amount per trader type for Pearl markets"
423
  )
424
  with gr.Row():
425
+ o_trader_total_bet_amount = plot_total_bet_amount(
426
  traders_data, market_filter="pearl"
427
  )
428
 
 
431
  "# Weekly total bet amount per trader type for Quickstart markets"
432
  )
433
  with gr.Row():
434
+ no_trader_total_bet_amount = plot_total_bet_amount(
435
  traders_data, market_filter="quickstart"
436
  )
437
+
438
  with gr.TabItem("💰 Money invested per market"):
439
  with gr.Row():
440
  gr.Markdown("# Weekly bet amounts per market for all traders")
 
444
  with gr.Row():
445
  gr.Markdown("# Weekly bet amounts per market for 🌊 Olas traders")
446
  with gr.Row():
447
+ o_trader_bet_amounts = plot_total_bet_amount_per_trader_per_market(
448
  traders_data, trader_filter="Olas"
449
  )
450
 
451
  with gr.Row():
452
  gr.Markdown("# Weekly bet amounts per market for Non-Olas traders")
453
  with gr.Row():
454
+ no_trader_bet_amounts = plot_total_bet_amount_per_trader_per_market(
455
  traders_data, trader_filter="non_Olas"
456
  )
457
 
data/daily_info.parquet CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:9b9c7c71ea81900aac2a840315940801489e15aa383c46467b30b02f7e3baea2
3
- size 461471
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1786521d10be3b3c7ccff825d4f5d4e3c8ec7616e351f89bc56ae846f421f6bc
3
+ size 884405
data/unknown_daily_traders.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7f75e649183ccbf7179b4a79315e8957971f13a4e03870852e5850da65fd8821
3
+ size 48908
data/unknown_traders.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0ab41a7a35d8bf5c588b95849ec650e048578ddcbb18bc62df0e7a3c96902ea5
3
+ size 368142
scripts/metrics.py CHANGED
@@ -66,7 +66,7 @@ def compute_trader_metrics_by_market_creator(
66
  ) -> dict:
67
  """This function computes for a specific time window (week or day) the different metrics:
68
  roi, net_earnings, earnings, bet_amount, nr_mech_calls and nr_trades.
69
- The global roi of the trader agent by computing the individual net profit and the individual costs values
70
  achieved per market and dividing both.
71
  It is possible to filter by market creator: quickstart, pearl, all"""
72
  assert "market_creator" in traders_data.columns
@@ -182,7 +182,7 @@ def compute_weekly_metrics_by_market_creator(
182
  for trader in tqdm(traders, desc=f"Trader' metrics", unit="metrics"):
183
  if trader_filter is None:
184
  contents.append(merge_trader_weekly_metrics(trader, weekly_data, week))
185
- elif trader_filter == "agent":
186
  filtered_data = weekly_data.loc[weekly_data["staking"] != "non_Olas"]
187
  contents.append(
188
  merge_trader_weekly_metrics(trader, filtered_data, week)
@@ -217,7 +217,7 @@ def compute_daily_metrics_by_market_creator(
217
  contents.append(
218
  merge_trader_daily_metrics(trader, daily_data, day, live_metrics)
219
  )
220
- elif trader_filter == "agentic":
221
  filtered_data = daily_data.loc[daily_data["staking"] != "non_Olas"]
222
  contents.append(
223
  merge_trader_daily_metrics(trader, filtered_data, day, live_metrics)
@@ -243,7 +243,7 @@ def compute_winning_metrics_by_trader(
243
  final_traders = pd.concat([market_all, traders_data], ignore_index=True)
244
  final_traders = final_traders.sort_values(by="creation_timestamp", ascending=True)
245
 
246
- if trader_filter == "agentic":
247
  final_traders = final_traders.loc[final_traders["staking"] != "non_Olas"]
248
  else: # non_Olas traders
249
  final_traders = final_traders.loc[final_traders["staking"] == "non_Olas"]
 
66
  ) -> dict:
67
  """This function computes for a specific time window (week or day) the different metrics:
68
  roi, net_earnings, earnings, bet_amount, nr_mech_calls and nr_trades.
69
+ The global roi of the trader by computing the individual net profit and the individual costs values
70
  achieved per market and dividing both.
71
  It is possible to filter by market creator: quickstart, pearl, all"""
72
  assert "market_creator" in traders_data.columns
 
182
  for trader in tqdm(traders, desc=f"Trader' metrics", unit="metrics"):
183
  if trader_filter is None:
184
  contents.append(merge_trader_weekly_metrics(trader, weekly_data, week))
185
+ elif trader_filter == "Olas":
186
  filtered_data = weekly_data.loc[weekly_data["staking"] != "non_Olas"]
187
  contents.append(
188
  merge_trader_weekly_metrics(trader, filtered_data, week)
 
217
  contents.append(
218
  merge_trader_daily_metrics(trader, daily_data, day, live_metrics)
219
  )
220
+ elif trader_filter == "Olas":
221
  filtered_data = daily_data.loc[daily_data["staking"] != "non_Olas"]
222
  contents.append(
223
  merge_trader_daily_metrics(trader, filtered_data, day, live_metrics)
 
243
  final_traders = pd.concat([market_all, traders_data], ignore_index=True)
244
  final_traders = final_traders.sort_values(by="creation_timestamp", ascending=True)
245
 
246
+ if trader_filter == "Olas":
247
  final_traders = final_traders.loc[final_traders["staking"] != "non_Olas"]
248
  else: # non_Olas traders
249
  final_traders = final_traders.loc[final_traders["staking"] == "non_Olas"]
tabs/market_plots.py CHANGED
@@ -111,17 +111,17 @@ def plot_total_bet_amount_per_trader_per_market(
111
 
112
  # Create binary staking category
113
  final_traders["trader_type"] = final_traders["staking"].apply(
114
- lambda x: "non_agent" if x == "non_agent" else "agent"
115
  )
116
  final_traders["trader_market"] = final_traders.apply(
117
  lambda x: (x["trader_type"], x["market_creator"]), axis=1
118
  )
119
  color_discrete_sequence = ["purple", "goldenrod", "darkgreen"]
120
- if trader_filter == "agent":
121
  color_discrete_sequence = ["darkviolet", "goldenrod", "green"]
122
- final_traders = final_traders.loc[final_traders["trader_type"] == "agent"]
123
- elif trader_filter == "non_agent":
124
- final_traders = final_traders.loc[final_traders["trader_type"] != "agent"]
125
 
126
  total_bet_amount = (
127
  final_traders.groupby(
@@ -149,12 +149,12 @@ def plot_total_bet_amount_per_trader_per_market(
149
  category_orders={
150
  "market_creator": ["pearl", "quickstart", "all"],
151
  "trader_market": [
152
- ("agent", "pearl"),
153
- ("non_agent", "pearl"),
154
- ("agent", "quickstart"),
155
- ("non_agent", "quickstart"),
156
- ("agent", "all"),
157
- ("non_agent", "all"),
158
  ],
159
  },
160
  # facet_col="trader_type",
@@ -192,17 +192,17 @@ def plot_nr_trades_per_trader_per_market(
192
 
193
  # Create binary staking category
194
  final_traders["trader_type"] = final_traders["staking"].apply(
195
- lambda x: "non_agent" if x == "non_agent" else "agent"
196
  )
197
  final_traders["trader_market"] = final_traders.apply(
198
  lambda x: (x["trader_type"], x["market_creator"]), axis=1
199
  )
200
  color_discrete_sequence = ["purple", "goldenrod", "darkgreen"]
201
- if trader_filter == "agent":
202
  color_discrete_sequence = ["darkviolet", "goldenrod", "green"]
203
- final_traders = final_traders.loc[final_traders["trader_type"] == "agent"]
204
- elif trader_filter == "non_agent":
205
- final_traders = final_traders.loc[final_traders["trader_type"] != "agent"]
206
 
207
  fig = px.box(
208
  final_traders,
@@ -213,12 +213,12 @@ def plot_nr_trades_per_trader_per_market(
213
  category_orders={
214
  "market_creator": ["pearl", "quickstart", "all"],
215
  "trader_market": [
216
- ("agent", "pearl"),
217
- ("non_agent", "pearl"),
218
- ("agent", "quickstart"),
219
- ("non_agent", "quickstart"),
220
- ("agent", "all"),
221
- ("non_agent", "all"),
222
  ],
223
  },
224
  # facet_col="trader_type",
 
111
 
112
  # Create binary staking category
113
  final_traders["trader_type"] = final_traders["staking"].apply(
114
+ lambda x: "non_Olas" if x == "non_Olas" else "Olas"
115
  )
116
  final_traders["trader_market"] = final_traders.apply(
117
  lambda x: (x["trader_type"], x["market_creator"]), axis=1
118
  )
119
  color_discrete_sequence = ["purple", "goldenrod", "darkgreen"]
120
+ if trader_filter == "Olas":
121
  color_discrete_sequence = ["darkviolet", "goldenrod", "green"]
122
+ final_traders = final_traders.loc[final_traders["trader_type"] == "Olas"]
123
+ elif trader_filter == "non_Olas":
124
+ final_traders = final_traders.loc[final_traders["trader_type"] != "Olas"]
125
 
126
  total_bet_amount = (
127
  final_traders.groupby(
 
149
  category_orders={
150
  "market_creator": ["pearl", "quickstart", "all"],
151
  "trader_market": [
152
+ ("Olas", "pearl"),
153
+ ("non_Olas", "pearl"),
154
+ ("Olas", "quickstart"),
155
+ ("non_Olas", "quickstart"),
156
+ ("Olas", "all"),
157
+ ("non_Olas", "all"),
158
  ],
159
  },
160
  # facet_col="trader_type",
 
192
 
193
  # Create binary staking category
194
  final_traders["trader_type"] = final_traders["staking"].apply(
195
+ lambda x: "non_Olas" if x == "non_Olas" else "Olas"
196
  )
197
  final_traders["trader_market"] = final_traders.apply(
198
  lambda x: (x["trader_type"], x["market_creator"]), axis=1
199
  )
200
  color_discrete_sequence = ["purple", "goldenrod", "darkgreen"]
201
+ if trader_filter == "Olas":
202
  color_discrete_sequence = ["darkviolet", "goldenrod", "green"]
203
+ final_traders = final_traders.loc[final_traders["trader_type"] == "Olas"]
204
+ elif trader_filter == "non_Olas":
205
+ final_traders = final_traders.loc[final_traders["trader_type"] != "Olas"]
206
 
207
  fig = px.box(
208
  final_traders,
 
213
  category_orders={
214
  "market_creator": ["pearl", "quickstart", "all"],
215
  "trader_market": [
216
+ ("Olas", "pearl"),
217
+ ("non_Olas", "pearl"),
218
+ ("Olas", "quickstart"),
219
+ ("non_Olas", "quickstart"),
220
+ ("Olas", "all"),
221
+ ("non_Olas", "all"),
222
  ],
223
  },
224
  # facet_col="trader_type",
tabs/trader_plots.py CHANGED
@@ -199,7 +199,7 @@ def plot_total_bet_amount(
199
  final_traders = final_traders.sort_values(by="creation_date", ascending=True)
200
  # Create binary staking category
201
  final_traders["trader_type"] = final_traders["staking"].apply(
202
- lambda x: "non_agent" if x == "non_agent" else "agent"
203
  )
204
 
205
  total_bet_amount = (
@@ -245,12 +245,12 @@ def plot_total_bet_amount(
245
  category_orders={
246
  "market_creator": ["pearl", "quickstart", "all"],
247
  "trader_market": [
248
- ("agent", "pearl"),
249
- ("non_agent", "pearl"),
250
- ("agent", "quickstart"),
251
- ("non_agent", "quickstart"),
252
- ("agent", "all"),
253
- ("non_agent", "all"),
254
  ],
255
  },
256
  barmode="group",
@@ -261,9 +261,7 @@ def plot_total_bet_amount(
261
  yaxis_title="Weekly total bet amount per trader type",
262
  legend=dict(yanchor="top", y=0.5),
263
  )
264
- # for axis in fig.layout:
265
- # if axis.startswith("xaxis"):
266
- # fig.layout[axis].update(title="Week")
267
  fig.update_xaxes(tickformat="%b %d")
268
  # Update layout to force x-axis category order (hotfix for a sorting issue)
269
  fig.update_layout(xaxis={"categoryorder": "array", "categoryarray": all_dates})
 
199
  final_traders = final_traders.sort_values(by="creation_date", ascending=True)
200
  # Create binary staking category
201
  final_traders["trader_type"] = final_traders["staking"].apply(
202
+ lambda x: "non_Olas" if x == "non_Olas" else "Olas"
203
  )
204
 
205
  total_bet_amount = (
 
245
  category_orders={
246
  "market_creator": ["pearl", "quickstart", "all"],
247
  "trader_market": [
248
+ ("Olas", "pearl"),
249
+ ("non_Olas", "pearl"),
250
+ ("Olas", "quickstart"),
251
+ ("non_Olas", "quickstart"),
252
+ ("Olas", "all"),
253
+ ("non_Olas", "all"),
254
  ],
255
  },
256
  barmode="group",
 
261
  yaxis_title="Weekly total bet amount per trader type",
262
  legend=dict(yanchor="top", y=0.5),
263
  )
264
+
 
 
265
  fig.update_xaxes(tickformat="%b %d")
266
  # Update layout to force x-axis category order (hotfix for a sorting issue)
267
  fig.update_layout(xaxis={"categoryorder": "array", "categoryarray": all_dates})