James McCool commited on
Commit
83e4ee0
·
1 Parent(s): 5ef09f7

Add configurable ROO parameters in sidebar for dynamic projection analysis

Browse files
Files changed (2) hide show
  1. app.py +19 -13
  2. function_hold/NBA_functions.py +8 -8
app.py CHANGED
@@ -81,24 +81,30 @@ with tab1:
81
  with tab2:
82
  if st.button('Clear data', key='reset2'):
83
  st.session_state.clear()
84
- site_var = st.selectbox("Select Site", ["Draftkings", "Fanduel"])
 
 
 
 
 
 
85
  if projections_file:
86
  if st.button('Build ROO'):
87
  if sport_var == "NBA":
88
- if site_var == "Draftkings":
89
- disp_file = DK_NBA_ROO_Build(projections)
90
- elif site_var == "Fanduel":
91
- disp_file = FD_NBA_ROO_Build(projections)
92
  elif sport_var == "NFL":
93
- if site_var == "Draftkings":
94
- disp_file = DK_NFL_ROO_Build(projections)
95
- elif site_var == "Fanduel":
96
- disp_file = FD_NFL_ROO_Build(projections)
97
  elif sport_var == "MLB":
98
- if site_var == "Draftkings":
99
- disp_file = DK_MLB_ROO_Build(projections)
100
- elif site_var == "Fanduel":
101
- disp_file = FD_MLB_ROO_Build(projections)
102
 
103
  if disp_file is not None:
104
  st.dataframe(disp_file.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=1000, use_container_width = True)
 
81
  with tab2:
82
  if st.button('Clear data', key='reset2'):
83
  st.session_state.clear()
84
+
85
+ with st.sidebar:
86
+ site_var_sb = st.selectbox("Select Site", ["Draftkings", "Fanduel"])
87
+ floor_var_sb = st.number_input("Floor (low end multiplier)", min_value=0.00, max_value=.50, value=.25, step=.01)
88
+ ceiling_var_sb = st.number_input("Ceiling (high end multiplier)", min_value=1.50, max_value=3.00, value=2.00, step=.01)
89
+ std_var_sb = st.number_input("Standard Deviation (variance within distribution)", min_value=1.00, max_value=5.00, value=4.00, step=.01)
90
+
91
  if projections_file:
92
  if st.button('Build ROO'):
93
  if sport_var == "NBA":
94
+ if site_var_sb == "Draftkings":
95
+ disp_file = DK_NBA_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb)
96
+ elif site_var_sb == "Fanduel":
97
+ disp_file = FD_NBA_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb)
98
  elif sport_var == "NFL":
99
+ if site_var_sb == "Draftkings":
100
+ disp_file = DK_NFL_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb)
101
+ elif site_var_sb == "Fanduel":
102
+ disp_file = FD_NFL_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb)
103
  elif sport_var == "MLB":
104
+ if site_var_sb == "Draftkings":
105
+ disp_file = DK_MLB_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb)
106
+ elif site_var_sb == "Fanduel":
107
+ disp_file = FD_MLB_ROO_Build(projections, floor_var_sb, ceiling_var_sb, std_var_sb)
108
 
109
  if disp_file is not None:
110
  st.dataframe(disp_file.style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), height=1000, use_container_width = True)
function_hold/NBA_functions.py CHANGED
@@ -7,7 +7,7 @@ from pandas import concat as pd_concat
7
  from pandas import merge as pd_merge
8
  from pandas import DataFrame
9
 
10
- def DK_NBA_ROO_Build(projections_file):
11
  total_sims = 1000
12
 
13
  projects_raw = projections_file.copy()
@@ -107,9 +107,9 @@ def DK_NBA_ROO_Build(projections_file):
107
 
108
  flex_file = basic_own_df[['Player', 'Position', 'Salary', 'Median', 'Minutes']]
109
  flex_file = flex_file.rename(columns={"Agg": "Median"})
110
- flex_file['Floor'] = (flex_file['Median'] * .25) + (flex_file['Minutes'] * .25)
111
- flex_file['Ceiling'] = flex_file['Median'] + 10 + (flex_file['Minutes'] * .25)
112
- flex_file['STD'] = (flex_file['Median']/4)
113
  flex_file = flex_file[['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD']]
114
  flex_file = flex_file.reset_index(drop=True)
115
  hold_file = flex_file.copy()
@@ -207,7 +207,7 @@ def DK_NBA_ROO_Build(projections_file):
207
 
208
  return final_Proj.copy()
209
 
210
- def FD_NBA_ROO_Build(projections_file):
211
  total_sims = 1000
212
 
213
  projects_raw = projections_file.copy()
@@ -306,9 +306,9 @@ def FD_NBA_ROO_Build(projections_file):
306
 
307
  flex_file = basic_own_df[['Player', 'Position', 'Salary', 'Median', 'Minutes']]
308
  flex_file = flex_file.rename(columns={"Agg": "Median"})
309
- flex_file['Floor'] = (flex_file['Median'] * .25) + (flex_file['Minutes'] * .25)
310
- flex_file['Ceiling'] = flex_file['Median'] + 10 + (flex_file['Minutes'] * .25)
311
- flex_file['STD'] = (flex_file['Median']/4)
312
  flex_file = flex_file[['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD']]
313
  flex_file = flex_file.reset_index(drop=True)
314
  hold_file = flex_file.copy()
 
7
  from pandas import merge as pd_merge
8
  from pandas import DataFrame
9
 
10
+ def DK_NBA_ROO_Build(projections_file, floor_var, ceiling_var, std_var):
11
  total_sims = 1000
12
 
13
  projects_raw = projections_file.copy()
 
107
 
108
  flex_file = basic_own_df[['Player', 'Position', 'Salary', 'Median', 'Minutes']]
109
  flex_file = flex_file.rename(columns={"Agg": "Median"})
110
+ flex_file['Floor'] = (flex_file['Median'] * floor_var) + (flex_file['Minutes'] * .25)
111
+ flex_file['Ceiling'] = flex_file['Median'] + (5 * ceiling_var) + (flex_file['Minutes'] * .25)
112
+ flex_file['STD'] = (flex_file['Median'] / std_var)
113
  flex_file = flex_file[['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD']]
114
  flex_file = flex_file.reset_index(drop=True)
115
  hold_file = flex_file.copy()
 
207
 
208
  return final_Proj.copy()
209
 
210
+ def FD_NBA_ROO_Build(projections_file, floor_var, ceiling_var, std_var):
211
  total_sims = 1000
212
 
213
  projects_raw = projections_file.copy()
 
306
 
307
  flex_file = basic_own_df[['Player', 'Position', 'Salary', 'Median', 'Minutes']]
308
  flex_file = flex_file.rename(columns={"Agg": "Median"})
309
+ flex_file['Floor'] = (flex_file['Median'] * floor_var) + (flex_file['Minutes'] * .25)
310
+ flex_file['Ceiling'] = flex_file['Median'] + (5 * ceiling_var) + (flex_file['Minutes'] * .25)
311
+ flex_file['STD'] = (flex_file['Median'] / std_var)
312
  flex_file = flex_file[['Player', 'Position', 'Salary', 'Floor', 'Median', 'Ceiling', 'STD']]
313
  flex_file = flex_file.reset_index(drop=True)
314
  hold_file = flex_file.copy()