cyberosa commited on
Commit
3ed8c7a
·
1 Parent(s): 6154c13

cleaning and correction on winning perc

Browse files
data/fpmms.parquet DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:86135bb64013c54d5180c31fca13235943eb39571e760a695dac2aaa1e9cb1ce
3
- size 436427
 
 
 
 
data/markets_live_data.parquet DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:69a3fffac1b1e11e818cdf3c709fd3006d6f93107df947693548a05bc66f337d
3
- size 145777
 
 
 
 
notebooks/winning_perc.ipynb ADDED
@@ -0,0 +1,400 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "import pandas as pd"
10
+ ]
11
+ },
12
+ {
13
+ "cell_type": "code",
14
+ "execution_count": 2,
15
+ "metadata": {},
16
+ "outputs": [],
17
+ "source": [
18
+ "all_trades = pd.read_parquet('../data/all_trades_profitability.parquet')"
19
+ ]
20
+ },
21
+ {
22
+ "cell_type": "code",
23
+ "execution_count": 4,
24
+ "metadata": {},
25
+ "outputs": [],
26
+ "source": [
27
+ "all_trades[\"creation_date\"] = all_trades[\"creation_timestamp\"].dt.date"
28
+ ]
29
+ },
30
+ {
31
+ "cell_type": "code",
32
+ "execution_count": 5,
33
+ "metadata": {},
34
+ "outputs": [
35
+ {
36
+ "name": "stderr",
37
+ "output_type": "stream",
38
+ "text": [
39
+ "/var/folders/gp/02mb1d514ng739czlxw1lhh00000gn/T/ipykernel_38171/1825242321.py:6: UserWarning: Converting to PeriodArray/Index representation will drop timezone information.\n",
40
+ " all_trades[\"creation_timestamp\"].dt.to_period(\"W\").dt.strftime(\"%b-%d\")\n"
41
+ ]
42
+ }
43
+ ],
44
+ "source": [
45
+ "all_trades = all_trades.sort_values(\n",
46
+ " by=\"creation_timestamp\", ascending=True\n",
47
+ ")\n",
48
+ "\n",
49
+ "all_trades[\"month_year_week\"] = (\n",
50
+ " all_trades[\"creation_timestamp\"].dt.to_period(\"W\").dt.strftime(\"%b-%d\")\n",
51
+ ")"
52
+ ]
53
+ },
54
+ {
55
+ "cell_type": "code",
56
+ "execution_count": 6,
57
+ "metadata": {},
58
+ "outputs": [],
59
+ "source": [
60
+ "def compute_winning_metric_per_trader_per_market_creator(\n",
61
+ " trader_address: str, week_traders_data: pd.DataFrame, market_creator: str = \"all\"\n",
62
+ ") -> float:\n",
63
+ " assert \"market_creator\" in week_traders_data.columns\n",
64
+ " filtered_traders_data = week_traders_data.loc[\n",
65
+ " week_traders_data[\"trader_address\"] == trader_address\n",
66
+ " ]\n",
67
+ " if market_creator != \"all\": # compute only for the specific market creator\n",
68
+ " filtered_traders_data = filtered_traders_data.loc[\n",
69
+ " filtered_traders_data[\"market_creator\"] == market_creator\n",
70
+ " ]\n",
71
+ " if len(filtered_traders_data) == 0:\n",
72
+ " return None # No Data\n",
73
+ " winning_perc = (\n",
74
+ " filtered_traders_data[\"winning_trade\"].sum()\n",
75
+ " / filtered_traders_data[\"winning_trade\"].count()\n",
76
+ " * 100.0\n",
77
+ " )\n",
78
+ " return winning_perc"
79
+ ]
80
+ },
81
+ {
82
+ "cell_type": "code",
83
+ "execution_count": 7,
84
+ "metadata": {},
85
+ "outputs": [],
86
+ "source": [
87
+ "def merge_winning_metrics_by_trader(\n",
88
+ " trader: str, weekly_data: pd.DataFrame, week: str\n",
89
+ ") -> pd.DataFrame:\n",
90
+ " trader_metrics = []\n",
91
+ " # computation as specification 1 for all market creators\n",
92
+ " winning_metrics_all = {}\n",
93
+ " winning_metric_all = compute_winning_metric_per_trader_per_market_creator(\n",
94
+ " trader, weekly_data, market_creator=\"all\"\n",
95
+ " )\n",
96
+ " winning_metrics_all[\"winning_perc\"] = winning_metric_all\n",
97
+ " winning_metrics_all[\"month_year_week\"] = week\n",
98
+ " winning_metrics_all[\"market_creator\"] = \"all\"\n",
99
+ " trader_metrics.append(winning_metrics_all)\n",
100
+ " if week == \"Jul-21\":\n",
101
+ " print(f\"trader = {trader}, win_perc for all ={winning_metric_all}\")\n",
102
+ "\n",
103
+ " # computation as specification 1 for quickstart markets\n",
104
+ " winning_metrics_qs = {}\n",
105
+ " winning_metric = compute_winning_metric_per_trader_per_market_creator(\n",
106
+ " trader, weekly_data, market_creator=\"quickstart\"\n",
107
+ " )\n",
108
+ " if winning_metric:\n",
109
+ " winning_metrics_qs[\"winning_perc\"] = winning_metric\n",
110
+ " winning_metrics_qs[\"month_year_week\"] = week\n",
111
+ " winning_metrics_qs[\"market_creator\"] = \"quickstart\"\n",
112
+ " trader_metrics.append(winning_metrics_qs)\n",
113
+ "\n",
114
+ " # computation as specification 1 for pearl markets\n",
115
+ " winning_metrics_pearl = {}\n",
116
+ " winning_metric = compute_winning_metric_per_trader_per_market_creator(\n",
117
+ " trader, weekly_data, market_creator=\"pearl\"\n",
118
+ " )\n",
119
+ " if winning_metric:\n",
120
+ " winning_metrics_pearl[\"winning_perc\"] = winning_metric\n",
121
+ " winning_metrics_pearl[\"month_year_week\"] = week\n",
122
+ " winning_metrics_pearl[\"market_creator\"] = \"pearl\"\n",
123
+ " trader_metrics.append(winning_metrics_pearl)\n",
124
+ "\n",
125
+ " result = pd.DataFrame.from_dict(trader_metrics, orient=\"columns\")\n",
126
+ " # tqdm.write(f\"Total length of all winning metrics for this week = {len(result)}\")\n",
127
+ " return result"
128
+ ]
129
+ },
130
+ {
131
+ "cell_type": "code",
132
+ "execution_count": 27,
133
+ "metadata": {},
134
+ "outputs": [],
135
+ "source": [
136
+ "def win_metrics_trader_level(weekly_data):\n",
137
+ " winning_trades = (\n",
138
+ " weekly_data.groupby([\"month_year_week\", \"market_creator\",\"trader_address\"], sort=False)[\n",
139
+ " \"winning_trade\"\n",
140
+ " ].sum()\n",
141
+ " / weekly_data.groupby([\"month_year_week\", \"market_creator\",\"trader_address\"], sort=False)[\n",
142
+ " \"winning_trade\"\n",
143
+ " ].count()\n",
144
+ " * 100\n",
145
+ " )\n",
146
+ " # winning_trades is a series, give it a dataframe\n",
147
+ " winning_trades = winning_trades.reset_index()\n",
148
+ " winning_trades.columns = winning_trades.columns.astype(str)\n",
149
+ " winning_trades.columns = [\"month_year_week\", \"market_creator\", \"trader_address\", \"winning_trade\"]\n",
150
+ " winning_trades.rename(columns={\"winning_trade\": \"winning_perc\"})\n",
151
+ " return winning_trades"
152
+ ]
153
+ },
154
+ {
155
+ "cell_type": "code",
156
+ "execution_count": 28,
157
+ "metadata": {},
158
+ "outputs": [
159
+ {
160
+ "data": {
161
+ "text/html": [
162
+ "<div>\n",
163
+ "<style scoped>\n",
164
+ " .dataframe tbody tr th:only-of-type {\n",
165
+ " vertical-align: middle;\n",
166
+ " }\n",
167
+ "\n",
168
+ " .dataframe tbody tr th {\n",
169
+ " vertical-align: top;\n",
170
+ " }\n",
171
+ "\n",
172
+ " .dataframe thead th {\n",
173
+ " text-align: right;\n",
174
+ " }\n",
175
+ "</style>\n",
176
+ "<table border=\"1\" class=\"dataframe\">\n",
177
+ " <thead>\n",
178
+ " <tr style=\"text-align: right;\">\n",
179
+ " <th></th>\n",
180
+ " <th>month_year_week</th>\n",
181
+ " <th>market_creator</th>\n",
182
+ " <th>trader_address</th>\n",
183
+ " <th>winning_trade</th>\n",
184
+ " </tr>\n",
185
+ " </thead>\n",
186
+ " <tbody>\n",
187
+ " <tr>\n",
188
+ " <th>0</th>\n",
189
+ " <td>Jul-21</td>\n",
190
+ " <td>all</td>\n",
191
+ " <td>0x95ecc70d9f4feb162ed9f41c4432d990c36c8f57</td>\n",
192
+ " <td>33.333333</td>\n",
193
+ " </tr>\n",
194
+ " <tr>\n",
195
+ " <th>1</th>\n",
196
+ " <td>Jul-21</td>\n",
197
+ " <td>quickstart</td>\n",
198
+ " <td>0x95ecc70d9f4feb162ed9f41c4432d990c36c8f57</td>\n",
199
+ " <td>33.333333</td>\n",
200
+ " </tr>\n",
201
+ " <tr>\n",
202
+ " <th>2</th>\n",
203
+ " <td>Jul-21</td>\n",
204
+ " <td>quickstart</td>\n",
205
+ " <td>0xf089874165be0377680683fd5187a058dea82683</td>\n",
206
+ " <td>100.000000</td>\n",
207
+ " </tr>\n",
208
+ " <tr>\n",
209
+ " <th>3</th>\n",
210
+ " <td>Jul-21</td>\n",
211
+ " <td>all</td>\n",
212
+ " <td>0xf089874165be0377680683fd5187a058dea82683</td>\n",
213
+ " <td>100.000000</td>\n",
214
+ " </tr>\n",
215
+ " <tr>\n",
216
+ " <th>4</th>\n",
217
+ " <td>Jul-21</td>\n",
218
+ " <td>quickstart</td>\n",
219
+ " <td>0x49f4e3d8edc85efda9b0a36d96e406a59b13fcc2</td>\n",
220
+ " <td>50.000000</td>\n",
221
+ " </tr>\n",
222
+ " </tbody>\n",
223
+ "</table>\n",
224
+ "</div>"
225
+ ],
226
+ "text/plain": [
227
+ " month_year_week market_creator trader_address \\\n",
228
+ "0 Jul-21 all 0x95ecc70d9f4feb162ed9f41c4432d990c36c8f57 \n",
229
+ "1 Jul-21 quickstart 0x95ecc70d9f4feb162ed9f41c4432d990c36c8f57 \n",
230
+ "2 Jul-21 quickstart 0xf089874165be0377680683fd5187a058dea82683 \n",
231
+ "3 Jul-21 all 0xf089874165be0377680683fd5187a058dea82683 \n",
232
+ "4 Jul-21 quickstart 0x49f4e3d8edc85efda9b0a36d96e406a59b13fcc2 \n",
233
+ "\n",
234
+ " winning_trade \n",
235
+ "0 33.333333 \n",
236
+ "1 33.333333 \n",
237
+ "2 100.000000 \n",
238
+ "3 100.000000 \n",
239
+ "4 50.000000 "
240
+ ]
241
+ },
242
+ "execution_count": 28,
243
+ "metadata": {},
244
+ "output_type": "execute_result"
245
+ }
246
+ ],
247
+ "source": [
248
+ "from tqdm import tqdm\n",
249
+ "\n",
250
+ "market_all = all_trades.copy(deep=True)\n",
251
+ "market_all[\"market_creator\"] = \"all\"\n",
252
+ "\n",
253
+ "# merging both dataframes\n",
254
+ "final_traders = pd.concat([market_all, all_trades], ignore_index=True)\n",
255
+ "final_traders = final_traders.sort_values(\n",
256
+ " by=\"creation_timestamp\", ascending=True)\n",
257
+ "\n",
258
+ "\n",
259
+ "winning_df = win_metrics_trader_level(final_traders)\n",
260
+ "winning_df.head()"
261
+ ]
262
+ },
263
+ {
264
+ "cell_type": "code",
265
+ "execution_count": null,
266
+ "metadata": {},
267
+ "outputs": [],
268
+ "source": [
269
+ "winning_df = compute_winning_metrics_by_trader(all_trades)"
270
+ ]
271
+ },
272
+ {
273
+ "cell_type": "code",
274
+ "execution_count": 29,
275
+ "metadata": {},
276
+ "outputs": [],
277
+ "source": [
278
+ "winning_pearl = winning_df.loc[winning_df[\"market_creator\"]==\"pearl\"]"
279
+ ]
280
+ },
281
+ {
282
+ "cell_type": "code",
283
+ "execution_count": 30,
284
+ "metadata": {},
285
+ "outputs": [
286
+ {
287
+ "data": {
288
+ "text/html": [
289
+ "<div>\n",
290
+ "<style scoped>\n",
291
+ " .dataframe tbody tr th:only-of-type {\n",
292
+ " vertical-align: middle;\n",
293
+ " }\n",
294
+ "\n",
295
+ " .dataframe tbody tr th {\n",
296
+ " vertical-align: top;\n",
297
+ " }\n",
298
+ "\n",
299
+ " .dataframe thead th {\n",
300
+ " text-align: right;\n",
301
+ " }\n",
302
+ "</style>\n",
303
+ "<table border=\"1\" class=\"dataframe\">\n",
304
+ " <thead>\n",
305
+ " <tr style=\"text-align: right;\">\n",
306
+ " <th></th>\n",
307
+ " <th>month_year_week</th>\n",
308
+ " <th>market_creator</th>\n",
309
+ " <th>trader_address</th>\n",
310
+ " <th>winning_trade</th>\n",
311
+ " </tr>\n",
312
+ " </thead>\n",
313
+ " <tbody>\n",
314
+ " <tr>\n",
315
+ " <th>7</th>\n",
316
+ " <td>Jul-21</td>\n",
317
+ " <td>pearl</td>\n",
318
+ " <td>0xe283e408c6017447da9fe092d52c386753699680</td>\n",
319
+ " <td>0.0</td>\n",
320
+ " </tr>\n",
321
+ " <tr>\n",
322
+ " <th>29</th>\n",
323
+ " <td>Jul-21</td>\n",
324
+ " <td>pearl</td>\n",
325
+ " <td>0x913dedfcfb335a49509b67acb3b1ab2612a5c0c9</td>\n",
326
+ " <td>100.0</td>\n",
327
+ " </tr>\n",
328
+ " <tr>\n",
329
+ " <th>30</th>\n",
330
+ " <td>Jul-21</td>\n",
331
+ " <td>pearl</td>\n",
332
+ " <td>0x1b9e28e7f817e1312636a485f31cca8a4be61fac</td>\n",
333
+ " <td>0.0</td>\n",
334
+ " </tr>\n",
335
+ " <tr>\n",
336
+ " <th>33</th>\n",
337
+ " <td>Jul-21</td>\n",
338
+ " <td>pearl</td>\n",
339
+ " <td>0xe0113a139f591efa8bf5e19308c7c27199682d77</td>\n",
340
+ " <td>0.0</td>\n",
341
+ " </tr>\n",
342
+ " <tr>\n",
343
+ " <th>37</th>\n",
344
+ " <td>Jul-21</td>\n",
345
+ " <td>pearl</td>\n",
346
+ " <td>0x66a022b113b41e08d90cfd9468b8b6565d6ea995</td>\n",
347
+ " <td>100.0</td>\n",
348
+ " </tr>\n",
349
+ " </tbody>\n",
350
+ "</table>\n",
351
+ "</div>"
352
+ ],
353
+ "text/plain": [
354
+ " month_year_week market_creator trader_address \\\n",
355
+ "7 Jul-21 pearl 0xe283e408c6017447da9fe092d52c386753699680 \n",
356
+ "29 Jul-21 pearl 0x913dedfcfb335a49509b67acb3b1ab2612a5c0c9 \n",
357
+ "30 Jul-21 pearl 0x1b9e28e7f817e1312636a485f31cca8a4be61fac \n",
358
+ "33 Jul-21 pearl 0xe0113a139f591efa8bf5e19308c7c27199682d77 \n",
359
+ "37 Jul-21 pearl 0x66a022b113b41e08d90cfd9468b8b6565d6ea995 \n",
360
+ "\n",
361
+ " winning_trade \n",
362
+ "7 0.0 \n",
363
+ "29 100.0 \n",
364
+ "30 0.0 \n",
365
+ "33 0.0 \n",
366
+ "37 100.0 "
367
+ ]
368
+ },
369
+ "execution_count": 30,
370
+ "metadata": {},
371
+ "output_type": "execute_result"
372
+ }
373
+ ],
374
+ "source": [
375
+ "winning_pearl.head()"
376
+ ]
377
+ }
378
+ ],
379
+ "metadata": {
380
+ "kernelspec": {
381
+ "display_name": "hf_dashboards",
382
+ "language": "python",
383
+ "name": "python3"
384
+ },
385
+ "language_info": {
386
+ "codemirror_mode": {
387
+ "name": "ipython",
388
+ "version": 3
389
+ },
390
+ "file_extension": ".py",
391
+ "mimetype": "text/x-python",
392
+ "name": "python",
393
+ "nbconvert_exporter": "python",
394
+ "pygments_lexer": "ipython3",
395
+ "version": "3.12.2"
396
+ }
397
+ },
398
+ "nbformat": 4,
399
+ "nbformat_minor": 2
400
+ }
scripts/metrics.py CHANGED
@@ -76,28 +76,6 @@ def compute_trader_metrics_by_market_creator(
76
  return metrics
77
 
78
 
79
- def compute_winning_metric_per_trader_per_market_creator(
80
- trader_address: str, week_traders_data: pd.DataFrame, market_creator: str = "all"
81
- ) -> float:
82
- assert "market_creator" in week_traders_data.columns
83
- filtered_traders_data = week_traders_data.loc[
84
- week_traders_data["trader_address"] == trader_address
85
- ]
86
- if market_creator != "all": # compute only for the specific market creator
87
- filtered_traders_data = filtered_traders_data.loc[
88
- filtered_traders_data["market_creator"] == market_creator
89
- ]
90
- if len(filtered_traders_data) == 0:
91
- tqdm.write(f"No data. Skipping market creator {market_creator}")
92
- return None # No Data
93
- winning_perc = (
94
- filtered_traders_data["winning_trade"].sum()
95
- / filtered_traders_data["winning_trade"].count()
96
- * 100.0
97
- )
98
- return winning_perc
99
-
100
-
101
  def merge_trader_metrics(
102
  trader: str, weekly_data: pd.DataFrame, week: str
103
  ) -> pd.DataFrame:
@@ -165,45 +143,21 @@ def merge_trader_metrics_by_type(
165
  return result
166
 
167
 
168
- def merge_winning_metrics_by_trader(
169
- trader: str, weekly_data: pd.DataFrame, week: str
170
- ) -> pd.DataFrame:
171
- trader_metrics = []
172
- # computation as specification 1 for all market creators
173
- winning_metrics_all = {}
174
- winning_metric_all = compute_winning_metric_per_trader_per_market_creator(
175
- trader, weekly_data, market_creator="all"
176
- )
177
- winning_metrics_all["winning_perc"] = winning_metric_all
178
- winning_metrics_all["month_year_week"] = week
179
- winning_metrics_all["market_creator"] = "all"
180
- trader_metrics.append(winning_metrics_all)
181
-
182
- # computation as specification 1 for quickstart markets
183
- winning_metrics_qs = {}
184
- winning_metric = compute_winning_metric_per_trader_per_market_creator(
185
- trader, weekly_data, market_creator="quickstart"
186
- )
187
- if winning_metric:
188
- winning_metrics_qs["winning_perc"] = winning_metric
189
- winning_metrics_qs["month_year_week"] = week
190
- winning_metrics_qs["market_creator"] = "quickstart"
191
- trader_metrics.append(winning_metrics_qs)
192
-
193
- # computation as specification 1 for pearl markets
194
- winning_metrics_pearl = {}
195
- winning_metric = compute_winning_metric_per_trader_per_market_creator(
196
- trader, weekly_data, market_creator="pearl"
197
  )
198
- if winning_metric:
199
- winning_metrics_pearl["winning_perc"] = winning_metric
200
- winning_metrics_pearl["month_year_week"] = week
201
- winning_metrics_pearl["market_creator"] = "pearl"
202
- trader_metrics.append(winning_metrics_pearl)
203
-
204
- result = pd.DataFrame.from_dict(trader_metrics, orient="columns")
205
- # tqdm.write(f"Total length of all winning metrics for this week = {len(result)}")
206
- return result
207
 
208
 
209
  def compute_weekly_metrics_by_market_creator(
@@ -248,16 +202,13 @@ def compute_winning_metrics_by_trader(
248
  trader_agents_data: pd.DataFrame,
249
  ) -> pd.DataFrame:
250
  """Function to compute the winning metrics at the trader level per week and with different market creators"""
251
- contents = []
252
- all_weeks = list(trader_agents_data.month_year_week.unique())
253
- for week in all_weeks:
254
- weekly_data = trader_agents_data.loc[
255
- trader_agents_data["month_year_week"] == week
256
- ]
257
- print(f"Computing weekly metrics for week ={week} by trader type")
258
- # traverse each trader agent
259
- traders = list(weekly_data.trader_address.unique())
260
- for trader in tqdm(traders, desc=f"Trader' metrics", unit="metrics"):
261
- contents.append(merge_winning_metrics_by_trader(trader, weekly_data, week))
262
- print("End computing all weekly winning metrics by trader")
263
- return pd.concat(contents, ignore_index=True)
 
76
  return metrics
77
 
78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  def merge_trader_metrics(
80
  trader: str, weekly_data: pd.DataFrame, week: str
81
  ) -> pd.DataFrame:
 
143
  return result
144
 
145
 
146
+ def win_metrics_trader_level(weekly_data):
147
+ winning_trades = (
148
+ weekly_data.groupby(
149
+ ["month_year_week", "market_creator", "trader_address"], sort=False
150
+ )["winning_trade"].sum()
151
+ / weekly_data.groupby(
152
+ ["month_year_week", "market_creator", "trader_address"], sort=False
153
+ )["winning_trade"].count()
154
+ * 100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  )
156
+ # winning_trades is a series, give it a dataframe
157
+ winning_trades = winning_trades.reset_index()
158
+ winning_trades.columns = winning_trades.columns.astype(str)
159
+ winning_trades.rename(columns={"winning_trade": "winning_perc"}, inplace=True)
160
+ return winning_trades
 
 
 
 
161
 
162
 
163
  def compute_weekly_metrics_by_market_creator(
 
202
  trader_agents_data: pd.DataFrame,
203
  ) -> pd.DataFrame:
204
  """Function to compute the winning metrics at the trader level per week and with different market creators"""
205
+ market_all = trader_agents_data.copy(deep=True)
206
+ market_all["market_creator"] = "all"
207
+
208
+ # merging both dataframes
209
+ final_traders = pd.concat([market_all, trader_agents_data], ignore_index=True)
210
+ final_traders = final_traders.sort_values(by="creation_timestamp", ascending=True)
211
+
212
+ winning_df = win_metrics_trader_level(final_traders)
213
+ winning_df.head()
214
+ return winning_df