James McCool commited on
Commit
f61c9fc
·
1 Parent(s): 85afab8

Enhance reassess_lineup_edge function in reassess_edge.py to incorporate previous finish_percentile and dupes for improved lineup edge calculations. Update the return logic to better reflect the relationship between finish_percentile and lineup edge, ensuring more accurate assessments.

Browse files
Files changed (1) hide show
  1. global_func/reassess_edge.py +8 -5
global_func/reassess_edge.py CHANGED
@@ -85,11 +85,12 @@ def reassess_dupes(row: pd.Series, salary_max: int) -> float:
85
 
86
  return math.ceil(final_dupes)
87
 
88
- def reassess_lineup_edge(row: pd.Series, Contest_Size: int) -> float:
89
- new_win = row['Win%'] * ((.5 - row['Finish_percentile']) * (Contest_Size / 2.5))
90
- lineup_edge = new_win / (row['Dupes'] + 1) if row['Dupes'] > 0 else new_win
 
91
 
92
- return lineup_edge
93
 
94
  def reassess_edge(refactored_frame: pd.DataFrame, original_frame: pd.DataFrame, maps_dict: dict, Contest_Size: int, salary_max: int) -> pd.DataFrame:
95
  orig_df = original_frame.copy()
@@ -111,10 +112,12 @@ def reassess_edge(refactored_frame: pd.DataFrame, original_frame: pd.DataFrame,
111
  refactored_df[f'player_{col}_own'] = refactored_df.iloc[:,col].map(maps_dict['own_map']).astype('float32') / 100
112
 
113
  for lineups in change_mask.index:
 
 
114
  refactored_df.loc[lineups, 'Dupes'] = reassess_dupes(refactored_df.loc[lineups, :], salary_max)
115
  refactored_df.loc[lineups, 'Finish_percentile'] = reassess_finish_percentile(refactored_df.loc[lineups, :])
116
  refactored_df.loc[lineups, 'Win%'] = refactored_df.loc[lineups, 'Win%']
117
- refactored_df.loc[lineups, 'Lineup Edge'] = reassess_lineup_edge(refactored_df.loc[lineups, :], Contest_Size)
118
  refactored_df.loc[lineups, 'Weighted Own'] = calculate_weighted_ownership_single_row(refactored_df.loc[lineups, own_columns])
119
  refactored_df.loc[lineups, 'Geomean'] = np.power((refactored_df.loc[lineups, own_columns] * 100).product(), 1 / len(own_columns))
120
 
 
85
 
86
  return math.ceil(final_dupes)
87
 
88
+ def reassess_lineup_edge(row: pd.Series, Contest_Size: int, prev_finish_percentile: float, prev_dupes: int) -> float:
89
+ fp_rate = row['Finish_percentile'] / prev_finish_percentile
90
+ dupe_rate = row['Dupes'] / prev_dupes
91
+ lineup_edge = (fp_rate * dupe_rate)
92
 
93
+ return (row['Finish_percentile'] + (row['Finish_percentile'] * lineup_edge)) / 2
94
 
95
  def reassess_edge(refactored_frame: pd.DataFrame, original_frame: pd.DataFrame, maps_dict: dict, Contest_Size: int, salary_max: int) -> pd.DataFrame:
96
  orig_df = original_frame.copy()
 
112
  refactored_df[f'player_{col}_own'] = refactored_df.iloc[:,col].map(maps_dict['own_map']).astype('float32') / 100
113
 
114
  for lineups in change_mask.index:
115
+ prev_finish_percentile = refactored_df.loc[lineups, 'Finish_percentile']
116
+ prev_dupes = refactored_df.loc[lineups, 'Dupes']
117
  refactored_df.loc[lineups, 'Dupes'] = reassess_dupes(refactored_df.loc[lineups, :], salary_max)
118
  refactored_df.loc[lineups, 'Finish_percentile'] = reassess_finish_percentile(refactored_df.loc[lineups, :])
119
  refactored_df.loc[lineups, 'Win%'] = refactored_df.loc[lineups, 'Win%']
120
+ refactored_df.loc[lineups, 'Lineup Edge'] = reassess_lineup_edge(refactored_df.loc[lineups, :], Contest_Size, prev_finish_percentile, prev_dupes)
121
  refactored_df.loc[lineups, 'Weighted Own'] = calculate_weighted_ownership_single_row(refactored_df.loc[lineups, own_columns])
122
  refactored_df.loc[lineups, 'Geomean'] = np.power((refactored_df.loc[lineups, own_columns] * 100).product(), 1 / len(own_columns))
123