Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -47,7 +47,58 @@ freq_format = {'Proj Own': '{:.2%}', 'Exposure': '{:.2%}', 'Edge': '{:.2%}'}
|
|
| 47 |
def convert_df_to_csv(df):
|
| 48 |
return df.to_csv().encode('utf-8')
|
| 49 |
|
| 50 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
RunsVar = 1
|
| 52 |
seed_depth_def = seed_depth1
|
| 53 |
Strength_var_def = Strength_var
|
|
@@ -925,59 +976,9 @@ with tab2:
|
|
| 925 |
'team_check_map':dict(zip(cleaport_players.Player,nerf_frame.Team))
|
| 926 |
}
|
| 927 |
|
| 928 |
-
|
| 929 |
-
FinalPortfolio, maps_dict = run_seed_frame(seed_depth1, Strength_var, strength_grow, Teams_used, Total_Runs)
|
| 930 |
-
|
| 931 |
-
Sim_size = linenum_var1
|
| 932 |
-
SimVar = 1
|
| 933 |
-
Sim_Winners = []
|
| 934 |
-
fp_array = FinalPortfolio.values
|
| 935 |
-
|
| 936 |
-
if insert_port == 1:
|
| 937 |
-
up_array = CleanPortfolio.values
|
| 938 |
-
|
| 939 |
-
# Pre-vectorize functions
|
| 940 |
-
vec_projection_map = np.vectorize(maps_dict['Projection_map'].__getitem__)
|
| 941 |
-
vec_stdev_map = np.vectorize(maps_dict['STDev_map'].__getitem__)
|
| 942 |
-
|
| 943 |
-
if insert_port == 1:
|
| 944 |
-
vec_up_projection_map = np.vectorize(up_dict['Projection_map'].__getitem__)
|
| 945 |
-
vec_up_stdev_map = np.vectorize(up_dict['STDev_map'].__getitem__)
|
| 946 |
-
|
| 947 |
-
st.write('Simulating contest on frames')
|
| 948 |
-
|
| 949 |
-
while SimVar <= Sim_size:
|
| 950 |
-
if insert_port == 1:
|
| 951 |
-
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size-len(CleanPortfolio))]
|
| 952 |
-
elif insert_port == 0:
|
| 953 |
-
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
|
| 954 |
-
|
| 955 |
-
sample_arrays1 = np.c_[
|
| 956 |
-
fp_random,
|
| 957 |
-
np.sum(np.random.normal(
|
| 958 |
-
loc=vec_projection_map(fp_random[:, :-5]),
|
| 959 |
-
scale=vec_stdev_map(fp_random[:, :-5])),
|
| 960 |
-
axis=1)
|
| 961 |
-
]
|
| 962 |
-
|
| 963 |
-
if insert_port == 1:
|
| 964 |
-
sample_arrays2 = np.c_[
|
| 965 |
-
up_array,
|
| 966 |
-
np.sum(np.random.normal(
|
| 967 |
-
loc=vec_up_projection_map(up_array[:, :-5]),
|
| 968 |
-
scale=vec_up_stdev_map(up_array[:, :-5])),
|
| 969 |
-
axis=1)
|
| 970 |
-
]
|
| 971 |
-
sample_arrays = np.vstack((sample_arrays1, sample_arrays2))
|
| 972 |
-
else:
|
| 973 |
-
sample_arrays = sample_arrays1
|
| 974 |
-
|
| 975 |
-
final_array = sample_arrays[sample_arrays[:, 9].argsort()[::-1]]
|
| 976 |
-
best_lineup = final_array[final_array[:, -1].argsort(kind='stable')[::-1][:1]]
|
| 977 |
-
Sim_Winners.append(best_lineup)
|
| 978 |
-
SimVar += 1
|
| 979 |
|
| 980 |
-
|
| 981 |
# Initial setup
|
| 982 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners), columns=FinalPortfolio.columns.tolist() + ['Fantasy'])
|
| 983 |
Sim_Winner_Frame['GPP_Proj'] = (Sim_Winner_Frame['Projection'] + Sim_Winner_Frame['Fantasy']) / 2
|
|
@@ -1011,7 +1012,7 @@ with tab2:
|
|
| 1011 |
st.session_state.player_freq['Position'] = st.session_state.player_freq['Player'].map(maps_dict['Pos_map'])
|
| 1012 |
st.session_state.player_freq['Salary'] = st.session_state.player_freq['Player'].map(maps_dict['Salary_map'])
|
| 1013 |
st.session_state.player_freq['Proj Own'] = st.session_state.player_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1014 |
-
st.session_state.player_freq['Exposure'] = st.session_state.player_freq['Freq']/(
|
| 1015 |
st.session_state.player_freq['Edge'] = st.session_state.player_freq['Exposure'] - st.session_state.player_freq['Proj Own']
|
| 1016 |
st.session_state.player_freq['Team'] = st.session_state.player_freq['Player'].map(maps_dict['Team_map'])
|
| 1017 |
for checkVar in range(len(team_list)):
|
|
@@ -1023,7 +1024,7 @@ with tab2:
|
|
| 1023 |
st.session_state.qb_freq['Position'] = st.session_state.qb_freq['Player'].map(maps_dict['Pos_map'])
|
| 1024 |
st.session_state.qb_freq['Salary'] = st.session_state.qb_freq['Player'].map(maps_dict['Salary_map'])
|
| 1025 |
st.session_state.qb_freq['Proj Own'] = st.session_state.qb_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1026 |
-
st.session_state.qb_freq['Exposure'] = st.session_state.qb_freq['Freq']/(
|
| 1027 |
st.session_state.qb_freq['Edge'] = st.session_state.qb_freq['Exposure'] - st.session_state.qb_freq['Proj Own']
|
| 1028 |
st.session_state.qb_freq['Team'] = st.session_state.qb_freq['Player'].map(maps_dict['Team_map'])
|
| 1029 |
for checkVar in range(len(team_list)):
|
|
@@ -1035,7 +1036,7 @@ with tab2:
|
|
| 1035 |
st.session_state.rb_freq['Position'] = st.session_state.rb_freq['Player'].map(maps_dict['Pos_map'])
|
| 1036 |
st.session_state.rb_freq['Salary'] = st.session_state.rb_freq['Player'].map(maps_dict['Salary_map'])
|
| 1037 |
st.session_state.rb_freq['Proj Own'] = st.session_state.rb_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1038 |
-
st.session_state.rb_freq['Exposure'] = st.session_state.rb_freq['Freq']/
|
| 1039 |
st.session_state.rb_freq['Edge'] = st.session_state.rb_freq['Exposure'] - st.session_state.rb_freq['Proj Own']
|
| 1040 |
st.session_state.rb_freq['Team'] = st.session_state.rb_freq['Player'].map(maps_dict['Team_map'])
|
| 1041 |
for checkVar in range(len(team_list)):
|
|
@@ -1047,7 +1048,7 @@ with tab2:
|
|
| 1047 |
st.session_state.wr_freq['Position'] = st.session_state.wr_freq['Player'].map(maps_dict['Pos_map'])
|
| 1048 |
st.session_state.wr_freq['Salary'] = st.session_state.wr_freq['Player'].map(maps_dict['Salary_map'])
|
| 1049 |
st.session_state.wr_freq['Proj Own'] = st.session_state.wr_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1050 |
-
st.session_state.wr_freq['Exposure'] = st.session_state.wr_freq['Freq']/
|
| 1051 |
st.session_state.wr_freq['Edge'] = st.session_state.wr_freq['Exposure'] - st.session_state.wr_freq['Proj Own']
|
| 1052 |
st.session_state.wr_freq['Team'] = st.session_state.wr_freq['Player'].map(maps_dict['Team_map'])
|
| 1053 |
for checkVar in range(len(team_list)):
|
|
@@ -1059,7 +1060,7 @@ with tab2:
|
|
| 1059 |
st.session_state.flex_freq['Position'] = st.session_state.flex_freq['Player'].map(maps_dict['Pos_map'])
|
| 1060 |
st.session_state.flex_freq['Salary'] = st.session_state.flex_freq['Player'].map(maps_dict['Salary_map'])
|
| 1061 |
st.session_state.flex_freq['Proj Own'] = st.session_state.flex_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1062 |
-
st.session_state.flex_freq['Exposure'] = st.session_state.flex_freq['Freq']/
|
| 1063 |
st.session_state.flex_freq['Edge'] = st.session_state.flex_freq['Exposure'] - st.session_state.flex_freq['Proj Own']
|
| 1064 |
st.session_state.flex_freq['Team'] = st.session_state.flex_freq['Player'].map(maps_dict['Team_map'])
|
| 1065 |
for checkVar in range(len(team_list)):
|
|
@@ -1071,7 +1072,7 @@ with tab2:
|
|
| 1071 |
st.session_state.dst_freq['Position'] = st.session_state.dst_freq['Player'].map(maps_dict['Pos_map'])
|
| 1072 |
st.session_state.dst_freq['Salary'] = st.session_state.dst_freq['Player'].map(maps_dict['Salary_map'])
|
| 1073 |
st.session_state.dst_freq['Proj Own'] = st.session_state.dst_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1074 |
-
st.session_state.dst_freq['Exposure'] = st.session_state.dst_freq['Freq']/
|
| 1075 |
st.session_state.dst_freq['Edge'] = st.session_state.dst_freq['Exposure'] - st.session_state.dst_freq['Proj Own']
|
| 1076 |
st.session_state.dst_freq['Team'] = st.session_state.dst_freq['Player'].map(maps_dict['Team_map'])
|
| 1077 |
for checkVar in range(len(team_list)):
|
|
@@ -1100,8 +1101,7 @@ with tab2:
|
|
| 1100 |
)
|
| 1101 |
|
| 1102 |
with st.container():
|
| 1103 |
-
|
| 1104 |
-
tab1, tab2, tab3, tab4, tab5, tab6 = st.tabs(['Overall Exposures', 'QB Exposures', 'RB Exposures', 'WR Exposures', 'FLEX Exposures', 'S_FLEX Exposures'])
|
| 1105 |
with tab1:
|
| 1106 |
if 'player_freq' in st.session_state:
|
| 1107 |
st.dataframe(st.session_state.player_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
|
@@ -1147,14 +1147,6 @@ with tab2:
|
|
| 1147 |
file_name='flex_freq_export.csv',
|
| 1148 |
mime='text/csv',
|
| 1149 |
)
|
| 1150 |
-
with tab6:
|
| 1151 |
-
if 'dst_freq' in st.session_state:
|
| 1152 |
-
st.dataframe(st.session_state.dst_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
| 1153 |
-
st.download_button(
|
| 1154 |
-
label="Export Exposures",
|
| 1155 |
-
data=st.session_state.dst_freq.to_csv().encode('utf-8'),
|
| 1156 |
-
file_name='dst_freq_export.csv',
|
| 1157 |
-
mime='text/csv',
|
| 1158 |
-
)
|
| 1159 |
|
| 1160 |
-
|
|
|
|
|
|
| 47 |
def convert_df_to_csv(df):
|
| 48 |
return df.to_csv().encode('utf-8')
|
| 49 |
|
| 50 |
+
def sim_contest(Sim_size, FinalPortfolio, CleanPortfolio, maps_dict, up_dict, insert_port):
|
| 51 |
+
SimVar = 1
|
| 52 |
+
Sim_Winners = []
|
| 53 |
+
fp_array = FinalPortfolio.values
|
| 54 |
+
|
| 55 |
+
if insert_port == 1:
|
| 56 |
+
up_array = CleanPortfolio.values
|
| 57 |
+
|
| 58 |
+
# Pre-vectorize functions
|
| 59 |
+
vec_projection_map = np.vectorize(maps_dict['Projection_map'].__getitem__)
|
| 60 |
+
vec_stdev_map = np.vectorize(maps_dict['STDev_map'].__getitem__)
|
| 61 |
+
|
| 62 |
+
if insert_port == 1:
|
| 63 |
+
vec_up_projection_map = np.vectorize(up_dict['Projection_map'].__getitem__)
|
| 64 |
+
vec_up_stdev_map = np.vectorize(up_dict['STDev_map'].__getitem__)
|
| 65 |
+
|
| 66 |
+
st.write('Simulating contest on frames')
|
| 67 |
+
|
| 68 |
+
while SimVar <= Sim_size:
|
| 69 |
+
if insert_port == 1:
|
| 70 |
+
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size-len(CleanPortfolio))]
|
| 71 |
+
elif insert_port == 0:
|
| 72 |
+
fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
|
| 73 |
+
|
| 74 |
+
sample_arrays1 = np.c_[
|
| 75 |
+
fp_random,
|
| 76 |
+
np.sum(np.random.normal(
|
| 77 |
+
loc=vec_projection_map(fp_random[:, :-5]),
|
| 78 |
+
scale=vec_stdev_map(fp_random[:, :-5])),
|
| 79 |
+
axis=1)
|
| 80 |
+
]
|
| 81 |
+
|
| 82 |
+
if insert_port == 1:
|
| 83 |
+
sample_arrays2 = np.c_[
|
| 84 |
+
up_array,
|
| 85 |
+
np.sum(np.random.normal(
|
| 86 |
+
loc=vec_up_projection_map(up_array[:, :-5]),
|
| 87 |
+
scale=vec_up_stdev_map(up_array[:, :-5])),
|
| 88 |
+
axis=1)
|
| 89 |
+
]
|
| 90 |
+
sample_arrays = np.vstack((sample_arrays1, sample_arrays2))
|
| 91 |
+
else:
|
| 92 |
+
sample_arrays = sample_arrays1
|
| 93 |
+
|
| 94 |
+
final_array = sample_arrays[sample_arrays[:, 10].argsort()[::-1]]
|
| 95 |
+
best_lineup = final_array[final_array[:, -1].argsort(kind='stable')[::-1][:1]]
|
| 96 |
+
Sim_Winners.append(best_lineup)
|
| 97 |
+
SimVar += 1
|
| 98 |
+
|
| 99 |
+
return Sim_Winners
|
| 100 |
+
|
| 101 |
+
def run_seed_frame(seed_depth1, Strength_var, strength_grow, Teams_used, Total_Runs, field_growth):
|
| 102 |
RunsVar = 1
|
| 103 |
seed_depth_def = seed_depth1
|
| 104 |
Strength_var_def = Strength_var
|
|
|
|
| 976 |
'team_check_map':dict(zip(cleaport_players.Player,nerf_frame.Team))
|
| 977 |
}
|
| 978 |
|
| 979 |
+
FinalPortfolio, maps_dict = run_seed_frame(5, Strength_var, strength_grow, Teams_used, 1000000, field_growth)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 980 |
|
| 981 |
+
Sim_Winners = sim_contest(5000, FinalPortfolio, CleanPortfolio, maps_dict, up_dict, insert_port)
|
| 982 |
# Initial setup
|
| 983 |
Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners), columns=FinalPortfolio.columns.tolist() + ['Fantasy'])
|
| 984 |
Sim_Winner_Frame['GPP_Proj'] = (Sim_Winner_Frame['Projection'] + Sim_Winner_Frame['Fantasy']) / 2
|
|
|
|
| 1012 |
st.session_state.player_freq['Position'] = st.session_state.player_freq['Player'].map(maps_dict['Pos_map'])
|
| 1013 |
st.session_state.player_freq['Salary'] = st.session_state.player_freq['Player'].map(maps_dict['Salary_map'])
|
| 1014 |
st.session_state.player_freq['Proj Own'] = st.session_state.player_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1015 |
+
st.session_state.player_freq['Exposure'] = st.session_state.player_freq['Freq']/(5000)
|
| 1016 |
st.session_state.player_freq['Edge'] = st.session_state.player_freq['Exposure'] - st.session_state.player_freq['Proj Own']
|
| 1017 |
st.session_state.player_freq['Team'] = st.session_state.player_freq['Player'].map(maps_dict['Team_map'])
|
| 1018 |
for checkVar in range(len(team_list)):
|
|
|
|
| 1024 |
st.session_state.qb_freq['Position'] = st.session_state.qb_freq['Player'].map(maps_dict['Pos_map'])
|
| 1025 |
st.session_state.qb_freq['Salary'] = st.session_state.qb_freq['Player'].map(maps_dict['Salary_map'])
|
| 1026 |
st.session_state.qb_freq['Proj Own'] = st.session_state.qb_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1027 |
+
st.session_state.qb_freq['Exposure'] = st.session_state.qb_freq['Freq']/(5000)
|
| 1028 |
st.session_state.qb_freq['Edge'] = st.session_state.qb_freq['Exposure'] - st.session_state.qb_freq['Proj Own']
|
| 1029 |
st.session_state.qb_freq['Team'] = st.session_state.qb_freq['Player'].map(maps_dict['Team_map'])
|
| 1030 |
for checkVar in range(len(team_list)):
|
|
|
|
| 1036 |
st.session_state.rb_freq['Position'] = st.session_state.rb_freq['Player'].map(maps_dict['Pos_map'])
|
| 1037 |
st.session_state.rb_freq['Salary'] = st.session_state.rb_freq['Player'].map(maps_dict['Salary_map'])
|
| 1038 |
st.session_state.rb_freq['Proj Own'] = st.session_state.rb_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1039 |
+
st.session_state.rb_freq['Exposure'] = st.session_state.rb_freq['Freq']/5000
|
| 1040 |
st.session_state.rb_freq['Edge'] = st.session_state.rb_freq['Exposure'] - st.session_state.rb_freq['Proj Own']
|
| 1041 |
st.session_state.rb_freq['Team'] = st.session_state.rb_freq['Player'].map(maps_dict['Team_map'])
|
| 1042 |
for checkVar in range(len(team_list)):
|
|
|
|
| 1048 |
st.session_state.wr_freq['Position'] = st.session_state.wr_freq['Player'].map(maps_dict['Pos_map'])
|
| 1049 |
st.session_state.wr_freq['Salary'] = st.session_state.wr_freq['Player'].map(maps_dict['Salary_map'])
|
| 1050 |
st.session_state.wr_freq['Proj Own'] = st.session_state.wr_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1051 |
+
st.session_state.wr_freq['Exposure'] = st.session_state.wr_freq['Freq']/5000
|
| 1052 |
st.session_state.wr_freq['Edge'] = st.session_state.wr_freq['Exposure'] - st.session_state.wr_freq['Proj Own']
|
| 1053 |
st.session_state.wr_freq['Team'] = st.session_state.wr_freq['Player'].map(maps_dict['Team_map'])
|
| 1054 |
for checkVar in range(len(team_list)):
|
|
|
|
| 1060 |
st.session_state.flex_freq['Position'] = st.session_state.flex_freq['Player'].map(maps_dict['Pos_map'])
|
| 1061 |
st.session_state.flex_freq['Salary'] = st.session_state.flex_freq['Player'].map(maps_dict['Salary_map'])
|
| 1062 |
st.session_state.flex_freq['Proj Own'] = st.session_state.flex_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1063 |
+
st.session_state.flex_freq['Exposure'] = st.session_state.flex_freq['Freq']/5000
|
| 1064 |
st.session_state.flex_freq['Edge'] = st.session_state.flex_freq['Exposure'] - st.session_state.flex_freq['Proj Own']
|
| 1065 |
st.session_state.flex_freq['Team'] = st.session_state.flex_freq['Player'].map(maps_dict['Team_map'])
|
| 1066 |
for checkVar in range(len(team_list)):
|
|
|
|
| 1072 |
st.session_state.dst_freq['Position'] = st.session_state.dst_freq['Player'].map(maps_dict['Pos_map'])
|
| 1073 |
st.session_state.dst_freq['Salary'] = st.session_state.dst_freq['Player'].map(maps_dict['Salary_map'])
|
| 1074 |
st.session_state.dst_freq['Proj Own'] = st.session_state.dst_freq['Player'].map(maps_dict['Own_map']) / 100
|
| 1075 |
+
st.session_state.dst_freq['Exposure'] = st.session_state.dst_freq['Freq']/5000
|
| 1076 |
st.session_state.dst_freq['Edge'] = st.session_state.dst_freq['Exposure'] - st.session_state.dst_freq['Proj Own']
|
| 1077 |
st.session_state.dst_freq['Team'] = st.session_state.dst_freq['Player'].map(maps_dict['Team_map'])
|
| 1078 |
for checkVar in range(len(team_list)):
|
|
|
|
| 1101 |
)
|
| 1102 |
|
| 1103 |
with st.container():
|
| 1104 |
+
tab1, tab2, tab3, tab4, tab5 = st.tabs(['Overall Exposures', 'QB Exposures', 'RB Exposures', 'WR Exposures', 'FLEX Exposures'])
|
|
|
|
| 1105 |
with tab1:
|
| 1106 |
if 'player_freq' in st.session_state:
|
| 1107 |
st.dataframe(st.session_state.player_freq.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(freq_format, precision=2), use_container_width = True)
|
|
|
|
| 1147 |
file_name='flex_freq_export.csv',
|
| 1148 |
mime='text/csv',
|
| 1149 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1150 |
|
| 1151 |
+
|
| 1152 |
+
gc.collect()
|