James McCool
commited on
Commit
·
58be65b
1
Parent(s):
62a44af
Enhance portfolio reset functionality in app.py: implement comprehensive filtering options for salary, finish percentile, and player selections, and update predict_dupes function to calculate 'Weighted Own' for improved accuracy in portfolio management.
Browse files- app.py +33 -2
- global_func/predict_dupes.py +1 -1
app.py
CHANGED
@@ -803,10 +803,41 @@ with tab3:
|
|
803 |
submitted = st.form_submit_button("Submit")
|
804 |
with st.expander('Trimming Options'):
|
805 |
if st.button('Reset Portfolio', key='reset_port'):
|
806 |
-
st.session_state['portfolio'] = st.session_state['origin_portfolio']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
807 |
with st.form(key='trim_form'):
|
808 |
performance_type = st.selectbox("Select sort type", ['median', 'Finish_percentile'])
|
809 |
-
own_type = st.selectbox("Select trimming variable type", ['Own', '
|
810 |
|
811 |
submitted = st.form_submit_button("Trim")
|
812 |
if submitted:
|
|
|
803 |
submitted = st.form_submit_button("Submit")
|
804 |
with st.expander('Trimming Options'):
|
805 |
if st.button('Reset Portfolio', key='reset_port'):
|
806 |
+
st.session_state['portfolio'] = predict_dupes(st.session_state['origin_portfolio'], map_dict, site_var, type_var, Contest_Size, strength_var)
|
807 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['Dupes'] <= max_dupes]
|
808 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['salary'] >= min_salary]
|
809 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['salary'] <= max_salary]
|
810 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['Finish_percentile'] <= max_finish_percentile]
|
811 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['Lineup Edge'] >= min_lineup_edge]
|
812 |
+
if stack_dict is not None:
|
813 |
+
if stack_toggle == 'All Stacks':
|
814 |
+
st.session_state['portfolio'] = st.session_state['portfolio']
|
815 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][~st.session_state['portfolio']['Stack'].isin(stack_remove)]
|
816 |
+
else:
|
817 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][st.session_state['portfolio']['Stack'].isin(stack_selections)]
|
818 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][~st.session_state['portfolio']['Stack'].isin(stack_remove)]
|
819 |
+
if player_remove:
|
820 |
+
# Create mask for lineups that contain any of the removed players
|
821 |
+
player_columns = [col for col in st.session_state['portfolio'].columns if col not in excluded_cols]
|
822 |
+
remove_mask = st.session_state['portfolio'][player_columns].apply(
|
823 |
+
lambda row: not any(player in list(row) for player in player_remove), axis=1
|
824 |
+
)
|
825 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][remove_mask]
|
826 |
+
|
827 |
+
if player_lock:
|
828 |
+
# Create mask for lineups that contain all locked players
|
829 |
+
player_columns = [col for col in st.session_state['portfolio'].columns if col not in excluded_cols]
|
830 |
+
|
831 |
+
lock_mask = st.session_state['portfolio'][player_columns].apply(
|
832 |
+
lambda row: all(player in list(row) for player in player_lock), axis=1
|
833 |
+
)
|
834 |
+
st.session_state['portfolio'] = st.session_state['portfolio'][lock_mask]
|
835 |
+
|
836 |
+
export_file = st.session_state['portfolio'].copy()
|
837 |
+
st.session_state['portfolio'] = st.session_state['portfolio'].sort_values(by='median', ascending=False)
|
838 |
with st.form(key='trim_form'):
|
839 |
performance_type = st.selectbox("Select sort type", ['median', 'Finish_percentile'])
|
840 |
+
own_type = st.selectbox("Select trimming variable type", ['Own', 'Weighted Own'])
|
841 |
|
842 |
submitted = st.form_submit_button("Trim")
|
843 |
if submitted:
|
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['
|
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['Weighted Own'] = portfolio['Own'] * (portfolio[own_columns].max(axis=1) / 100)
|
185 |
portfolio = portfolio.drop(columns=dup_count_columns)
|
186 |
portfolio = portfolio.drop(columns=own_columns)
|
187 |
portfolio = portfolio.drop(columns=calc_columns)
|