James McCool
commited on
Commit
·
3ff610a
1
Parent(s):
b7746b2
Refactor exposure_spread function and 'Manage Portfolio' logic to replace stack management with an option to ignore specific stacks, enhancing user control in exposure calculations.
Browse files- app.py +3 -5
- global_func/exposure_spread.py +4 -8
app.py
CHANGED
@@ -1513,9 +1513,7 @@ if selected_tab == 'Manage Portfolio':
|
|
1513 |
exposure_player = st.selectbox("Player", options=sorted(list(set(st.session_state['projections_df']['player_names'].unique()))), key='exposure_player')
|
1514 |
exposure_target = st.number_input("Target Exposure", value=.50, min_value=0.0, max_value=1.0, step=0.01)
|
1515 |
if 'Stack' in st.session_state['working_frame'].columns:
|
1516 |
-
|
1517 |
-
else:
|
1518 |
-
exposure_stack_bool = 'No'
|
1519 |
remove_teams_exposure = st.multiselect("Removed/Locked teams?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
|
1520 |
specific_replacements = st.multiselect("Specific Replacements?", options=sorted(list(set(st.session_state['projections_df']['player_names'].unique()))), default=[])
|
1521 |
submitted_col, export_col = st.columns(2)
|
@@ -1527,7 +1525,7 @@ if selected_tab == 'Manage Portfolio':
|
|
1527 |
if reg_submitted:
|
1528 |
st.session_state['settings_base'] = False
|
1529 |
prior_frame = st.session_state['working_frame'].copy()
|
1530 |
-
parsed_frame = exposure_spread(st.session_state['working_frame'], st.session_state['exposure_player'], exposure_target,
|
1531 |
|
1532 |
if type_var == 'Classic':
|
1533 |
if sport_var == 'CS2' or sport_var == 'LOL':
|
@@ -1620,7 +1618,7 @@ if selected_tab == 'Manage Portfolio':
|
|
1620 |
elif exp_submitted:
|
1621 |
st.session_state['settings_base'] = False
|
1622 |
prior_frame = st.session_state['export_base'].copy()
|
1623 |
-
parsed_frame = exposure_spread(st.session_state['export_base'], st.session_state['exposure_player'], exposure_target,
|
1624 |
|
1625 |
if type_var == 'Classic':
|
1626 |
if sport_var == 'CS2' or sport_var == 'LOL':
|
|
|
1513 |
exposure_player = st.selectbox("Player", options=sorted(list(set(st.session_state['projections_df']['player_names'].unique()))), key='exposure_player')
|
1514 |
exposure_target = st.number_input("Target Exposure", value=.50, min_value=0.0, max_value=1.0, step=0.01)
|
1515 |
if 'Stack' in st.session_state['working_frame'].columns:
|
1516 |
+
ignore_stacks = st.selectbox("Ignore Specific Stacks?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
|
|
|
|
|
1517 |
remove_teams_exposure = st.multiselect("Removed/Locked teams?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
|
1518 |
specific_replacements = st.multiselect("Specific Replacements?", options=sorted(list(set(st.session_state['projections_df']['player_names'].unique()))), default=[])
|
1519 |
submitted_col, export_col = st.columns(2)
|
|
|
1525 |
if reg_submitted:
|
1526 |
st.session_state['settings_base'] = False
|
1527 |
prior_frame = st.session_state['working_frame'].copy()
|
1528 |
+
parsed_frame = exposure_spread(st.session_state['working_frame'], st.session_state['exposure_player'], exposure_target, ignore_stacks, remove_teams_exposure, specific_replacements, st.session_state['projections_df'], sport_var, type_var, salary_max, stacking_sports)
|
1529 |
|
1530 |
if type_var == 'Classic':
|
1531 |
if sport_var == 'CS2' or sport_var == 'LOL':
|
|
|
1618 |
elif exp_submitted:
|
1619 |
st.session_state['settings_base'] = False
|
1620 |
prior_frame = st.session_state['export_base'].copy()
|
1621 |
+
parsed_frame = exposure_spread(st.session_state['export_base'], st.session_state['exposure_player'], exposure_target, ignore_stacks, remove_teams_exposure, specific_replacements, st.session_state['projections_df'], sport_var, type_var, salary_max, stacking_sports)
|
1622 |
|
1623 |
if type_var == 'Classic':
|
1624 |
if sport_var == 'CS2' or sport_var == 'LOL':
|
global_func/exposure_spread.py
CHANGED
@@ -148,14 +148,10 @@ def check_position_eligibility(sport, column_name, player_positions):
|
|
148 |
# Default fallback - assume exact position match
|
149 |
return column_name in player_positions
|
150 |
|
151 |
-
def exposure_spread(working_frame, exposure_player, exposure_target,
|
152 |
comparable_players = projections_df[projections_df['player_names'] == exposure_player]
|
153 |
|
154 |
comparable_players = comparable_players.reset_index(drop=True)
|
155 |
-
if exposure_stack_bool == 'Yes':
|
156 |
-
comparable_stack = comparable_players['team'][0]
|
157 |
-
else:
|
158 |
-
comparable_stack = 0
|
159 |
comp_salary_high = comparable_players['salary'][0]
|
160 |
comp_salary_low = comparable_players['salary'][0] - 500
|
161 |
comp_projection_high = comparable_players['median'][0]
|
@@ -196,9 +192,9 @@ def exposure_spread(working_frame, exposure_player, exposure_target, exposure_st
|
|
196 |
# isolate the rows that contain the player
|
197 |
player_rows = working_frame[player_mask]
|
198 |
replace_rows = working_frame[replace_mask]
|
199 |
-
if
|
200 |
-
player_rows = player_rows[player_rows['Stack']
|
201 |
-
replace_rows = replace_rows[replace_rows['Stack']
|
202 |
|
203 |
change_counter = 0
|
204 |
|
|
|
148 |
# Default fallback - assume exact position match
|
149 |
return column_name in player_positions
|
150 |
|
151 |
+
def exposure_spread(working_frame, exposure_player, exposure_target, ignore_stacks, remove_teams, specific_replacements, projections_df, sport_var, type_var, salary_max, stacking_sports):
|
152 |
comparable_players = projections_df[projections_df['player_names'] == exposure_player]
|
153 |
|
154 |
comparable_players = comparable_players.reset_index(drop=True)
|
|
|
|
|
|
|
|
|
155 |
comp_salary_high = comparable_players['salary'][0]
|
156 |
comp_salary_low = comparable_players['salary'][0] - 500
|
157 |
comp_projection_high = comparable_players['median'][0]
|
|
|
192 |
# isolate the rows that contain the player
|
193 |
player_rows = working_frame[player_mask]
|
194 |
replace_rows = working_frame[replace_mask]
|
195 |
+
if ignore_stacks != []:
|
196 |
+
player_rows = player_rows[~player_rows['Stack'].isin(ignore_stacks)]
|
197 |
+
replace_rows = replace_rows[~replace_rows['Stack'].isin(ignore_stacks)]
|
198 |
|
199 |
change_counter = 0
|
200 |
|