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(
|