Spaces:
Runtime error
Runtime error
cyberosa commited on
Commit Β·
c235ab0
1
Parent(s): 72d697e
updating weekly average roi
Browse files- tabs/agent_graphs.py +38 -28
tabs/agent_graphs.py
CHANGED
|
@@ -137,58 +137,68 @@ def get_twoweeks_rolling_average_roi(traders_data: pd.DataFrame) -> pd.DataFrame
|
|
| 137 |
|
| 138 |
# Rename columns
|
| 139 |
rolling_avg.rename(
|
| 140 |
-
columns={"roi": "rolling_avg_roi", "
|
| 141 |
inplace=True,
|
| 142 |
)
|
| 143 |
|
| 144 |
return rolling_avg
|
| 145 |
|
| 146 |
|
| 147 |
-
def get_weekly_average_roi(
|
| 148 |
-
"""Function to get the weekly average ROI
|
| 149 |
-
# Create a local copy of the dataframe
|
| 150 |
-
local_df = weekly_roi_df.copy()
|
| 151 |
|
| 152 |
-
#
|
| 153 |
-
local_df
|
| 154 |
-
|
| 155 |
-
|
|
|
|
|
|
|
| 156 |
|
| 157 |
-
#
|
| 158 |
-
|
| 159 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
)
|
| 161 |
-
|
|
|
|
| 162 |
|
| 163 |
|
| 164 |
def plot_weekly_average_roi(
|
| 165 |
-
|
| 166 |
) -> gr.Plot:
|
| 167 |
"""Function to plot the weekly average of ROI for pearl agents"""
|
| 168 |
# Get the list of unique addresses from the daa_pearl_df
|
|
|
|
| 169 |
unique_addresses = pearl_agents["safe_address"].unique()
|
| 170 |
# Filter the weekly_roi_df to include only those addresses
|
| 171 |
-
|
| 172 |
-
|
| 173 |
]
|
| 174 |
-
#
|
| 175 |
-
|
| 176 |
-
["
|
| 177 |
-
].copy()
|
| 178 |
-
# Remove duplicates
|
| 179 |
-
filtered_weekly_roi_df = filtered_weekly_roi_df.drop_duplicates(
|
| 180 |
-
subset=["month_year_week", "trader_address"]
|
| 181 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 182 |
# Get the weekly average ROI
|
| 183 |
-
weekly_avg_roi_df = get_weekly_average_roi(
|
| 184 |
# plot the weekly average ROI
|
| 185 |
print(weekly_avg_roi_df.head())
|
| 186 |
-
|
| 187 |
-
if "month_year_week" not in weekly_avg_roi_df.columns:
|
| 188 |
-
weekly_avg_roi_df = weekly_avg_roi_df.reset_index()
|
| 189 |
fig = px.line(
|
| 190 |
weekly_avg_roi_df,
|
| 191 |
-
x="
|
| 192 |
y="roi",
|
| 193 |
)
|
| 194 |
fig.update_layout(
|
|
|
|
| 137 |
|
| 138 |
# Rename columns
|
| 139 |
rolling_avg.rename(
|
| 140 |
+
columns={"roi": "rolling_avg_roi", "date": "creation_date"},
|
| 141 |
inplace=True,
|
| 142 |
)
|
| 143 |
|
| 144 |
return rolling_avg
|
| 145 |
|
| 146 |
|
| 147 |
+
def get_weekly_average_roi(traders_data: pd.DataFrame) -> pd.DataFrame:
|
| 148 |
+
"""Function to get the weekly average ROI by market_creator and total"""
|
|
|
|
|
|
|
| 149 |
|
| 150 |
+
# Create a copy to avoid SettingWithCopyWarning
|
| 151 |
+
local_df = traders_data.copy()
|
| 152 |
+
|
| 153 |
+
# Ensure creation_date is datetime64[ns]
|
| 154 |
+
# Since creation_date comes from .dt.date, it's a date object, not datetime
|
| 155 |
+
local_df["creation_date"] = pd.to_datetime(local_df["creation_date"])
|
| 156 |
|
| 157 |
+
# Aggregate ROI at the date level first
|
| 158 |
+
daily_avg = local_df.groupby("creation_date")["roi"].mean().reset_index()
|
| 159 |
+
|
| 160 |
+
# Set the datetime index
|
| 161 |
+
daily_avg = daily_avg.set_index("creation_date")
|
| 162 |
+
|
| 163 |
+
# Resample to weekly frequency and calculate mean
|
| 164 |
+
weekly_avg = daily_avg.resample("W").mean().reset_index()
|
| 165 |
+
|
| 166 |
+
# Rename columns for consistency
|
| 167 |
+
weekly_avg.rename(
|
| 168 |
+
columns={"date": "creation_date", "roi": "weekly_avg_roi"},
|
| 169 |
+
inplace=True,
|
| 170 |
)
|
| 171 |
+
|
| 172 |
+
return weekly_avg
|
| 173 |
|
| 174 |
|
| 175 |
def plot_weekly_average_roi(
|
| 176 |
+
traders_data: pd.DataFrame, pearl_agents: pd.DataFrame
|
| 177 |
) -> gr.Plot:
|
| 178 |
"""Function to plot the weekly average of ROI for pearl agents"""
|
| 179 |
# Get the list of unique addresses from the daa_pearl_df
|
| 180 |
+
# Get the list of unique addresses from the daa_pearl_df
|
| 181 |
unique_addresses = pearl_agents["safe_address"].unique()
|
| 182 |
# Filter the weekly_roi_df to include only those addresses
|
| 183 |
+
filtered_traders_data = traders_data[
|
| 184 |
+
traders_data["trader_address"].isin(unique_addresses)
|
| 185 |
]
|
| 186 |
+
# create the date column
|
| 187 |
+
filtered_traders_data["creation_timestamp"] = pd.to_datetime(
|
| 188 |
+
filtered_traders_data["creation_timestamp"]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 189 |
)
|
| 190 |
+
filtered_traders_data["creation_date"] = filtered_traders_data[
|
| 191 |
+
"creation_timestamp"
|
| 192 |
+
].dt.date
|
| 193 |
+
|
| 194 |
# Get the weekly average ROI
|
| 195 |
+
weekly_avg_roi_df = get_weekly_average_roi(filtered_traders_data)
|
| 196 |
# plot the weekly average ROI
|
| 197 |
print(weekly_avg_roi_df.head())
|
| 198 |
+
|
|
|
|
|
|
|
| 199 |
fig = px.line(
|
| 200 |
weekly_avg_roi_df,
|
| 201 |
+
x="creation_date",
|
| 202 |
y="roi",
|
| 203 |
)
|
| 204 |
fig.update_layout(
|