Multichem commited on
Commit
d0b9163
·
1 Parent(s): 81203f9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +100 -5
app.py CHANGED
@@ -5,7 +5,7 @@ import pandas as pd
5
  import gspread
6
  import pymongo
7
 
8
- @st.cache_resource(ttl = 600)
9
  def init_conn():
10
  scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
11
 
@@ -57,15 +57,17 @@ fd_columns = ['P', 'C_1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL', 'salar
57
  def init_baselines():
58
  sh = gcservice_account.open_by_url(MLB_Data)
59
 
60
- worksheet = sh.worksheet('DK_Projections')
61
  load_display = pd.DataFrame(worksheet.get_all_records())
62
  load_display.replace('', np.nan, inplace=True)
 
63
 
64
  dk_raw = load_display.dropna(subset=['Median'])
65
 
66
- worksheet = sh.worksheet('FD_Projections')
67
  load_display = pd.DataFrame(worksheet.get_all_records())
68
  load_display.replace('', np.nan, inplace=True)
 
69
 
70
  fd_raw = load_display.dropna(subset=['Median'])
71
 
@@ -90,6 +92,38 @@ def calculate_FD_value_frequencies(np_array):
90
  combined_array = np.column_stack((unique, frequencies))
91
  return combined_array
92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  dk_raw, fd_raw = init_baselines()
94
 
95
  tab1, tab2 = st.tabs(['Data Export', 'Contest Sims'])
@@ -180,7 +214,68 @@ with tab2:
180
  st.cache_data.clear()
181
  for key in st.session_state.keys():
182
  del st.session_state[key]
183
- DK_seed, FD_seed, dk_raw, fd_raw = init_baselines()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
  with col2:
186
- st.write("Things will go here")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  import gspread
6
  import pymongo
7
 
8
+ @st.cache_resource
9
  def init_conn():
10
  scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
11
 
 
57
  def init_baselines():
58
  sh = gcservice_account.open_by_url(MLB_Data)
59
 
60
+ worksheet = sh.worksheet('Main_ROO')
61
  load_display = pd.DataFrame(worksheet.get_all_records())
62
  load_display.replace('', np.nan, inplace=True)
63
+ load_display['STDev'] = load_display['Median'] / 3
64
 
65
  dk_raw = load_display.dropna(subset=['Median'])
66
 
67
+ worksheet = sh.worksheet('Main_FD_ROO')
68
  load_display = pd.DataFrame(worksheet.get_all_records())
69
  load_display.replace('', np.nan, inplace=True)
70
+ load_display['STDev'] = load_display['Median'] / 3
71
 
72
  fd_raw = load_display.dropna(subset=['Median'])
73
 
 
92
  combined_array = np.column_stack((unique, frequencies))
93
  return combined_array
94
 
95
+ @st.cache_data
96
+ def sim_contest(Sim_size, seed_frame, maps_dict):
97
+ SimVar = 1
98
+ Sim_Winners = []
99
+ fp_array = seed_frame
100
+
101
+ # Pre-vectorize functions
102
+ vec_projection_map = np.vectorize(maps_dict['Projection_map'].__getitem__)
103
+ vec_stdev_map = np.vectorize(maps_dict['STDev_map'].__getitem__)
104
+
105
+ st.write('Simulating contest on frames')
106
+
107
+ while SimVar <= Sim_size:
108
+ fp_random = fp_array[np.random.choice(fp_array.shape[0], Contest_Size)]
109
+
110
+ sample_arrays1 = np.c_[
111
+ fp_random,
112
+ np.sum(np.random.normal(
113
+ loc=vec_projection_map(fp_random[:, :-4]),
114
+ scale=vec_stdev_map(fp_random[:, :-4])),
115
+ axis=1)
116
+ ]
117
+
118
+ sample_arrays = sample_arrays1
119
+
120
+ final_array = sample_arrays[sample_arrays[:, 10].argsort()[::-1]]
121
+ best_lineup = final_array[final_array[:, -1].argsort(kind='stable')[::-1][:1]]
122
+ Sim_Winners.append(best_lineup)
123
+ SimVar += 1
124
+
125
+ return Sim_Winners
126
+
127
  dk_raw, fd_raw = init_baselines()
128
 
129
  tab1, tab2 = st.tabs(['Data Export', 'Contest Sims'])
 
214
  st.cache_data.clear()
215
  for key in st.session_state.keys():
216
  del st.session_state[key]
217
+ dk_raw, fd_raw = init_baselines()
218
+ sim_slate_var1 = st.radio("Which data are you loading?", ('Main Slate', 'Other Main Slate'), key='sim_slate_var1')
219
+ sim_site_var1 = st.radio("What site are you working with?", ('Draftkings', 'Fanduel'), key='sim_site_var1')
220
+ if sim_site_var1 == 'Draftkings':
221
+ raw_baselines = dk_raw
222
+ elif sim_site_var1 == 'Fanduel':
223
+ raw_baselines = fd_raw
224
+
225
+ contest_var1 = st.selectbox("What contest size are you simulating?", ('Small', 'Medium', 'Large', 'Massive'))
226
+ if contest_var1 == 'Small':
227
+ Contest_Size = 1000
228
+ elif contest_var1 == 'Medium':
229
+ Contest_Size = 5000
230
+ elif contest_var1 == 'Large':
231
+ Contest_Size = 10000
232
+ elif contest_var1 == 'Massive':
233
+ Contest_Size = 100000
234
+ strength_var1 = st.selectbox("How sharp is the field in the contest?", ('Not Very', 'Average', 'Very'))
235
+ if strength_var1 == 'Not Very':
236
+ sharp_split = [400000,100000]
237
+ elif strength_var1 == 'Average':
238
+ sharp_split = [500000,200000]
239
+ elif strength_var1 == 'Very':
240
+ sharp_split = [500000,300000]
241
+
242
 
243
  with col2:
244
+ maps_dict = {
245
+ 'Floor_map':dict(zip(raw_baselines.Player,raw_baselines.Floor)),
246
+ 'Projection_map':dict(zip(raw_baselines.Player,raw_baselines.Median)),
247
+ 'Ceiling_map':dict(zip(raw_baselines.Player,raw_baselines.Ceiling)),
248
+ 'Salary_map':dict(zip(raw_baselines.Player,raw_baselines.Salary)),
249
+ 'Pos_map':dict(zip(raw_baselines.Player,raw_baselines.Position)),
250
+ 'Own_map':dict(zip(raw_baselines.Player,raw_baselines.Own)),
251
+ 'Small_Own_map':dict(zip(raw_baselines.Player,raw_baselines['Small Field Own%'])),
252
+ 'Large_Own_map':dict(zip(raw_baselines.Player,raw_baselines['Large Field Own%'])),
253
+ 'Team_map':dict(zip(raw_baselines.Player,raw_baselines.Team)),
254
+ 'STDev_map':dict(zip(raw_baselines.Player,raw_baselines.STDev)),
255
+ 'team_check_map':dict(zip(raw_baselines.Player,raw_baselines.Team))
256
+ }
257
+ Sim_Winners = sim_contest(500, st.session_state.working_seed)
258
+
259
+ st.table(Sim_Winners.head(10))
260
+
261
+ # # Initial setup
262
+ # Sim_Winner_Frame = pd.DataFrame(np.concatenate(Sim_Winners), columns=FinalPortfolio.columns.tolist() + ['Fantasy'])
263
+ # Sim_Winner_Frame['GPP_Proj'] = (Sim_Winner_Frame['Projection'] + Sim_Winner_Frame['Fantasy']) / 2
264
+ # Sim_Winner_Frame['unique_id'] = Sim_Winner_Frame['Projection'].astype(str) + Sim_Winner_Frame['Salary'].astype(str) + Sim_Winner_Frame['Own'].astype(str)
265
+ # Sim_Winner_Frame = Sim_Winner_Frame.assign(win_count=Sim_Winner_Frame['unique_id'].map(Sim_Winner_Frame['unique_id'].value_counts()))
266
+
267
+ # # Type Casting
268
+ # type_cast_dict = {'Salary': int, 'Projection': np.float16, 'Fantasy': np.float16, 'GPP_Proj': np.float32}
269
+ # Sim_Winner_Frame = Sim_Winner_Frame.astype(type_cast_dict)
270
+
271
+ # del FinalPortfolio, insert_port, type_cast_dict
272
+
273
+ # # Sorting
274
+ # st.session_state.Sim_Winner_Frame = Sim_Winner_Frame.sort_values(by=['win_count', 'GPP_Proj'], ascending= [False, False]).copy().drop_duplicates(subset='unique_id').head(100)
275
+ # st.session_state.Sim_Winner_Frame.drop(columns='unique_id', inplace=True)
276
+
277
+ # # Data Copying
278
+ # st.session_state.Sim_Winner_Export = Sim_Winner_Frame.copy()
279
+
280
+ # # Data Copying
281
+ # st.session_state.Sim_Winner_Display = Sim_Winner_Frame.copy()