James McCool commited on
Commit
11b09bf
·
1 Parent(s): 66905e3

Enhance portfolio trimming logic in app.py: add comprehensive filtering options based on salary, finish percentile, and player selections, and update predict_dupes function to adjust 'Product Own' calculation for improved accuracy.

Browse files
Files changed (2) hide show
  1. app.py +32 -0
  2. global_func/predict_dupes.py +1 -1
app.py CHANGED
@@ -807,7 +807,39 @@ with tab3:
807
 
808
  submitted = st.form_submit_button("Trim")
809
  if submitted:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
810
  st.session_state['portfolio'] = trim_portfolio(st.session_state['portfolio'], performance_type, own_type)
 
 
811
 
812
  with col2:
813
  st.session_state['portfolio'] = predict_dupes(st.session_state['portfolio'], map_dict, site_var, type_var, Contest_Size, strength_var)
 
807
 
808
  submitted = st.form_submit_button("Trim")
809
  if submitted:
810
+ st.session_state['portfolio'] = predict_dupes(st.session_state['portfolio'], map_dict, site_var, type_var, Contest_Size, strength_var)
811
+ st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['Dupes'] <= max_dupes]
812
+ st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['salary'] >= min_salary]
813
+ st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['salary'] <= max_salary]
814
+ st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['Finish_percentile'] <= max_finish_percentile]
815
+ st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['Lineup Edge'] >= min_lineup_edge]
816
+ if stack_dict is not None:
817
+ if stack_toggle == 'All Stacks':
818
+ st.session_state['portfolio'] = st.session_state['portfolio']
819
+ st.session_state['portfolio'] = st.session_state['portfolio'][~st.session_state['portfolio']['Stack'].isin(stack_remove)]
820
+ else:
821
+ st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['Stack'].isin(stack_selections)]
822
+ st.session_state['portfolio'] = st.session_state['portfolio'][~st.session_state['portfolio']['Stack'].isin(stack_remove)]
823
+ if player_remove:
824
+ # Create mask for lineups that contain any of the removed players
825
+ player_columns = [col for col in st.session_state['portfolio'].columns if col not in excluded_cols]
826
+ remove_mask = st.session_state['portfolio'][player_columns].apply(
827
+ lambda row: not any(player in list(row) for player in player_remove), axis=1
828
+ )
829
+ st.session_state['portfolio'] = st.session_state['portfolio'][remove_mask]
830
+
831
+ if player_lock:
832
+ # Create mask for lineups that contain all locked players
833
+ player_columns = [col for col in st.session_state['portfolio'].columns if col not in excluded_cols]
834
+
835
+ lock_mask = st.session_state['portfolio'][player_columns].apply(
836
+ lambda row: all(player in list(row) for player in player_lock), axis=1
837
+ )
838
+ st.session_state['portfolio'] = st.session_state['portfolio'][lock_mask]
839
+
840
  st.session_state['portfolio'] = trim_portfolio(st.session_state['portfolio'], performance_type, own_type)
841
+ export_file = st.session_state['portfolio'].copy()
842
+ st.session_state['portfolio'] = st.session_state['portfolio'].sort_values(by='median', ascending=False)
843
 
844
  with col2:
845
  st.session_state['portfolio'] = predict_dupes(st.session_state['portfolio'], map_dict, site_var, type_var, Contest_Size, strength_var)
global_func/predict_dupes.py CHANGED
@@ -181,7 +181,7 @@ def predict_dupes(portfolio, maps_dict, site_var, type_var, Contest_Size, streng
181
  portfolio['Lineup Edge'] = portfolio['Win%'] * ((.5 - portfolio['Finish_percentile']) * (Contest_Size / 2.5))
182
  portfolio['Lineup Edge'] = portfolio.apply(lambda row: row['Lineup Edge'] / (row['Dupes'] + 1) if row['Dupes'] > 0 else row['Lineup Edge'], axis=1)
183
  portfolio['Lineup Edge'] = portfolio['Lineup Edge'] - portfolio['Lineup Edge'].mean()
184
- portfolio['Product Own'] = portfolio[own_columns].product(axis=1).mean() * 100
185
  portfolio = portfolio.drop(columns=dup_count_columns)
186
  portfolio = portfolio.drop(columns=own_columns)
187
  portfolio = portfolio.drop(columns=calc_columns)
 
181
  portfolio['Lineup Edge'] = portfolio['Win%'] * ((.5 - portfolio['Finish_percentile']) * (Contest_Size / 2.5))
182
  portfolio['Lineup Edge'] = portfolio.apply(lambda row: row['Lineup Edge'] / (row['Dupes'] + 1) if row['Dupes'] > 0 else row['Lineup Edge'], axis=1)
183
  portfolio['Lineup Edge'] = portfolio['Lineup Edge'] - portfolio['Lineup Edge'].mean()
184
+ portfolio['Product Own'] = portfolio[own_columns].product(axis=1).mean() * 1000
185
  portfolio = portfolio.drop(columns=dup_count_columns)
186
  portfolio = portfolio.drop(columns=own_columns)
187
  portfolio = portfolio.drop(columns=calc_columns)