cyberosa commited on
Commit
7f9e80f
·
1 Parent(s): 577dd09

updated daily metrics graphs

Browse files
Files changed (2) hide show
  1. app.py +100 -34
  2. tabs/daily_graphs.py +9 -7
app.py CHANGED
@@ -21,7 +21,7 @@ from tabs.trader_plots import (
21
  from tabs.daily_graphs import (
22
  get_current_week_data,
23
  plot_daily_metrics,
24
- trade_daily_metric_choices,
25
  default_daily_metric,
26
  )
27
  from scripts.utils import get_traders_family
@@ -242,7 +242,7 @@ with demo:
242
  inputs=trader_na_details_selector,
243
  outputs=na_trader_markets_plot,
244
  )
245
- with gr.TabItem("📅 Daily metrics (WIP)"):
246
  current_week_trades = get_current_week_data(trades_df=trader_agents_data)
247
  live_trades_current_week = get_current_week_data(trades_df=daily_info)
248
  if len(current_week_trades) > 0:
@@ -255,14 +255,13 @@ with demo:
255
  live_metrics_by_market_creator = compute_daily_metrics_by_market_creator(
256
  live_trades_current_week, trader_filter=None, live_metrics=True
257
  )
258
- print("live metrics dataframe")
259
- print(live_metrics_by_market_creator.head())
260
  with gr.Row():
261
  gr.Markdown("# Daily live metrics for all trades")
262
  with gr.Row():
263
  trade_live_details_selector = gr.Dropdown(
264
  label="Select a daily live metric",
265
- choices=trade_daily_metric_choices,
266
  value=default_daily_metric,
267
  )
268
 
@@ -288,40 +287,107 @@ with demo:
288
  )
289
 
290
  with gr.Row():
291
- gr.Markdown("# Daily profitability metrics available for all trades")
292
- if len(current_week_trades) > 0:
293
- with gr.Row():
294
- trader_daily_details_selector = gr.Dropdown(
295
- label="Select a daily trade metric",
296
- choices=trader_metric_choices,
297
- value=default_trader_metric,
 
 
 
 
 
 
 
298
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
299
 
300
- with gr.Row():
301
- with gr.Column(scale=3):
302
- trader_daily_details_plot = plot_daily_metrics(
303
- metric_name=default_trader_metric,
304
- trades_df=daily_prof_metrics_by_market_creator,
305
- )
306
- with gr.Column(scale=1):
307
- trader_details_text = get_metrics_text(daily=True)
308
-
309
- def update_trader_daily_details(
310
- trade_detail, trader_daily_details_plot
311
- ):
312
- new_a_plot = plot_daily_metrics(
313
- metric_name=trade_detail,
314
- trades_df=daily_prof_metrics_by_market_creator,
315
  )
316
- return new_a_plot
 
317
 
318
- trader_daily_details_selector.change(
319
- update_trader_daily_details,
320
- inputs=[trader_daily_details_selector, trader_daily_details_plot],
321
- outputs=[trader_daily_details_plot],
 
 
 
322
  )
323
- else:
324
- gr.Markdown("Data not available yet")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
 
326
  with gr.TabItem("📉Closed Markets Kullback–Leibler divergence"):
327
  with gr.Row():
 
21
  from tabs.daily_graphs import (
22
  get_current_week_data,
23
  plot_daily_metrics,
24
+ trader_daily_metric_choices,
25
  default_daily_metric,
26
  )
27
  from scripts.utils import get_traders_family
 
242
  inputs=trader_na_details_selector,
243
  outputs=na_trader_markets_plot,
244
  )
245
+ with gr.TabItem("📅 Daily metrics"):
246
  current_week_trades = get_current_week_data(trades_df=trader_agents_data)
247
  live_trades_current_week = get_current_week_data(trades_df=daily_info)
248
  if len(current_week_trades) > 0:
 
255
  live_metrics_by_market_creator = compute_daily_metrics_by_market_creator(
256
  live_trades_current_week, trader_filter=None, live_metrics=True
257
  )
258
+
 
259
  with gr.Row():
260
  gr.Markdown("# Daily live metrics for all trades")
261
  with gr.Row():
262
  trade_live_details_selector = gr.Dropdown(
263
  label="Select a daily live metric",
264
+ choices=trader_daily_metric_choices,
265
  value=default_daily_metric,
266
  )
267
 
 
287
  )
288
 
289
  with gr.Row():
290
+ gr.Markdown("# Daily live metrics for trader Agents 🤖")
291
+ with gr.Row():
292
+ a_trader_live_details_selector = gr.Dropdown(
293
+ label="Select a daily live metric",
294
+ choices=trader_daily_metric_choices,
295
+ value=default_daily_metric,
296
+ )
297
+
298
+ with gr.Row():
299
+ with gr.Column(scale=3):
300
+ a_trader_live_details_plot = plot_daily_metrics(
301
+ metric_name=default_daily_metric,
302
+ trades_df=live_metrics_by_market_creator,
303
+ trader_filter="agent",
304
  )
305
+ with gr.Column(scale=1):
306
+ trade_details_text = get_metrics_text(daily=True)
307
+
308
+ def update_a_trader_live_details(trade_detail, a_trader_live_details_plot):
309
+ a_trader_plot = plot_daily_metrics(
310
+ metric_name=trade_detail,
311
+ trades_df=live_metrics_by_market_creator,
312
+ trader_filter="agent",
313
+ )
314
+ return a_trader_plot
315
+
316
+ a_trader_live_details_selector.change(
317
+ update_a_trader_live_details,
318
+ inputs=[a_trader_live_details_selector, a_trader_live_details_plot],
319
+ outputs=[a_trader_live_details_plot],
320
+ )
321
+ with gr.Row():
322
+ gr.Markdown("# Daily live metrics for Non-agent traders")
323
+ with gr.Row():
324
+ na_trader_live_details_selector = gr.Dropdown(
325
+ label="Select a daily live metric",
326
+ choices=trader_daily_metric_choices,
327
+ value=default_daily_metric,
328
+ )
329
 
330
+ with gr.Row():
331
+ with gr.Column(scale=3):
332
+ na_trader_live_details_plot = plot_daily_metrics(
333
+ metric_name=default_daily_metric,
334
+ trades_df=live_metrics_by_market_creator,
335
+ trader_filter="non_agent",
 
 
 
 
 
 
 
 
 
336
  )
337
+ with gr.Column(scale=1):
338
+ trade_details_text = get_metrics_text(daily=True)
339
 
340
+ def update_na_trader_live_details(
341
+ trade_detail, na_trader_live_details_plot
342
+ ):
343
+ na_trader_plot = plot_daily_metrics(
344
+ metric_name=trade_detail,
345
+ trades_df=live_metrics_by_market_creator,
346
+ trader_filter="non_agent",
347
  )
348
+ return na_trader_plot
349
+
350
+ na_trader_live_details_selector.change(
351
+ update_na_trader_live_details,
352
+ inputs=[na_trader_live_details_selector, na_trader_live_details_plot],
353
+ outputs=[na_trader_live_details_plot],
354
+ )
355
+
356
+ # with gr.Row():
357
+ # gr.Markdown("# Daily profitability metrics available for all trades")
358
+ # if len(current_week_trades) > 0:
359
+ # with gr.Row():
360
+ # trader_daily_details_selector = gr.Dropdown(
361
+ # label="Select a daily trade metric",
362
+ # choices=trader_metric_choices,
363
+ # value=default_trader_metric,
364
+ # )
365
+
366
+ # with gr.Row():
367
+ # with gr.Column(scale=3):
368
+ # trader_daily_details_plot = plot_daily_metrics(
369
+ # metric_name=default_trader_metric,
370
+ # trades_df=daily_prof_metrics_by_market_creator,
371
+ # )
372
+ # with gr.Column(scale=1):
373
+ # trader_details_text = get_metrics_text(daily=True)
374
+
375
+ # def update_trader_daily_details(
376
+ # trade_detail, trader_daily_details_plot
377
+ # ):
378
+ # new_a_plot = plot_daily_metrics(
379
+ # metric_name=trade_detail,
380
+ # trades_df=daily_prof_metrics_by_market_creator,
381
+ # )
382
+ # return new_a_plot
383
+
384
+ # trader_daily_details_selector.change(
385
+ # update_trader_daily_details,
386
+ # inputs=[trader_daily_details_selector, trader_daily_details_plot],
387
+ # outputs=[trader_daily_details_plot],
388
+ # )
389
+ # else:
390
+ # gr.Markdown("Data not available yet")
391
 
392
  with gr.TabItem("📉Closed Markets Kullback–Leibler divergence"):
393
  with gr.Row():
tabs/daily_graphs.py CHANGED
@@ -7,7 +7,7 @@ import plotly.graph_objects as go
7
  from datetime import datetime, timedelta
8
  from tqdm import tqdm
9
 
10
- trade_daily_metric_choices = ["mech calls", "collateral amount", "nr_trades"]
11
  default_daily_metric = "collateral amount"
12
  color_mapping = [
13
  "darkviolet",
@@ -105,7 +105,9 @@ def plot_daily_metrics(
105
  column_name = metric_name
106
  yaxis_title = "Total gross profit per trader (xDAI)"
107
 
 
108
  if trader_filter == "agent":
 
109
  trades_filtered = trades_df.loc[trades_df["staking"] != "non_agent"]
110
  elif trader_filter == "non_agent":
111
  trades_filtered = trades_df.loc[trades_df["staking"] == "non_agent"]
@@ -123,8 +125,8 @@ def plot_daily_metrics(
123
  trades_filtered,
124
  x="creation_date",
125
  y=column_name,
126
- color="trader_market",
127
- color_discrete_sequence=color_mapping,
128
  category_orders={
129
  "market_creator": ["pearl", "quickstart", "all"],
130
  "trader_market": [
@@ -136,7 +138,7 @@ def plot_daily_metrics(
136
  ("non_agent", "all"),
137
  ],
138
  },
139
- facet_col="market_creator",
140
  )
141
  fig.update_traces(boxmean=True)
142
  fig.update_layout(
@@ -144,9 +146,9 @@ def plot_daily_metrics(
144
  yaxis_title=yaxis_title,
145
  legend=dict(yanchor="top", y=0.5),
146
  )
147
- for axis in fig.layout:
148
- if axis.startswith("xaxis"):
149
- fig.layout[axis].update(title="Day")
150
  fig.update_xaxes(tickformat="%b %d")
151
  return gr.Plot(
152
  value=fig,
 
7
  from datetime import datetime, timedelta
8
  from tqdm import tqdm
9
 
10
+ trader_daily_metric_choices = ["mech calls", "collateral amount", "nr_trades"]
11
  default_daily_metric = "collateral amount"
12
  color_mapping = [
13
  "darkviolet",
 
105
  column_name = metric_name
106
  yaxis_title = "Total gross profit per trader (xDAI)"
107
 
108
+ color_discrete_sequence = ["purple", "goldenrod", "darkgreen"]
109
  if trader_filter == "agent":
110
+ color_discrete_sequence = ["darkviolet", "goldenrod", "green"]
111
  trades_filtered = trades_df.loc[trades_df["staking"] != "non_agent"]
112
  elif trader_filter == "non_agent":
113
  trades_filtered = trades_df.loc[trades_df["staking"] == "non_agent"]
 
125
  trades_filtered,
126
  x="creation_date",
127
  y=column_name,
128
+ color="market_creator",
129
+ color_discrete_sequence=color_discrete_sequence,
130
  category_orders={
131
  "market_creator": ["pearl", "quickstart", "all"],
132
  "trader_market": [
 
138
  ("non_agent", "all"),
139
  ],
140
  },
141
+ # facet_col="market_creator",
142
  )
143
  fig.update_traces(boxmean=True)
144
  fig.update_layout(
 
146
  yaxis_title=yaxis_title,
147
  legend=dict(yanchor="top", y=0.5),
148
  )
149
+ # for axis in fig.layout:
150
+ # if axis.startswith("xaxis"):
151
+ # fig.layout[axis].update(title="Day")
152
  fig.update_xaxes(tickformat="%b %d")
153
  return gr.Plot(
154
  value=fig,