James McCool commited on
Commit
09786de
·
1 Parent(s): 9d012a3

Adding NHL database query support

Browse files
Files changed (1) hide show
  1. app.py +96 -2
app.py CHANGED
@@ -45,11 +45,19 @@ dk_db_nba_showdown_selections = ['DK_NBA_SD_seed_frame_Showdown #1', 'DK_NBA_SD_
45
  fd_db_nba_showdown_selections = ['FD_NBA_SD_seed_frame_Showdown #1', 'FD_NBA_SD_seed_frame_Showdown #2', 'FD_NBA_SD_seed_frame_Showdown #3', 'FD_NBA_SD_seed_frame_Showdown #4', 'FD_NBA_SD_seed_frame_Showdown #5', 'FD_NBA_SD_seed_frame_Showdown #6',
46
  'FD_NBA_SD_seed_frame_Showdown #7', 'FD_NBA_SD_seed_frame_Showdown #8', 'FD_NBA_SD_seed_frame_Showdown #9', 'FD_NBA_SD_seed_frame_Showdown #10', 'FD_NBA_SD_seed_frame_Showdown #11', 'FD_NBA_SD_seed_frame_Showdown #12', 'FD_NBA_SD_seed_frame_Showdown #13',
47
  'FD_NBA_SD_seed_frame_Showdown #14', 'FD_NBA_SD_seed_frame_Showdown #15']
 
 
 
 
 
 
48
 
49
  dk_nfl_showdown_db_translation = dict(zip(showdown_selections, dk_db_nfl_showdown_selections))
50
  fd_nfl_showdown_db_translation = dict(zip(showdown_selections, fd_db_nfl_showdown_selections))
51
  dk_nba_showdown_db_translation = dict(zip(showdown_selections, dk_db_nba_showdown_selections))
52
  fd_nba_showdown_db_translation = dict(zip(showdown_selections, fd_db_nba_showdown_selections))
 
 
53
 
54
  freq_format = {'Finish_percentile': '{:.2%}', 'Lineup Edge': '{:.2%}', 'Lineup Edge_Raw': '{:.2%}', 'Win%': '{:.2%}'}
55
  stacking_sports = ['MLB', 'NHL', 'NFL', 'LOL', 'NCAAF']
@@ -393,6 +401,52 @@ except:
393
  nba_slate_names_fd = []
394
  nba_slate_name_lookup_fd = {}
395
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  # Memory optimization helper functions
397
  def chunk_name_matching(portfolio_names, csv_names, chunk_size=1000):
398
  """Process name matching in chunks to reduce memory usage"""
@@ -770,6 +824,8 @@ with st.container():
770
  slate_var3 = st.radio("Which slate data are you loading?", (nba_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
771
  elif sport_var == 'NFL':
772
  slate_var3 = st.radio("Which slate data are you loading?", (nfl_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
 
 
773
  else:
774
  slate_var3 = st.radio("Which slate data are you loading?", (['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
775
  elif site_var == 'Fanduel':
@@ -777,6 +833,8 @@ with st.container():
777
  slate_var3 = st.radio("Which slate data are you loading?", (nba_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
778
  elif sport_var == 'NFL':
779
  slate_var3 = st.radio("Which slate data are you loading?", (nfl_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
 
 
780
  else:
781
  slate_var3 = st.radio("Which slate data are you loading?", (['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
782
 
@@ -785,8 +843,12 @@ with st.container():
785
  salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 50000, value = 49000, step = 100, key = 'salary_min_var_dk')
786
  salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 50000, value = 50000, step = 100, key = 'salary_max_var_dk')
787
  elif site_var == 'Fanduel':
788
- salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 60000, value = 59000, step = 100, key = 'salary_min_var_fd')
789
- salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 60000, value = 60000, step = 100, key = 'salary_max_var_fd')
 
 
 
 
790
  with optimals_stacks_col:
791
  if site_var == 'Draftkings':
792
  min_stacks_var = st.number_input("Minimum stacks used", min_value = 0, max_value = 5, value = 1, step = 1, key = 'min_stacks_var_dk')
@@ -811,6 +873,14 @@ with st.container():
811
  nba_showdown_salaries = grab_nba_showdown_salaries()
812
  except:
813
  nba_showdown_salaries = None
 
 
 
 
 
 
 
 
814
 
815
  try:
816
  selected_tab = st.segmented_control(
@@ -860,6 +930,11 @@ if selected_tab == 'Data Load':
860
  st.session_state['csv_file'] = load_csv(nfl_reg_salaries)
861
  elif type_var == 'Showdown':
862
  st.session_state['csv_file'] = load_csv(nfl_showdown_salaries)
 
 
 
 
 
863
  st.session_state['pricing_loaded'] = True
864
 
865
  try:
@@ -932,11 +1007,15 @@ if selected_tab == 'Data Load':
932
  portfolio_load = init_DK_NBA_lineups(type_var, slate_var3, prio_var, 50, dk_nba_showdown_db_translation, lineup_num_var, [])
933
  elif sport_var == 'NFL':
934
  portfolio_load = init_DK_NFL_lineups(type_var, slate_var3, prio_var, 50, dk_nfl_showdown_db_translation, lineup_num_var, [])
 
 
935
  else:
936
  if sport_var == 'NBA':
937
  portfolio_load = init_DK_NBA_lineups(type_var, nba_slate_name_lookup_dk[slate_var3], prio_var, 50, dk_nba_showdown_db_translation, lineup_num_var, [])
938
  elif sport_var == 'NFL':
939
  portfolio_load = init_DK_NFL_lineups(type_var, nfl_slate_name_lookup_dk[slate_var3], prio_var, 50, dk_nfl_showdown_db_translation, lineup_num_var, [])
 
 
940
  st.session_state['db_portfolio_file'] = pd.DataFrame(portfolio_load)
941
  st.session_state['portfolio_loaded'] = True
942
  if 'portfolio' in st.session_state:
@@ -949,11 +1028,15 @@ if selected_tab == 'Data Load':
949
  portfolio_load = init_FD_NBA_lineups(type_var, slate_var3, prio_var, 50, fd_nba_showdown_db_translation, lineup_num_var, [])
950
  elif sport_var == 'NFL':
951
  portfolio_load = init_FD_NFL_lineups(type_var, slate_var3, prio_var, 50, fd_nfl_showdown_db_translation, lineup_num_var, [])
 
 
952
  else:
953
  if sport_var == 'NBA':
954
  portfolio_load = init_FD_NBA_lineups(type_var, nba_slate_name_lookup_fd[slate_var3], prio_var, 50, fd_nba_showdown_db_translation, lineup_num_var, [])
955
  elif sport_var == 'NFL':
956
  portfolio_load = init_FD_NFL_lineups(type_var, nfl_slate_name_lookup_fd[slate_var3], prio_var, 50, fd_nfl_showdown_db_translation, lineup_num_var, [])
 
 
957
  st.session_state['db_portfolio_file'] = pd.DataFrame(portfolio_load)
958
  st.session_state['portfolio_loaded'] = True
959
  if 'portfolio' in st.session_state:
@@ -1077,6 +1160,17 @@ if selected_tab == 'Data Load':
1077
  projections_file = init_nfl_baselines(type_var, site_var, slate_var3)[1]
1078
  elif type_var == 'Showdown':
1079
  projections_file = init_nfl_baselines(type_var, site_var, slate_var3)[3]
 
 
 
 
 
 
 
 
 
 
 
1080
  st.session_state['db_projections_file'] = projections_file
1081
  st.session_state['projections_loaded'] = True
1082
  if 'projections_df' in st.session_state:
 
45
  fd_db_nba_showdown_selections = ['FD_NBA_SD_seed_frame_Showdown #1', 'FD_NBA_SD_seed_frame_Showdown #2', 'FD_NBA_SD_seed_frame_Showdown #3', 'FD_NBA_SD_seed_frame_Showdown #4', 'FD_NBA_SD_seed_frame_Showdown #5', 'FD_NBA_SD_seed_frame_Showdown #6',
46
  'FD_NBA_SD_seed_frame_Showdown #7', 'FD_NBA_SD_seed_frame_Showdown #8', 'FD_NBA_SD_seed_frame_Showdown #9', 'FD_NBA_SD_seed_frame_Showdown #10', 'FD_NBA_SD_seed_frame_Showdown #11', 'FD_NBA_SD_seed_frame_Showdown #12', 'FD_NBA_SD_seed_frame_Showdown #13',
47
  'FD_NBA_SD_seed_frame_Showdown #14', 'FD_NBA_SD_seed_frame_Showdown #15']
48
+ dk_db_nhl_showdown_selections = ['DK_NHL_SD_seed_frame_Showdown #1', 'DK_NHL_SD_seed_frame_Showdown #2', 'DK_NHL_SD_seed_frame_Showdown #3', 'DK_NHL_SD_seed_frame_Showdown #4', 'DK_NHL_SD_seed_frame_Showdown #5', 'DK_NHL_SD_seed_frame_Showdown #6',
49
+ 'DK_NHL_SD_seed_frame_Showdown #7', 'DK_NHL_SD_seed_frame_Showdown #8', 'DK_NHL_SD_seed_frame_Showdown #9', 'DK_NHL_SD_seed_frame_Showdown #10', 'DK_NHL_SD_seed_frame_Showdown #11', 'DK_NHL_SD_seed_frame_Showdown #12', 'DK_NHL_SD_seed_frame_Showdown #13',
50
+ 'DK_NHL_SD_seed_frame_Showdown #14', 'DK_NHL_SD_seed_frame_Showdown #15']
51
+ fd_db_nhl_showdown_selections = ['FD_NHL_SD_seed_frame_Showdown #1', 'FD_NHL_SD_seed_frame_Showdown #2', 'FD_NHL_SD_seed_frame_Showdown #3', 'FD_NHL_SD_seed_frame_Showdown #4', 'FD_NHL_SD_seed_frame_Showdown #5', 'FD_NHL_SD_seed_frame_Showdown #6',
52
+ 'FD_NHL_SD_seed_frame_Showdown #7', 'FD_NHL_SD_seed_frame_Showdown #8', 'FD_NHL_SD_seed_frame_Showdown #9', 'FD_NHL_SD_seed_frame_Showdown #10', 'FD_NHL_SD_seed_frame_Showdown #11', 'FD_NHL_SD_seed_frame_Showdown #12', 'FD_NHL_SD_seed_frame_Showdown #13',
53
+ 'FD_NHL_SD_seed_frame_Showdown #14', 'FD_NHL_SD_seed_frame_Showdown #15']
54
 
55
  dk_nfl_showdown_db_translation = dict(zip(showdown_selections, dk_db_nfl_showdown_selections))
56
  fd_nfl_showdown_db_translation = dict(zip(showdown_selections, fd_db_nfl_showdown_selections))
57
  dk_nba_showdown_db_translation = dict(zip(showdown_selections, dk_db_nba_showdown_selections))
58
  fd_nba_showdown_db_translation = dict(zip(showdown_selections, fd_db_nba_showdown_selections))
59
+ dk_nhl_showdown_db_translation = dict(zip(showdown_selections, dk_db_nhl_showdown_selections))
60
+ fd_nhl_showdown_db_translation = dict(zip(showdown_selections, fd_db_nhl_showdown_selections))
61
 
62
  freq_format = {'Finish_percentile': '{:.2%}', 'Lineup Edge': '{:.2%}', 'Lineup Edge_Raw': '{:.2%}', 'Win%': '{:.2%}'}
63
  stacking_sports = ['MLB', 'NHL', 'NFL', 'LOL', 'NCAAF']
 
401
  nba_slate_names_fd = []
402
  nba_slate_name_lookup_fd = {}
403
 
404
+ def define_dk_nhl_showdown_slates():
405
+ collection = nhl_db["Player_Level_SD_ROO"]
406
+ cursor = collection.find()
407
+ raw_display = pd.DataFrame(list(cursor))
408
+ raw_display = raw_display[raw_display['Site'] == 'Draftkings']
409
+ unique_slates = raw_display['Slate'].unique()
410
+
411
+ slate_names = []
412
+
413
+ for slate in unique_slates:
414
+ slate_data = raw_display[raw_display['Slate'] == slate]
415
+ slate_name = slate_data.iloc[0]['Team'] + ' vs. ' + slate_data.iloc[0]['Opp']
416
+ slate_names.append(slate_name)
417
+
418
+ slate_name_lookup = dict(zip(slate_names, unique_slates))
419
+ return slate_names, slate_name_lookup
420
+
421
+ def define_fd_nhl_showdown_slates():
422
+ collection = nhl_db["Player_Level_SD_ROO"]
423
+ cursor = collection.find()
424
+ raw_display = pd.DataFrame(list(cursor))
425
+ raw_display = raw_display[raw_display['Site'] == 'Fanduel']
426
+ unique_slates = raw_display['Slate'].unique()
427
+
428
+ slate_names = []
429
+
430
+ for slate in unique_slates:
431
+ slate_data = raw_display[raw_display['Slate'] == slate]
432
+ slate_name = slate_data.iloc[0]['Team'] + ' vs. ' + slate_data.iloc[0]['Opp']
433
+ slate_names.append(slate_name)
434
+
435
+ slate_name_lookup = dict(zip(slate_names, unique_slates))
436
+ return slate_names, slate_name_lookup
437
+
438
+ try:
439
+ nhl_slate_names_dk, nhl_slate_name_lookup_dk = define_dk_nhl_showdown_slates()
440
+ except:
441
+ nhl_slate_names_dk = []
442
+ nhl_slate_name_lookup_dk = {}
443
+
444
+ try:
445
+ nhl_slate_names_fd, nhl_slate_name_lookup_fd = define_fd_nhl_showdown_slates()
446
+ except:
447
+ nhl_slate_names_fd = []
448
+ nhl_slate_name_lookup_fd = {}
449
+
450
  # Memory optimization helper functions
451
  def chunk_name_matching(portfolio_names, csv_names, chunk_size=1000):
452
  """Process name matching in chunks to reduce memory usage"""
 
824
  slate_var3 = st.radio("Which slate data are you loading?", (nba_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
825
  elif sport_var == 'NFL':
826
  slate_var3 = st.radio("Which slate data are you loading?", (nfl_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
827
+ elif sport_var == 'NHL':
828
+ slate_var3 = st.radio("Which slate data are you loading?", (nhl_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
829
  else:
830
  slate_var3 = st.radio("Which slate data are you loading?", (['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
831
  elif site_var == 'Fanduel':
 
833
  slate_var3 = st.radio("Which slate data are you loading?", (nba_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
834
  elif sport_var == 'NFL':
835
  slate_var3 = st.radio("Which slate data are you loading?", (nfl_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
836
+ elif sport_var == 'NHL':
837
+ slate_var3 = st.radio("Which slate data are you loading?", (nhl_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
838
  else:
839
  slate_var3 = st.radio("Which slate data are you loading?", (['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
840
 
 
843
  salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 50000, value = 49000, step = 100, key = 'salary_min_var_dk')
844
  salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 50000, value = 50000, step = 100, key = 'salary_max_var_dk')
845
  elif site_var == 'Fanduel':
846
+ if sport_var == 'NHL':
847
+ salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 55000, value = 54000, step = 100, key = 'salary_min_var_fd')
848
+ salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 55000, value = 55000, step = 100, key = 'salary_max_var_fd')
849
+ else:
850
+ salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 60000, value = 59000, step = 100, key = 'salary_min_var_fd')
851
+ salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 60000, value = 60000, step = 100, key = 'salary_max_var_fd')
852
  with optimals_stacks_col:
853
  if site_var == 'Draftkings':
854
  min_stacks_var = st.number_input("Minimum stacks used", min_value = 0, max_value = 5, value = 1, step = 1, key = 'min_stacks_var_dk')
 
873
  nba_showdown_salaries = grab_nba_showdown_salaries()
874
  except:
875
  nba_showdown_salaries = None
876
+ try:
877
+ nhl_reg_salaries = grab_nhl_reg_salaries(slate_var3)
878
+ except:
879
+ nhl_reg_salaries = None
880
+ try:
881
+ nhl_showdown_salaries = grab_nhl_showdown_salaries()
882
+ except:
883
+ nhl_showdown_salaries = None
884
 
885
  try:
886
  selected_tab = st.segmented_control(
 
930
  st.session_state['csv_file'] = load_csv(nfl_reg_salaries)
931
  elif type_var == 'Showdown':
932
  st.session_state['csv_file'] = load_csv(nfl_showdown_salaries)
933
+ elif sport_var == 'NHL':
934
+ if type_var == 'Classic':
935
+ st.session_state['csv_file'] = load_csv(nhl_reg_salaries)
936
+ elif type_var == 'Showdown':
937
+ st.session_state['csv_file'] = load_csv(nhl_showdown_salaries)
938
  st.session_state['pricing_loaded'] = True
939
 
940
  try:
 
1007
  portfolio_load = init_DK_NBA_lineups(type_var, slate_var3, prio_var, 50, dk_nba_showdown_db_translation, lineup_num_var, [])
1008
  elif sport_var == 'NFL':
1009
  portfolio_load = init_DK_NFL_lineups(type_var, slate_var3, prio_var, 50, dk_nfl_showdown_db_translation, lineup_num_var, [])
1010
+ elif sport_var == 'NHL':
1011
+ portfolio_load = init_DK_NHL_lineups(type_var, slate_var3, prio_var, 50, dk_nhl_showdown_db_translation, lineup_num_var, [])
1012
  else:
1013
  if sport_var == 'NBA':
1014
  portfolio_load = init_DK_NBA_lineups(type_var, nba_slate_name_lookup_dk[slate_var3], prio_var, 50, dk_nba_showdown_db_translation, lineup_num_var, [])
1015
  elif sport_var == 'NFL':
1016
  portfolio_load = init_DK_NFL_lineups(type_var, nfl_slate_name_lookup_dk[slate_var3], prio_var, 50, dk_nfl_showdown_db_translation, lineup_num_var, [])
1017
+ elif sport_var == 'NHL':
1018
+ portfolio_load = init_DK_NHL_lineups(type_var, nhl_slate_name_lookup_dk[slate_var3], prio_var, 50, dk_nhl_showdown_db_translation, lineup_num_var, [])
1019
  st.session_state['db_portfolio_file'] = pd.DataFrame(portfolio_load)
1020
  st.session_state['portfolio_loaded'] = True
1021
  if 'portfolio' in st.session_state:
 
1028
  portfolio_load = init_FD_NBA_lineups(type_var, slate_var3, prio_var, 50, fd_nba_showdown_db_translation, lineup_num_var, [])
1029
  elif sport_var == 'NFL':
1030
  portfolio_load = init_FD_NFL_lineups(type_var, slate_var3, prio_var, 50, fd_nfl_showdown_db_translation, lineup_num_var, [])
1031
+ elif sport_var == 'NHL':
1032
+ portfolio_load = init_FD_NHL_lineups(type_var, slate_var3, prio_var, 50, fd_nhl_showdown_db_translation, lineup_num_var, [])
1033
  else:
1034
  if sport_var == 'NBA':
1035
  portfolio_load = init_FD_NBA_lineups(type_var, nba_slate_name_lookup_fd[slate_var3], prio_var, 50, fd_nba_showdown_db_translation, lineup_num_var, [])
1036
  elif sport_var == 'NFL':
1037
  portfolio_load = init_FD_NFL_lineups(type_var, nfl_slate_name_lookup_fd[slate_var3], prio_var, 50, fd_nfl_showdown_db_translation, lineup_num_var, [])
1038
+ elif sport_var == 'NHL':
1039
+ portfolio_load = init_FD_NHL_lineups(type_var, nhl_slate_name_lookup_fd[slate_var3], prio_var, 50, fd_nhl_showdown_db_translation, lineup_num_var, [])
1040
  st.session_state['db_portfolio_file'] = pd.DataFrame(portfolio_load)
1041
  st.session_state['portfolio_loaded'] = True
1042
  if 'portfolio' in st.session_state:
 
1160
  projections_file = init_nfl_baselines(type_var, site_var, slate_var3)[1]
1161
  elif type_var == 'Showdown':
1162
  projections_file = init_nfl_baselines(type_var, site_var, slate_var3)[3]
1163
+ elif sport_var == 'NHL':
1164
+ if site_var == 'Draftkings':
1165
+ if type_var == 'Classic':
1166
+ projections_file = init_nhl_baselines(type_var, site_var, slate_var3)[0]
1167
+ elif type_var == 'Showdown':
1168
+ projections_file = init_nhl_baselines(type_var, site_var, slate_var3)[2]
1169
+ elif site_var == 'Fanduel':
1170
+ if type_var == 'Classic':
1171
+ projections_file = init_nhl_baselines(type_var, site_var, slate_var3)[1]
1172
+ elif type_var == 'Showdown':
1173
+ projections_file = init_nhl_baselines(type_var, site_var, slate_var3)[3]
1174
  st.session_state['db_projections_file'] = projections_file
1175
  st.session_state['projections_loaded'] = True
1176
  if 'projections_df' in st.session_state: