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