Spaces:
Sleeping
Sleeping
James McCool
commited on
Commit
·
e4db190
1
Parent(s):
711af0e
Enhance player median calculations and projections in init_baselines and sim_contest functions. Added 'cpt_Median' field to raw_display DataFrame for both DraftKings and FanDuel, and updated projection logic to utilize 'cpt_projection_map' for improved accuracy in simulations.
Browse files
app.py
CHANGED
|
@@ -132,6 +132,7 @@ def init_baselines(sport):
|
|
| 132 |
raw_display = pd.DataFrame(list(cursor))
|
| 133 |
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 134 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
|
|
|
| 135 |
raw_display['STDev'] = raw_display['Median'] / 4
|
| 136 |
|
| 137 |
dk_raw = raw_display.dropna(subset=['Median'])
|
|
@@ -142,6 +143,7 @@ def init_baselines(sport):
|
|
| 142 |
raw_display = pd.DataFrame(list(cursor))
|
| 143 |
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 144 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
|
|
|
| 145 |
raw_display['STDev'] = raw_display['Median'] / 4
|
| 146 |
|
| 147 |
fd_raw = raw_display.dropna(subset=['Median'])
|
|
@@ -154,6 +156,7 @@ def init_baselines(sport):
|
|
| 154 |
raw_display = pd.DataFrame(list(cursor))
|
| 155 |
raw_display = raw_display[['Player', 'Minutes Proj', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%',
|
| 156 |
'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp']]
|
|
|
|
| 157 |
raw_display = raw_display[raw_display['site'] == 'Draftkings']
|
| 158 |
raw_display['STDev'] = raw_display['Median'] / 4
|
| 159 |
|
|
@@ -165,6 +168,7 @@ def init_baselines(sport):
|
|
| 165 |
raw_display = pd.DataFrame(list(cursor))
|
| 166 |
raw_display = raw_display[['Player', 'Minutes Proj', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%',
|
| 167 |
'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp']]
|
|
|
|
| 168 |
raw_display = raw_display[raw_display['site'] == 'Fanduel']
|
| 169 |
raw_display['STDev'] = raw_display['Median'] / 4
|
| 170 |
|
|
@@ -207,9 +211,11 @@ def sim_contest(Sim_size, seed_frame, maps_dict, sharp_split, Contest_Size):
|
|
| 207 |
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
|
| 208 |
|
| 209 |
sample_arrays1 = np.c_[
|
| 210 |
-
fp_random,
|
| 211 |
np.sum(np.random.normal(
|
| 212 |
-
loc=
|
|
|
|
|
|
|
| 213 |
scale=vec_stdev_map(fp_random[:, :-7])),
|
| 214 |
axis=1)
|
| 215 |
]
|
|
@@ -403,6 +409,7 @@ with tab1:
|
|
| 403 |
if 'working_seed' in st.session_state:
|
| 404 |
maps_dict = {
|
| 405 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
|
|
|
| 406 |
'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
|
| 407 |
'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
|
| 408 |
'Own_map':dict(zip(raw_baselines.Player,raw_baselines['Own'])),
|
|
@@ -441,6 +448,7 @@ with tab1:
|
|
| 441 |
st.session_state.working_seed = FD_seed.copy()
|
| 442 |
maps_dict = {
|
| 443 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
|
|
|
| 444 |
'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
|
| 445 |
'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
|
| 446 |
'Own_map':dict(zip(raw_baselines.Player,raw_baselines['Own'])),
|
|
|
|
| 132 |
raw_display = pd.DataFrame(list(cursor))
|
| 133 |
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 134 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 135 |
+
raw_display['cpt_Median'] = raw_display['Median'] * 1.5
|
| 136 |
raw_display['STDev'] = raw_display['Median'] / 4
|
| 137 |
|
| 138 |
dk_raw = raw_display.dropna(subset=['Median'])
|
|
|
|
| 143 |
raw_display = pd.DataFrame(list(cursor))
|
| 144 |
raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
|
| 145 |
'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
|
| 146 |
+
raw_display['cpt_Median'] = raw_display['Median']
|
| 147 |
raw_display['STDev'] = raw_display['Median'] / 4
|
| 148 |
|
| 149 |
fd_raw = raw_display.dropna(subset=['Median'])
|
|
|
|
| 156 |
raw_display = pd.DataFrame(list(cursor))
|
| 157 |
raw_display = raw_display[['Player', 'Minutes Proj', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%',
|
| 158 |
'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp']]
|
| 159 |
+
raw_display['cpt_Median'] = raw_display['Median'] * 1.5
|
| 160 |
raw_display = raw_display[raw_display['site'] == 'Draftkings']
|
| 161 |
raw_display['STDev'] = raw_display['Median'] / 4
|
| 162 |
|
|
|
|
| 168 |
raw_display = pd.DataFrame(list(cursor))
|
| 169 |
raw_display = raw_display[['Player', 'Minutes Proj', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%',
|
| 170 |
'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp']]
|
| 171 |
+
raw_display['cpt_Median'] = raw_display['Median']
|
| 172 |
raw_display = raw_display[raw_display['site'] == 'Fanduel']
|
| 173 |
raw_display['STDev'] = raw_display['Median'] / 4
|
| 174 |
|
|
|
|
| 211 |
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
|
| 212 |
|
| 213 |
sample_arrays1 = np.c_[
|
| 214 |
+
fp_random,
|
| 215 |
np.sum(np.random.normal(
|
| 216 |
+
loc=np.where(np.arange(fp_random.shape[1]) == 0, # Check if it's the first column
|
| 217 |
+
cpt_projection_map(fp_random[:, :-7]), # Use cpt_projection_map for first column
|
| 218 |
+
vec_projection_map(fp_random[:, :-7])), # Use original for other columns
|
| 219 |
scale=vec_stdev_map(fp_random[:, :-7])),
|
| 220 |
axis=1)
|
| 221 |
]
|
|
|
|
| 409 |
if 'working_seed' in st.session_state:
|
| 410 |
maps_dict = {
|
| 411 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
| 412 |
+
'cpt_projection_map':dict(zip(raw_baselines.Player,raw_baselines.cpt_Median)),
|
| 413 |
'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
|
| 414 |
'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
|
| 415 |
'Own_map':dict(zip(raw_baselines.Player,raw_baselines['Own'])),
|
|
|
|
| 448 |
st.session_state.working_seed = FD_seed.copy()
|
| 449 |
maps_dict = {
|
| 450 |
'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
|
| 451 |
+
'cpt_projection_map':dict(zip(raw_baselines.Player,raw_baselines.cpt_Median)),
|
| 452 |
'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
|
| 453 |
'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
|
| 454 |
'Own_map':dict(zip(raw_baselines.Player,raw_baselines['Own'])),
|