rosacastillo
commited on
Commit
·
d58fc7b
1
Parent(s):
ae57283
new graph with non agents
Browse files- app.py +1 -0
- tabs/staking.py +2 -1
- tabs/trades.py +80 -0
app.py
CHANGED
@@ -10,6 +10,7 @@ from tabs.trades import (
|
|
10 |
get_overall_winning_trades,
|
11 |
get_overall_winning_by_market_trades,
|
12 |
integrated_plot_trades_per_market_by_week,
|
|
|
13 |
integrated_plot_winning_trades_per_market_by_week,
|
14 |
)
|
15 |
from tabs.staking import plot_staking_trades_per_market_by_week
|
|
|
10 |
get_overall_winning_trades,
|
11 |
get_overall_winning_by_market_trades,
|
12 |
integrated_plot_trades_per_market_by_week,
|
13 |
+
integrated_plot_trades_per_market_by_week_v2,
|
14 |
integrated_plot_winning_trades_per_market_by_week,
|
15 |
)
|
16 |
from tabs.staking import plot_staking_trades_per_market_by_week
|
tabs/staking.py
CHANGED
@@ -35,10 +35,11 @@ def plot_staking_trades_per_market_by_week(
|
|
35 |
all_filtered_trades = all_filtered_trades.sort_values(
|
36 |
by="creation_timestamp", ascending=True
|
37 |
)
|
38 |
-
|
39 |
all_filtered_trades = all_filtered_trades.loc[
|
40 |
all_filtered_trades["market_creator"] == market_creator
|
41 |
]
|
|
|
42 |
if market_creator != "all":
|
43 |
all_filtered_trades["staking"] = all_filtered_trades["staking"].replace(
|
44 |
{market_creator: "staking_traders", "non_agent": "non_agent_traders"}
|
|
|
35 |
all_filtered_trades = all_filtered_trades.sort_values(
|
36 |
by="creation_timestamp", ascending=True
|
37 |
)
|
38 |
+
print(f"filtering by market creator = {market_creator}")
|
39 |
all_filtered_trades = all_filtered_trades.loc[
|
40 |
all_filtered_trades["market_creator"] == market_creator
|
41 |
]
|
42 |
+
print(all_filtered_trades.market_creator.value_counts())
|
43 |
if market_creator != "all":
|
44 |
all_filtered_trades["staking"] = all_filtered_trades["staking"].replace(
|
45 |
{market_creator: "staking_traders", "non_agent": "non_agent_traders"}
|
tabs/trades.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import gradio as gr
|
2 |
import pandas as pd
|
3 |
import plotly.express as px
|
|
|
4 |
|
5 |
|
6 |
HEIGHT = 400
|
@@ -124,6 +125,85 @@ def integrated_plot_trades_per_market_by_week(trades_df: pd.DataFrame) -> gr.Plo
|
|
124 |
return gr.Plot(value=fig)
|
125 |
|
126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
def integrated_plot_winning_trades_per_market_by_week(
|
128 |
trades_df: pd.DataFrame,
|
129 |
) -> gr.Plot:
|
|
|
1 |
import gradio as gr
|
2 |
import pandas as pd
|
3 |
import plotly.express as px
|
4 |
+
import plotly.graph_objects as go
|
5 |
|
6 |
|
7 |
HEIGHT = 400
|
|
|
125 |
return gr.Plot(value=fig)
|
126 |
|
127 |
|
128 |
+
def integrated_plot_trades_per_market_by_week_v2(trades_df: pd.DataFrame) -> gr.Plot:
|
129 |
+
# adding the total
|
130 |
+
trades_all = trades_df.copy(deep=True)
|
131 |
+
trades_all["market_creator"] = "all"
|
132 |
+
|
133 |
+
# merging both dataframes
|
134 |
+
all_filtered_trades = pd.concat([trades_df, trades_all], ignore_index=True)
|
135 |
+
all_filtered_trades = all_filtered_trades.sort_values(
|
136 |
+
by="creation_timestamp", ascending=True
|
137 |
+
)
|
138 |
+
|
139 |
+
# Create binary staking category
|
140 |
+
all_filtered_trades["staking_type"] = all_filtered_trades["staking"].apply(
|
141 |
+
lambda x: "non_agent" if x == "non_agent" else "agent"
|
142 |
+
)
|
143 |
+
|
144 |
+
# Group by week, market_creator and staking_type
|
145 |
+
trades = (
|
146 |
+
all_filtered_trades.groupby(
|
147 |
+
["month_year_week", "market_creator", "staking_type"], sort=False
|
148 |
+
)
|
149 |
+
.size()
|
150 |
+
.reset_index(name="trades")
|
151 |
+
)
|
152 |
+
|
153 |
+
# category_orders={"market_creator": ["pearl", "quickstart", "all"]},
|
154 |
+
|
155 |
+
# Combine the traces
|
156 |
+
final_traces = []
|
157 |
+
market_colors = {"pearl": "purple", "quickstart": "goldenrod", "all": "darkgreen"}
|
158 |
+
# First add 'agent' traces
|
159 |
+
for market in ["pearl", "quickstart", "all"]:
|
160 |
+
market_data = trades[trades["market_creator"] == market]
|
161 |
+
agent_data = market_data[market_data["staking_type"] == "agent"]
|
162 |
+
|
163 |
+
trace = go.Bar(
|
164 |
+
x=agent_data["month_year_week"],
|
165 |
+
y=agent_data["trades"],
|
166 |
+
name=f"{market}-agent",
|
167 |
+
marker_color=market_colors[market],
|
168 |
+
offsetgroup=market,
|
169 |
+
showlegend=True,
|
170 |
+
)
|
171 |
+
final_traces.append(trace)
|
172 |
+
|
173 |
+
# Then add 'non_agent' traces
|
174 |
+
for market in ["pearl", "quickstart", "all"]:
|
175 |
+
market_data = trades[trades["market_creator"] == market]
|
176 |
+
non_agent_data = market_data[market_data["staking_type"] == "non_agent"]
|
177 |
+
|
178 |
+
trace = go.Bar(
|
179 |
+
x=non_agent_data["month_year_week"],
|
180 |
+
y=non_agent_data["trades"],
|
181 |
+
name=f"{market}-non_agent",
|
182 |
+
marker_color="black",
|
183 |
+
offsetgroup=market,
|
184 |
+
showlegend=True,
|
185 |
+
)
|
186 |
+
final_traces.append(trace)
|
187 |
+
|
188 |
+
# Create new figure with the combined traces
|
189 |
+
fig = go.Figure(data=final_traces)
|
190 |
+
|
191 |
+
# Update layout
|
192 |
+
fig.update_layout(
|
193 |
+
xaxis_title="Week",
|
194 |
+
yaxis_title="Weekly nr of trades",
|
195 |
+
legend=dict(yanchor="top", y=0.5),
|
196 |
+
width=WIDTH,
|
197 |
+
height=HEIGHT,
|
198 |
+
barmode="group",
|
199 |
+
)
|
200 |
+
|
201 |
+
# Update x-axis format
|
202 |
+
fig.update_xaxes(tickformat="%b %d\n%Y")
|
203 |
+
|
204 |
+
return gr.Plot(value=fig)
|
205 |
+
|
206 |
+
|
207 |
def integrated_plot_winning_trades_per_market_by_week(
|
208 |
trades_df: pd.DataFrame,
|
209 |
) -> gr.Plot:
|