James McCool commited on
Commit
9012c48
·
1 Parent(s): 937571e

added no vig probably

Browse files
Files changed (1) hide show
  1. app.py +24 -4
app.py CHANGED
@@ -101,6 +101,25 @@ def init_baselines():
101
 
102
  return game_model, overall_stats, timestamp, prop_frame, prop_trends, pick_frame, market_props
103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  game_model, overall_stats, timestamp, prop_frame, prop_trends, pick_frame, market_props = init_baselines()
105
  qb_stats = overall_stats[overall_stats['Position'] == 'QB']
106
  qb_stats = qb_stats.drop_duplicates(subset=['Player', 'Position'])
@@ -226,14 +245,15 @@ with tab4:
226
  market_type = st.selectbox('Select type of prop are you wanting to view', options = prop_table_options, key = 'market_type_key')
227
  disp_market = market_props.copy()
228
  disp_market = disp_market[disp_market['PropType'] == market_type]
 
229
  fanduel_frame = disp_market[disp_market['OddsType'] == 'FANDUEL']
230
- fanduel_dict = dict(zip(fanduel_frame['Name'], fanduel_frame['Projection']))
231
  draftkings_frame = disp_market[disp_market['OddsType'] == 'DRAFTKINGS']
232
- draftkings_dict = dict(zip(draftkings_frame['Name'], draftkings_frame['Projection']))
233
  mgm_frame = disp_market[disp_market['OddsType'] == 'MGM']
234
- mgm_dict = dict(zip(mgm_frame['Name'], mgm_frame['Projection']))
235
  consensus_frame = disp_market[disp_market['OddsType'] == 'CONSENSUS']
236
- consensus_dict = dict(zip(consensus_frame['Name'], consensus_frame['Projection']))
237
 
238
  disp_market['FANDUEL Prop'] = disp_market['Name'].map(fanduel_dict)
239
  disp_market['DRAFTKINGS Prop'] = disp_market['Name'].map(draftkings_dict)
 
101
 
102
  return game_model, overall_stats, timestamp, prop_frame, prop_trends, pick_frame, market_props
103
 
104
+ def calculate_no_vig(row):
105
+ def implied_probability(american_odds):
106
+ if american_odds < 0:
107
+ return (-american_odds) / ((-american_odds) + 100)
108
+ else:
109
+ return 100 / (american_odds + 100)
110
+
111
+ over_line = row['over_pay'].apply(lambda x: (x - 1) * 100 if x >= 2.0 else -100 / (x - 1))
112
+ under_line = row['under_pay'].apply(lambda x: (x - 1) * 100 if x >= 2.0 else -100 / (x - 1))
113
+ over_prop = row['Projection']
114
+
115
+ over_prob = implied_probability(over_line)
116
+ under_prob = implied_probability(under_line)
117
+
118
+ total_prob = over_prob + under_prob
119
+ no_vig_prob = (over_prob / total_prob + 0.5) * over_prop
120
+
121
+ return no_vig_prob
122
+
123
  game_model, overall_stats, timestamp, prop_frame, prop_trends, pick_frame, market_props = init_baselines()
124
  qb_stats = overall_stats[overall_stats['Position'] == 'QB']
125
  qb_stats = qb_stats.drop_duplicates(subset=['Player', 'Position'])
 
245
  market_type = st.selectbox('Select type of prop are you wanting to view', options = prop_table_options, key = 'market_type_key')
246
  disp_market = market_props.copy()
247
  disp_market = disp_market[disp_market['PropType'] == market_type]
248
+ disp_market['No_Vig_Prop'] = disp_market.apply(calculate_no_vig, axis=1)
249
  fanduel_frame = disp_market[disp_market['OddsType'] == 'FANDUEL']
250
+ fanduel_dict = dict(zip(fanduel_frame['Name'], fanduel_frame['No_Vig_Prop']))
251
  draftkings_frame = disp_market[disp_market['OddsType'] == 'DRAFTKINGS']
252
+ draftkings_dict = dict(zip(draftkings_frame['Name'], draftkings_frame['No_Vig_Prop']))
253
  mgm_frame = disp_market[disp_market['OddsType'] == 'MGM']
254
+ mgm_dict = dict(zip(mgm_frame['Name'], mgm_frame['No_Vig_Prop']))
255
  consensus_frame = disp_market[disp_market['OddsType'] == 'CONSENSUS']
256
+ consensus_dict = dict(zip(consensus_frame['Name'], consensus_frame['No_Vig_Prop']))
257
 
258
  disp_market['FANDUEL Prop'] = disp_market['Name'].map(fanduel_dict)
259
  disp_market['DRAFTKINGS Prop'] = disp_market['Name'].map(draftkings_dict)