James McCool commited on
Commit
fe3dc6e
·
1 Parent(s): b3b1967

Refactor 'Lineup Edge' calculation in predict_dupes.py to scale by Contest_Size for improved accuracy in contest performance metrics and apply clipping to ensure values remain within a specified range.

Browse files
Files changed (1) hide show
  1. global_func/predict_dupes.py +2 -1
global_func/predict_dupes.py CHANGED
@@ -435,11 +435,12 @@ def predict_dupes(portfolio, maps_dict, site_var, type_var, Contest_Size, streng
435
 
436
  portfolio['low_own_count'] = portfolio[own_columns].apply(lambda row: (row < 0.10).sum(), axis=1)
437
  portfolio['Finish_percentile'] = portfolio.apply(lambda row: row['Finish_percentile'] if row['low_own_count'] <= 0 else row['Finish_percentile'] / row['low_own_count'], axis=1)
438
- portfolio['Lineup Edge'] = (portfolio['Win%'] * ((.5 - portfolio['Finish_percentile']) * 10000))
439
  # portfolio['Lineup Edge'] = portfolio.apply(lambda row: row['Lineup Edge'] / (row['Dupes'] + 1) if row['Dupes'] > 0 else row['Lineup Edge'], axis=1)
440
  portfolio['Lineup Edge'] = ((portfolio['Lineup Edge'] - portfolio['Lineup Edge'].mean())) - ((portfolio['Dupes'] - portfolio['Dupes'].mean()) / 50)
441
  max_edge = portfolio['Lineup Edge'].max()
442
  portfolio['Lineup Edge'] = 2 * max_edge * (portfolio['Lineup Edge'] - portfolio['Lineup Edge'].min()) / (portfolio['Lineup Edge'].max() - portfolio['Lineup Edge'].min()) - max_edge
 
443
  portfolio['Weighted Own'] = portfolio[own_columns].apply(calculate_weighted_ownership_wrapper, axis=1)
444
  portfolio['Geomean'] = np.power((portfolio[own_columns] * 100).product(axis=1), 1 / len(own_columns))
445
 
 
435
 
436
  portfolio['low_own_count'] = portfolio[own_columns].apply(lambda row: (row < 0.10).sum(), axis=1)
437
  portfolio['Finish_percentile'] = portfolio.apply(lambda row: row['Finish_percentile'] if row['low_own_count'] <= 0 else row['Finish_percentile'] / row['low_own_count'], axis=1)
438
+ portfolio['Lineup Edge'] = (portfolio['Win%'] * ((.5 - portfolio['Finish_percentile']) * (Contest_Size / 2.5)))
439
  # portfolio['Lineup Edge'] = portfolio.apply(lambda row: row['Lineup Edge'] / (row['Dupes'] + 1) if row['Dupes'] > 0 else row['Lineup Edge'], axis=1)
440
  portfolio['Lineup Edge'] = ((portfolio['Lineup Edge'] - portfolio['Lineup Edge'].mean())) - ((portfolio['Dupes'] - portfolio['Dupes'].mean()) / 50)
441
  max_edge = portfolio['Lineup Edge'].max()
442
  portfolio['Lineup Edge'] = 2 * max_edge * (portfolio['Lineup Edge'] - portfolio['Lineup Edge'].min()) / (portfolio['Lineup Edge'].max() - portfolio['Lineup Edge'].min()) - max_edge
443
+ portfolio['Lineup Edge'] = (portfolio['Lineup Edge'] / 2).clip(lower=-1, upper=1)
444
  portfolio['Weighted Own'] = portfolio[own_columns].apply(calculate_weighted_ownership_wrapper, axis=1)
445
  portfolio['Geomean'] = np.power((portfolio[own_columns] * 100).product(axis=1), 1 / len(own_columns))
446