Multichem commited on
Commit
15af3e3
·
1 Parent(s): 66e991e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -71
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 run_seed_frame(seed_depth1, Strength_var, strength_grow, Teams_used, Total_Runs):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- st.write('Seed frame creation')
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
- st.write('Contest simulation complete')
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']/(Sim_size)
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']/(Sim_size)
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']/Sim_size
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']/Sim_size
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']/Sim_size
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']/Sim_size
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
- freq_container = st.empty()
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
- gc.collect()
 
 
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()