Update app.py
Browse files
app.py
CHANGED
@@ -263,28 +263,28 @@ def get_correlated_portfolio_for_sim(Total_Sample_Size):
|
|
263 |
# st.table(RandomPortfolioDF.head(50))
|
264 |
|
265 |
if insert_port == 1:
|
266 |
-
CleanPortfolio['Salary'] = sum([CleanPortfolio['CPT'].map(
|
267 |
-
CleanPortfolio['FLEX1'].map(
|
268 |
-
CleanPortfolio['FLEX2'].map(
|
269 |
-
CleanPortfolio['FLEX3'].map(
|
270 |
-
CleanPortfolio['FLEX4'].map(
|
271 |
-
CleanPortfolio['FLEX5'].map(
|
272 |
]).astype(np.int16)
|
273 |
if insert_port == 1:
|
274 |
-
CleanPortfolio['Projection'] = sum([CleanPortfolio['CPT'].map(
|
275 |
-
CleanPortfolio['FLEX1'].map(
|
276 |
-
CleanPortfolio['FLEX2'].map(
|
277 |
-
CleanPortfolio['FLEX3'].map(
|
278 |
-
CleanPortfolio['FLEX4'].map(
|
279 |
-
CleanPortfolio['FLEX5'].map(
|
280 |
]).astype(np.float16)
|
281 |
if insert_port == 1:
|
282 |
-
CleanPortfolio['Own'] = sum([CleanPortfolio['CPT'].map(
|
283 |
-
CleanPortfolio['FLEX1'].map(
|
284 |
-
CleanPortfolio['FLEX2'].map(
|
285 |
-
CleanPortfolio['FLEX3'].map(
|
286 |
-
CleanPortfolio['FLEX4'].map(
|
287 |
-
CleanPortfolio['FLEX5'].map(
|
288 |
]).astype(np.float16)
|
289 |
|
290 |
if site_var1 == 'Draftkings':
|
@@ -362,28 +362,28 @@ def get_uncorrelated_portfolio_for_sim(Total_Sample_Size):
|
|
362 |
# st.table(RandomPortfolioDF.head(50))
|
363 |
|
364 |
if insert_port == 1:
|
365 |
-
CleanPortfolio['Salary'] = sum([CleanPortfolio['CPT'].map(
|
366 |
-
CleanPortfolio['FLEX1'].map(
|
367 |
-
CleanPortfolio['FLEX2'].map(
|
368 |
-
CleanPortfolio['FLEX3'].map(
|
369 |
-
CleanPortfolio['FLEX4'].map(
|
370 |
-
CleanPortfolio['FLEX5'].map(
|
371 |
]).astype(np.int16)
|
372 |
if insert_port == 1:
|
373 |
-
CleanPortfolio['Projection'] = sum([CleanPortfolio['CPT'].map(
|
374 |
-
CleanPortfolio['FLEX1'].map(
|
375 |
-
CleanPortfolio['FLEX2'].map(
|
376 |
-
CleanPortfolio['FLEX3'].map(
|
377 |
-
CleanPortfolio['FLEX4'].map(
|
378 |
-
CleanPortfolio['FLEX5'].map(
|
379 |
]).astype(np.float16)
|
380 |
if insert_port == 1:
|
381 |
-
CleanPortfolio['Own'] = sum([CleanPortfolio['CPT'].map(
|
382 |
-
CleanPortfolio['FLEX1'].map(
|
383 |
-
CleanPortfolio['FLEX2'].map(
|
384 |
-
CleanPortfolio['FLEX3'].map(
|
385 |
-
CleanPortfolio['FLEX4'].map(
|
386 |
-
CleanPortfolio['FLEX5'].map(
|
387 |
]).astype(np.float16)
|
388 |
|
389 |
if site_var1 == 'Draftkings':
|
@@ -903,7 +903,7 @@ with tab2:
|
|
903 |
CleanPortfolio['User/Field'] = CleanPortfolio['index'] + 1
|
904 |
CleanPortfolio.drop(columns=['index'], inplace=True)
|
905 |
CleanPortfolio.replace('', np.nan, inplace=True)
|
906 |
-
CleanPortfolio.dropna(subset=['
|
907 |
|
908 |
# Create cleaport_players DataFrame
|
909 |
unique_vals, counts = np.unique(CleanPortfolio.iloc[:, 0:6].values, return_counts=True)
|
@@ -911,14 +911,15 @@ with tab2:
|
|
911 |
|
912 |
# Merge and update nerf_frame DataFrame
|
913 |
nerf_frame = pd.merge(cleaport_players, Overall_Proj, on='Player', how='left')
|
914 |
-
nerf_frame[['Median', 'Floor', 'Ceiling', 'STDev']] *=
|
|
|
915 |
del Raw_Portfolio
|
916 |
except:
|
917 |
# Reset index and perform column-wise operations
|
918 |
CleanPortfolio = UserPortfolio.reset_index(drop=True)
|
919 |
CleanPortfolio['User/Field'] = CleanPortfolio.index + 1
|
920 |
CleanPortfolio.replace('', np.nan, inplace=True)
|
921 |
-
CleanPortfolio.dropna(subset=['
|
922 |
|
923 |
# Create cleaport_players DataFrame
|
924 |
unique_vals, counts = np.unique(CleanPortfolio.iloc[:, 0:6].values, return_counts=True)
|
@@ -926,7 +927,9 @@ with tab2:
|
|
926 |
|
927 |
# Merge and update nerf_frame DataFrame
|
928 |
nerf_frame = pd.merge(cleaport_players, Overall_Proj, on='Player', how='left')
|
929 |
-
nerf_frame[['Median', 'Floor', 'Ceiling', 'STDev']] *=
|
|
|
|
|
930 |
|
931 |
elif insert_port == 0:
|
932 |
CleanPortfolio = UserPortfolio
|
@@ -976,57 +979,51 @@ with tab2:
|
|
976 |
SimVar = 1
|
977 |
Sim_Winners = []
|
978 |
fp_array = FinalPortfolio.values
|
|
|
979 |
if insert_port == 1:
|
980 |
up_array = CleanPortfolio.values
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
981 |
st.write('Simulating contest on frames')
|
982 |
while SimVar <= Sim_size:
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
loc = np.vectorize(maps_dict['Projection_map'].__getitem__)(fp_random[:,:-5]),
|
989 |
-
scale = np.vectorize(maps_dict['STDev_map'].__getitem__)(fp_random[:,:-5])),
|
990 |
-
axis=1)]
|
991 |
-
try:
|
992 |
-
smple_arrays2 = np.c_[up_array,
|
993 |
-
np.sum(np.random.normal(
|
994 |
-
loc = np.vectorize(up_dict['Projection_map'].__getitem__)(up_array[:,:-5]),
|
995 |
-
scale = np.vectorize(up_dict['STDev_map'].__getitem__)(up_array[:,:-5])),
|
996 |
-
axis=1)]
|
997 |
-
except:
|
998 |
-
pass
|
999 |
-
try:
|
1000 |
-
smple_arrays = np.vstack((smple_arrays1, smple_arrays2))
|
1001 |
-
except:
|
1002 |
-
smple_arrays = smple_arrays1
|
1003 |
-
final_array = smple_arrays[smple_arrays[:, 7].argsort()[::-1]]
|
1004 |
-
best_lineup = final_array[final_array[:, -1].argsort(kind='stable')[::-1][:1]]
|
1005 |
-
Sim_Winners.append(best_lineup)
|
1006 |
-
SimVar += 1
|
1007 |
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
|
|
|
|
|
|
|
|
1028 |
st.write('Contest simulation complete')
|
1029 |
-
|
1030 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners), columns=FinalPortfolio.columns.tolist() + ['Fantasy'])
|
1031 |
Sim_Winner_Frame['GPP_Proj'] = (Sim_Winner_Frame['Projection'] + Sim_Winner_Frame['Fantasy']) / 2
|
1032 |
Sim_Winner_Frame['Salary'] = Sim_Winner_Frame['Salary'].astype(int)
|
@@ -1078,7 +1075,7 @@ with tab2:
|
|
1078 |
flex_freq = flex_freq[['Player', 'Position', 'Team', 'Salary', 'Proj Own', 'Exposure', 'Edge']]
|
1079 |
|
1080 |
del fp_random
|
1081 |
-
del
|
1082 |
del final_array
|
1083 |
del fp_array
|
1084 |
try:
|
|
|
263 |
# st.table(RandomPortfolioDF.head(50))
|
264 |
|
265 |
if insert_port == 1:
|
266 |
+
CleanPortfolio['Salary'] = sum([CleanPortfolio['CPT'].map(up_dict['Salary_map']) * 1.5,
|
267 |
+
CleanPortfolio['FLEX1'].map(up_dict['Salary_map']),
|
268 |
+
CleanPortfolio['FLEX2'].map(up_dict['Salary_map']),
|
269 |
+
CleanPortfolio['FLEX3'].map(up_dict['Salary_map']),
|
270 |
+
CleanPortfolio['FLEX4'].map(up_dict['Salary_map']),
|
271 |
+
CleanPortfolio['FLEX5'].map(up_dict['Salary_map'])
|
272 |
]).astype(np.int16)
|
273 |
if insert_port == 1:
|
274 |
+
CleanPortfolio['Projection'] = sum([CleanPortfolio['CPT'].map(up_dict['Projection_map']) * 1.5,
|
275 |
+
CleanPortfolio['FLEX1'].map(up_dict['Projection_map']),
|
276 |
+
CleanPortfolio['FLEX2'].map(up_dict['Projection_map']),
|
277 |
+
CleanPortfolio['FLEX3'].map(up_dict['Projection_map']),
|
278 |
+
CleanPortfolio['FLEX4'].map(up_dict['Projection_map']),
|
279 |
+
CleanPortfolio['FLEX5'].map(up_dict['Projection_map'])
|
280 |
]).astype(np.float16)
|
281 |
if insert_port == 1:
|
282 |
+
CleanPortfolio['Own'] = sum([CleanPortfolio['CPT'].map(up_dict['Own_map']) / 4,
|
283 |
+
CleanPortfolio['FLEX1'].map(up_dict['Own_map']),
|
284 |
+
CleanPortfolio['FLEX2'].map(up_dict['Own_map']),
|
285 |
+
CleanPortfolio['FLEX3'].map(up_dict['Own_map']),
|
286 |
+
CleanPortfolio['FLEX4'].map(up_dict['Own_map']),
|
287 |
+
CleanPortfolio['FLEX5'].map(up_dict['Own_map'])
|
288 |
]).astype(np.float16)
|
289 |
|
290 |
if site_var1 == 'Draftkings':
|
|
|
362 |
# st.table(RandomPortfolioDF.head(50))
|
363 |
|
364 |
if insert_port == 1:
|
365 |
+
CleanPortfolio['Salary'] = sum([CleanPortfolio['CPT'].map(up_dict['Salary_map']) * 1.5,
|
366 |
+
CleanPortfolio['FLEX1'].map(up_dict['Salary_map']),
|
367 |
+
CleanPortfolio['FLEX2'].map(up_dict['Salary_map']),
|
368 |
+
CleanPortfolio['FLEX3'].map(up_dict['Salary_map']),
|
369 |
+
CleanPortfolio['FLEX4'].map(up_dict['Salary_map']),
|
370 |
+
CleanPortfolio['FLEX5'].map(up_dict['Salary_map'])
|
371 |
]).astype(np.int16)
|
372 |
if insert_port == 1:
|
373 |
+
CleanPortfolio['Projection'] = sum([CleanPortfolio['CPT'].map(up_dict['Projection_map']) * 1.5,
|
374 |
+
CleanPortfolio['FLEX1'].map(up_dict['Projection_map']),
|
375 |
+
CleanPortfolio['FLEX2'].map(up_dict['Projection_map']),
|
376 |
+
CleanPortfolio['FLEX3'].map(up_dict['Projection_map']),
|
377 |
+
CleanPortfolio['FLEX4'].map(up_dict['Projection_map']),
|
378 |
+
CleanPortfolio['FLEX5'].map(up_dict['Projection_map'])
|
379 |
]).astype(np.float16)
|
380 |
if insert_port == 1:
|
381 |
+
CleanPortfolio['Own'] = sum([CleanPortfolio['CPT'].map(up_dict['Own_map']) / 4,
|
382 |
+
CleanPortfolio['FLEX1'].map(up_dict['Own_map']),
|
383 |
+
CleanPortfolio['FLEX2'].map(up_dict['Own_map']),
|
384 |
+
CleanPortfolio['FLEX3'].map(up_dict['Own_map']),
|
385 |
+
CleanPortfolio['FLEX4'].map(up_dict['Own_map']),
|
386 |
+
CleanPortfolio['FLEX5'].map(up_dict['Own_map'])
|
387 |
]).astype(np.float16)
|
388 |
|
389 |
if site_var1 == 'Draftkings':
|
|
|
903 |
CleanPortfolio['User/Field'] = CleanPortfolio['index'] + 1
|
904 |
CleanPortfolio.drop(columns=['index'], inplace=True)
|
905 |
CleanPortfolio.replace('', np.nan, inplace=True)
|
906 |
+
CleanPortfolio.dropna(subset=['CPT'], inplace=True)
|
907 |
|
908 |
# Create cleaport_players DataFrame
|
909 |
unique_vals, counts = np.unique(CleanPortfolio.iloc[:, 0:6].values, return_counts=True)
|
|
|
911 |
|
912 |
# Merge and update nerf_frame DataFrame
|
913 |
nerf_frame = pd.merge(cleaport_players, Overall_Proj, on='Player', how='left')
|
914 |
+
nerf_frame[['Median', 'Floor', 'Ceiling', 'STDev']] *= 1
|
915 |
+
|
916 |
del Raw_Portfolio
|
917 |
except:
|
918 |
# Reset index and perform column-wise operations
|
919 |
CleanPortfolio = UserPortfolio.reset_index(drop=True)
|
920 |
CleanPortfolio['User/Field'] = CleanPortfolio.index + 1
|
921 |
CleanPortfolio.replace('', np.nan, inplace=True)
|
922 |
+
CleanPortfolio.dropna(subset=['CPT'], inplace=True)
|
923 |
|
924 |
# Create cleaport_players DataFrame
|
925 |
unique_vals, counts = np.unique(CleanPortfolio.iloc[:, 0:6].values, return_counts=True)
|
|
|
927 |
|
928 |
# Merge and update nerf_frame DataFrame
|
929 |
nerf_frame = pd.merge(cleaport_players, Overall_Proj, on='Player', how='left')
|
930 |
+
nerf_frame[['Median', 'Floor', 'Ceiling', 'STDev']] *= 1
|
931 |
+
|
932 |
+
st.table(nerf_frame)
|
933 |
|
934 |
elif insert_port == 0:
|
935 |
CleanPortfolio = UserPortfolio
|
|
|
979 |
SimVar = 1
|
980 |
Sim_Winners = []
|
981 |
fp_array = FinalPortfolio.values
|
982 |
+
|
983 |
if insert_port == 1:
|
984 |
up_array = CleanPortfolio.values
|
985 |
+
|
986 |
+
# Pre-vectorize functions
|
987 |
+
vec_projection_map = np.vectorize(maps_dict['Projection_map'].__getitem__)
|
988 |
+
vec_stdev_map = np.vectorize(maps_dict['STDev_map'].__getitem__)
|
989 |
+
|
990 |
+
if insert_port == 1:
|
991 |
+
vec_up_projection_map = np.vectorize(up_dict['Projection_map'].__getitem__)
|
992 |
+
vec_up_stdev_map = np.vectorize(up_dict['STDev_map'].__getitem__)
|
993 |
st.write('Simulating contest on frames')
|
994 |
while SimVar <= Sim_size:
|
995 |
+
|
996 |
+
if insert_port == 1:
|
997 |
+
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size-len(CleanPortfolio))]
|
998 |
+
elif insert_port == 0:
|
999 |
+
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1000 |
|
1001 |
+
sample_arrays1 = np.c_[
|
1002 |
+
fp_random,
|
1003 |
+
np.sum(np.random.normal(
|
1004 |
+
loc=vec_projection_map(fp_random[:, :-5]),
|
1005 |
+
scale=vec_stdev_map(fp_random[:, :-5])),
|
1006 |
+
axis=1)
|
1007 |
+
]
|
1008 |
+
|
1009 |
+
if insert_port == 1:
|
1010 |
+
sample_arrays2 = np.c_[
|
1011 |
+
up_array,
|
1012 |
+
np.sum(np.random.normal(
|
1013 |
+
loc=vec_up_projection_map(up_array[:, :-5]),
|
1014 |
+
scale=vec_up_stdev_map(up_array[:, :-5])),
|
1015 |
+
axis=1)
|
1016 |
+
]
|
1017 |
+
sample_arrays = np.vstack((sample_arrays1, sample_arrays2))
|
1018 |
+
else:
|
1019 |
+
sample_arrays = sample_arrays1
|
1020 |
+
|
1021 |
+
final_array = sample_arrays[sample_arrays[:, 10].argsort()[::-1]]
|
1022 |
+
best_lineup = final_array[final_array[:, -1].argsort(kind='stable')[::-1][:1]]
|
1023 |
+
Sim_Winners.append(best_lineup)
|
1024 |
+
SimVar += 1
|
1025 |
st.write('Contest simulation complete')
|
1026 |
+
|
1027 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners), columns=FinalPortfolio.columns.tolist() + ['Fantasy'])
|
1028 |
Sim_Winner_Frame['GPP_Proj'] = (Sim_Winner_Frame['Projection'] + Sim_Winner_Frame['Fantasy']) / 2
|
1029 |
Sim_Winner_Frame['Salary'] = Sim_Winner_Frame['Salary'].astype(int)
|
|
|
1075 |
flex_freq = flex_freq[['Player', 'Position', 'Team', 'Salary', 'Proj Own', 'Exposure', 'Edge']]
|
1076 |
|
1077 |
del fp_random
|
1078 |
+
del sample_arrays
|
1079 |
del final_array
|
1080 |
del fp_array
|
1081 |
try:
|