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'])),
|