James McCool commited on
Commit
bab4530
·
1 Parent(s): 58ee5ed

Enhance ownership calculations in app.py by introducing 'Small_Field_Own' and 'small_CPT_Own' metrics. Updated calculations to improve accuracy in player ownership projections for both DraftKings and FanDuel, ensuring consistent handling of contest sizes. This refactor streamlines the logic while maintaining clarity in ownership metrics.

Browse files
Files changed (1) hide show
  1. app.py +12 -0
app.py CHANGED
@@ -132,6 +132,10 @@ def init_baselines(sport):
132
  raw_display = pd.DataFrame(list(cursor))
133
  raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
134
  'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
 
 
 
 
135
  raw_display['cpt_Median'] = raw_display['Median'] * 1.25
136
  raw_display['STDev'] = raw_display['Median'] / 4
137
  raw_display['CPT_STDev'] = raw_display['cpt_Median'] / 4
@@ -144,6 +148,8 @@ def init_baselines(sport):
144
  raw_display = pd.DataFrame(list(cursor))
145
  raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
146
  'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
 
 
147
  raw_display['cpt_Median'] = raw_display['Median']
148
  raw_display['STDev'] = raw_display['Median'] / 4
149
  raw_display['CPT_STDev'] = raw_display['cpt_Median'] / 4
@@ -158,6 +164,10 @@ def init_baselines(sport):
158
  raw_display = pd.DataFrame(list(cursor))
159
  raw_display = raw_display[['Player', 'Minutes Proj', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%',
160
  'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp']]
 
 
 
 
161
  raw_display['cpt_Median'] = raw_display['Median'] * 1.25
162
  raw_display = raw_display[raw_display['site'] == 'Draftkings']
163
  raw_display['STDev'] = raw_display['Median'] / 4
@@ -171,6 +181,8 @@ def init_baselines(sport):
171
  raw_display = pd.DataFrame(list(cursor))
172
  raw_display = raw_display[['Player', 'Minutes Proj', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%',
173
  'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp']]
 
 
174
  raw_display['cpt_Median'] = raw_display['Median']
175
  raw_display = raw_display[raw_display['site'] == 'Fanduel']
176
  raw_display['STDev'] = raw_display['Median'] / 4
 
132
  raw_display = pd.DataFrame(list(cursor))
133
  raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
134
  'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
135
+ raw_display['Small_Field_Own'] = raw_display['Large_Own']
136
+ raw_display['small_CPT_Own_raw'] = (raw_display['Small_Field_Own'] / 2) * ((100 - (100-raw_display['Small_Field_Own']))/100)
137
+ small_cpt_own_var = 100 / raw_display['small_CPT_Own_raw'].sum()
138
+ raw_display['small_CPT_Own'] = raw_display['small_CPT_Own_raw'] * small_cpt_own_var
139
  raw_display['cpt_Median'] = raw_display['Median'] * 1.25
140
  raw_display['STDev'] = raw_display['Median'] / 4
141
  raw_display['CPT_STDev'] = raw_display['cpt_Median'] / 4
 
148
  raw_display = pd.DataFrame(list(cursor))
149
  raw_display = raw_display[['Player', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '2x%', '3x%', '4x%',
150
  'Own', 'Small_Field_Own', 'Large_Field_Own', 'Cash_Field_Own', 'CPT_Own', 'LevX', 'version', 'slate', 'timestamp', 'player_id', 'site']]
151
+ raw_display['Small_Field_Own'] = raw_display['Large_Own']
152
+ raw_display['small_CPT_Own'] = raw_display['CPT_Own']
153
  raw_display['cpt_Median'] = raw_display['Median']
154
  raw_display['STDev'] = raw_display['Median'] / 4
155
  raw_display['CPT_STDev'] = raw_display['cpt_Median'] / 4
 
164
  raw_display = pd.DataFrame(list(cursor))
165
  raw_display = raw_display[['Player', 'Minutes Proj', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%',
166
  'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp']]
167
+ raw_display['Small_Field_Own'] = raw_display['Large_Own']
168
+ raw_display['small_CPT_Own_raw'] = (raw_display['Small_Field_Own'] / 2) * ((100 - (100-raw_display['Small_Field_Own']))/100)
169
+ small_cpt_own_var = 100 / raw_display['small_CPT_Own_raw'].sum()
170
+ raw_display['small_CPT_Own'] = raw_display['small_CPT_Own_raw'] * small_cpt_own_var
171
  raw_display['cpt_Median'] = raw_display['Median'] * 1.25
172
  raw_display = raw_display[raw_display['site'] == 'Draftkings']
173
  raw_display['STDev'] = raw_display['Median'] / 4
 
181
  raw_display = pd.DataFrame(list(cursor))
182
  raw_display = raw_display[['Player', 'Minutes Proj', 'Position', 'Team', 'Opp', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '20+%', '4x%', '5x%', '6x%', 'GPP%',
183
  'Own', 'Small_Own', 'Large_Own', 'Cash_Own', 'CPT_Own', 'LevX', 'ValX', 'site', 'version', 'slate', 'timestamp']]
184
+ raw_display['Small_Field_Own'] = raw_display['Large_Own']
185
+ raw_display['small_CPT_Own'] = raw_display['CPT_Own']
186
  raw_display['cpt_Median'] = raw_display['Median']
187
  raw_display = raw_display[raw_display['site'] == 'Fanduel']
188
  raw_display['STDev'] = raw_display['Median'] / 4