cyberosa
commited on
Commit
·
211cb3f
1
Parent(s):
90b36ae
updating scripts
Browse files- scripts/closed_markets_divergence.py +2 -6
- scripts/metrics.py +15 -6
- scripts/num_mech_calls.py +1 -1
- scripts/retention_metrics.py +2 -0
scripts/closed_markets_divergence.py
CHANGED
|
@@ -1,6 +1,4 @@
|
|
| 1 |
-
from pathlib import Path
|
| 2 |
import os
|
| 3 |
-
import math
|
| 4 |
import pandas as pd
|
| 5 |
import numpy as np
|
| 6 |
from typing import Any, Union
|
|
@@ -11,6 +9,7 @@ from concurrent.futures import ThreadPoolExecutor, as_completed
|
|
| 11 |
from tqdm import tqdm
|
| 12 |
import time
|
| 13 |
from datetime import datetime
|
|
|
|
| 14 |
|
| 15 |
NUM_WORKERS = 10
|
| 16 |
IPFS_POLL_INTERVAL = 0.2
|
|
@@ -18,9 +17,6 @@ INVALID_ANSWER_HEX = (
|
|
| 18 |
"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
| 19 |
)
|
| 20 |
INVALID_ANSWER = -1
|
| 21 |
-
SCRIPTS_DIR = Path(__file__).parent
|
| 22 |
-
ROOT_DIR = SCRIPTS_DIR.parent
|
| 23 |
-
DATA_DIR = ROOT_DIR / "data"
|
| 24 |
SUBGRAPH_API_KEY = os.environ.get("SUBGRAPH_API_KEY", None)
|
| 25 |
OMEN_SUBGRAPH_URL = Template(
|
| 26 |
"""https://gateway-arbitrum.network.thegraph.com/api/${subgraph_api_key}/subgraphs/id/9fUVQpFwzpdWS9bq5WkAnmKbNNcoBwatMR4yZq81pbbz"""
|
|
@@ -105,7 +101,7 @@ def convert_hex_to_int(x: Union[str, float]) -> Union[int, float]:
|
|
| 105 |
def get_closed_markets():
|
| 106 |
print("Reading parquet file with closed markets data from trades")
|
| 107 |
try:
|
| 108 |
-
markets = pd.read_parquet(
|
| 109 |
except Exception:
|
| 110 |
print("Error reading the parquet file")
|
| 111 |
|
|
|
|
|
|
|
| 1 |
import os
|
|
|
|
| 2 |
import pandas as pd
|
| 3 |
import numpy as np
|
| 4 |
from typing import Any, Union
|
|
|
|
| 9 |
from tqdm import tqdm
|
| 10 |
import time
|
| 11 |
from datetime import datetime
|
| 12 |
+
from utils import DATA_DIR, TMP_DIR
|
| 13 |
|
| 14 |
NUM_WORKERS = 10
|
| 15 |
IPFS_POLL_INTERVAL = 0.2
|
|
|
|
| 17 |
"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
| 18 |
)
|
| 19 |
INVALID_ANSWER = -1
|
|
|
|
|
|
|
|
|
|
| 20 |
SUBGRAPH_API_KEY = os.environ.get("SUBGRAPH_API_KEY", None)
|
| 21 |
OMEN_SUBGRAPH_URL = Template(
|
| 22 |
"""https://gateway-arbitrum.network.thegraph.com/api/${subgraph_api_key}/subgraphs/id/9fUVQpFwzpdWS9bq5WkAnmKbNNcoBwatMR4yZq81pbbz"""
|
|
|
|
| 101 |
def get_closed_markets():
|
| 102 |
print("Reading parquet file with closed markets data from trades")
|
| 103 |
try:
|
| 104 |
+
markets = pd.read_parquet(TMP_DIR / "fpmmTrades.parquet")
|
| 105 |
except Exception:
|
| 106 |
print("Error reading the parquet file")
|
| 107 |
|
scripts/metrics.py
CHANGED
|
@@ -252,21 +252,30 @@ def compute_daily_metrics_by_market_creator(
|
|
| 252 |
|
| 253 |
|
| 254 |
def compute_winning_metrics_by_trader(
|
| 255 |
-
traders_data: pd.DataFrame, trader_filter: str = None
|
| 256 |
) -> pd.DataFrame:
|
| 257 |
"""Function to compute the winning metrics at the trader level per week and with different market creators"""
|
| 258 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 259 |
market_all["market_creator"] = "all"
|
| 260 |
|
| 261 |
# merging both dataframes
|
| 262 |
-
final_traders = pd.concat([market_all,
|
| 263 |
final_traders = final_traders.sort_values(by="creation_timestamp", ascending=True)
|
| 264 |
|
| 265 |
-
if trader_filter == "
|
| 266 |
-
final_traders = final_traders.loc[final_traders["staking"] != "non_Olas"]
|
| 267 |
-
else: # non_Olas traders
|
| 268 |
final_traders = final_traders.loc[final_traders["staking"] == "non_Olas"]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 269 |
|
|
|
|
|
|
|
| 270 |
winning_df = win_metrics_trader_level(final_traders)
|
| 271 |
winning_df.head()
|
| 272 |
return winning_df
|
|
|
|
| 252 |
|
| 253 |
|
| 254 |
def compute_winning_metrics_by_trader(
|
| 255 |
+
traders_data: pd.DataFrame, unknown_info: pd.DataFrame, trader_filter: str = None
|
| 256 |
) -> pd.DataFrame:
|
| 257 |
"""Function to compute the winning metrics at the trader level per week and with different market creators"""
|
| 258 |
+
if len(unknown_info) > 0:
|
| 259 |
+
all_data = pd.concat([traders_data, unknown_info], axis=0)
|
| 260 |
+
else:
|
| 261 |
+
all_data = traders_data
|
| 262 |
+
|
| 263 |
+
market_all = all_data.copy(deep=True)
|
| 264 |
market_all["market_creator"] = "all"
|
| 265 |
|
| 266 |
# merging both dataframes
|
| 267 |
+
final_traders = pd.concat([market_all, all_data], ignore_index=True)
|
| 268 |
final_traders = final_traders.sort_values(by="creation_timestamp", ascending=True)
|
| 269 |
|
| 270 |
+
if trader_filter == "non_Olas": # non_Olas
|
|
|
|
|
|
|
| 271 |
final_traders = final_traders.loc[final_traders["staking"] == "non_Olas"]
|
| 272 |
+
elif trader_filter == "Olas":
|
| 273 |
+
final_traders = final_traders.loc[final_traders["staking"] != "non_Olas"]
|
| 274 |
+
else: # all traders
|
| 275 |
+
print("No filtering")
|
| 276 |
|
| 277 |
+
if len(final_traders) == 0:
|
| 278 |
+
return pd.DataFrame()
|
| 279 |
winning_df = win_metrics_trader_level(final_traders)
|
| 280 |
winning_df.head()
|
| 281 |
return winning_df
|
scripts/num_mech_calls.py
CHANGED
|
@@ -69,7 +69,7 @@ def compute_total_mech_calls():
|
|
| 69 |
print(f"Error updating the invalid trades parquet {e}")
|
| 70 |
|
| 71 |
print("Reading trades weekly info file")
|
| 72 |
-
fpmmTrades = pd.read_parquet(
|
| 73 |
try:
|
| 74 |
fpmmTrades["creationTimestamp"] = fpmmTrades["creationTimestamp"].apply(
|
| 75 |
lambda x: transform_to_datetime(x)
|
|
|
|
| 69 |
print(f"Error updating the invalid trades parquet {e}")
|
| 70 |
|
| 71 |
print("Reading trades weekly info file")
|
| 72 |
+
fpmmTrades = pd.read_parquet(TMP_DIR / "fpmmTrades.parquet")
|
| 73 |
try:
|
| 74 |
fpmmTrades["creationTimestamp"] = fpmmTrades["creationTimestamp"].apply(
|
| 75 |
lambda x: transform_to_datetime(x)
|
scripts/retention_metrics.py
CHANGED
|
@@ -106,6 +106,8 @@ def calculate_cohort_retention(
|
|
| 106 |
df_filtered = df.loc[
|
| 107 |
(df["market_creator"] == market_creator) & (df["trader_type"] == trader_type)
|
| 108 |
]
|
|
|
|
|
|
|
| 109 |
df_filtered = df_filtered.sort_values(by="creation_timestamp", ascending=True)
|
| 110 |
# Get first week of activity for each trader
|
| 111 |
first_activity = (
|
|
|
|
| 106 |
df_filtered = df.loc[
|
| 107 |
(df["market_creator"] == market_creator) & (df["trader_type"] == trader_type)
|
| 108 |
]
|
| 109 |
+
if len(df_filtered) == 0:
|
| 110 |
+
return pd.DataFrame()
|
| 111 |
df_filtered = df_filtered.sort_values(by="creation_timestamp", ascending=True)
|
| 112 |
# Get first week of activity for each trader
|
| 113 |
first_activity = (
|