Spaces:
Running
Running
James McCool
commited on
Commit
·
c2ffc4c
1
Parent(s):
1a1a009
Enhance app.py by adding a teams_playing_count parameter to the sim_contest function, allowing for dynamic adjustments in projection calculations. This change includes the implementation of a stack bonus based on the number of teams playing, improving the accuracy of contest simulations. Additionally, update init_baselines to return the teams_playing_count for better data management across the application.
Browse files
app.py
CHANGED
@@ -65,7 +65,9 @@ def init_baselines():
|
|
65 |
fd_raw = FD_load_display.dropna(subset=['Median'])
|
66 |
fd_raw['Team'] = fd_raw['Team'].replace(['TB', 'SJ', 'LA'], ['TBL', 'SJS', 'LAK'])
|
67 |
|
68 |
-
|
|
|
|
|
69 |
|
70 |
@st.cache_data
|
71 |
def convert_df(array):
|
@@ -87,7 +89,7 @@ def calculate_FD_value_frequencies(np_array):
|
|
87 |
return combined_array
|
88 |
|
89 |
@st.cache_data
|
90 |
-
def sim_contest(Sim_size, seed_frame, maps_dict, Contest_Size):
|
91 |
SimVar = 1
|
92 |
Sim_Winners = []
|
93 |
fp_array = seed_frame.copy()
|
@@ -100,15 +102,17 @@ def sim_contest(Sim_size, seed_frame, maps_dict, Contest_Size):
|
|
100 |
while SimVar <= Sim_size:
|
101 |
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
|
102 |
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
|
|
|
|
110 |
|
111 |
-
sample_arrays =
|
112 |
|
113 |
final_array = sample_arrays[sample_arrays[:, 10].argsort()[::-1]]
|
114 |
best_lineup = final_array[final_array[:, -1].argsort(kind='stable')[::-1][:1]]
|
@@ -117,7 +121,7 @@ def sim_contest(Sim_size, seed_frame, maps_dict, Contest_Size):
|
|
117 |
|
118 |
return Sim_Winners
|
119 |
|
120 |
-
dk_raw, fd_raw = init_baselines()
|
121 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_id))
|
122 |
fd_id_dict = dict(zip(fd_raw.Player, fd_raw.player_id))
|
123 |
|
@@ -131,7 +135,7 @@ with tab2:
|
|
131 |
del st.session_state[key]
|
132 |
DK_seed = init_DK_seed_frames(10000)
|
133 |
FD_seed = init_FD_seed_frames(10000)
|
134 |
-
dk_raw, fd_raw = init_baselines()
|
135 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_id))
|
136 |
fd_id_dict = dict(zip(fd_raw.Player, fd_raw.player_id))
|
137 |
|
@@ -244,7 +248,7 @@ with tab1:
|
|
244 |
del st.session_state[key]
|
245 |
DK_seed = init_DK_seed_frames(10000)
|
246 |
FD_seed = init_FD_seed_frames(10000)
|
247 |
-
dk_raw, fd_raw = init_baselines()
|
248 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_id))
|
249 |
fd_id_dict = dict(zip(fd_raw.Player, fd_raw.player_id))
|
250 |
|
@@ -284,7 +288,7 @@ with tab1:
|
|
284 |
'Team_map':dict(zip(raw_baselines.Player,raw_baselines.Team)),
|
285 |
'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev))
|
286 |
}
|
287 |
-
Sim_Winners = sim_contest(1000, st.session_state.working_seed, st.session_state.maps_dict, Contest_Size)
|
288 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
|
289 |
|
290 |
#st.table(Sim_Winner_Frame)
|
@@ -333,7 +337,7 @@ with tab1:
|
|
333 |
'Team_map':dict(zip(raw_baselines.Player,raw_baselines.Team)),
|
334 |
'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev))
|
335 |
}
|
336 |
-
Sim_Winners = sim_contest(1000, st.session_state.working_seed, st.session_state.maps_dict, Contest_Size)
|
337 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
|
338 |
|
339 |
#st.table(Sim_Winner_Frame)
|
|
|
65 |
fd_raw = FD_load_display.dropna(subset=['Median'])
|
66 |
fd_raw['Team'] = fd_raw['Team'].replace(['TB', 'SJ', 'LA'], ['TBL', 'SJS', 'LAK'])
|
67 |
|
68 |
+
teams_playing_count = len(dk_raw.Team.unique())
|
69 |
+
|
70 |
+
return dk_raw, fd_raw, teams_playing_count
|
71 |
|
72 |
@st.cache_data
|
73 |
def convert_df(array):
|
|
|
89 |
return combined_array
|
90 |
|
91 |
@st.cache_data
|
92 |
+
def sim_contest(Sim_size, seed_frame, maps_dict, Contest_Size, teams_playing_count):
|
93 |
SimVar = 1
|
94 |
Sim_Winners = []
|
95 |
fp_array = seed_frame.copy()
|
|
|
102 |
while SimVar <= Sim_size:
|
103 |
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
|
104 |
|
105 |
+
# Calculate base projections
|
106 |
+
base_projections = np.sum(np.random.normal(
|
107 |
+
loc=vec_projection_map(fp_random[:, :-7]),
|
108 |
+
scale=vec_stdev_map(fp_random[:, :-7])),
|
109 |
+
axis=1)
|
110 |
+
|
111 |
+
# Apply 10% bonus for stacks of 5 or more based on the number of teams playing
|
112 |
+
stack_bonus = np.where(fp_random[:, 12] >= 5, base_projections * (0.05 * (teams_playing_count - 12)), 0)
|
113 |
+
final_projections = base_projections + stack_bonus
|
114 |
|
115 |
+
sample_arrays = np.c_[fp_random, final_projections]
|
116 |
|
117 |
final_array = sample_arrays[sample_arrays[:, 10].argsort()[::-1]]
|
118 |
best_lineup = final_array[final_array[:, -1].argsort(kind='stable')[::-1][:1]]
|
|
|
121 |
|
122 |
return Sim_Winners
|
123 |
|
124 |
+
dk_raw, fd_raw, teams_playing_count = init_baselines()
|
125 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_id))
|
126 |
fd_id_dict = dict(zip(fd_raw.Player, fd_raw.player_id))
|
127 |
|
|
|
135 |
del st.session_state[key]
|
136 |
DK_seed = init_DK_seed_frames(10000)
|
137 |
FD_seed = init_FD_seed_frames(10000)
|
138 |
+
dk_raw, fd_raw, teams_playing_count = init_baselines()
|
139 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_id))
|
140 |
fd_id_dict = dict(zip(fd_raw.Player, fd_raw.player_id))
|
141 |
|
|
|
248 |
del st.session_state[key]
|
249 |
DK_seed = init_DK_seed_frames(10000)
|
250 |
FD_seed = init_FD_seed_frames(10000)
|
251 |
+
dk_raw, fd_raw, teams_playing_count = init_baselines()
|
252 |
dk_id_dict = dict(zip(dk_raw.Player, dk_raw.player_id))
|
253 |
fd_id_dict = dict(zip(fd_raw.Player, fd_raw.player_id))
|
254 |
|
|
|
288 |
'Team_map':dict(zip(raw_baselines.Player,raw_baselines.Team)),
|
289 |
'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev))
|
290 |
}
|
291 |
+
Sim_Winners = sim_contest(1000, st.session_state.working_seed, st.session_state.maps_dict, Contest_Size, teams_playing_count)
|
292 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
|
293 |
|
294 |
#st.table(Sim_Winner_Frame)
|
|
|
337 |
'Team_map':dict(zip(raw_baselines.Player,raw_baselines.Team)),
|
338 |
'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev))
|
339 |
}
|
340 |
+
Sim_Winners = sim_contest(1000, st.session_state.working_seed, st.session_state.maps_dict, Contest_Size, teams_playing_count)
|
341 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners))
|
342 |
|
343 |
#st.table(Sim_Winner_Frame)
|