James McCool commited on
Commit
6b711fb
·
1 Parent(s): 680a8ac

Enhance stack summary management in app.py by introducing session state checks for 'origin_stack_exposures'. This update ensures accurate stack statistics are displayed based on user settings and improves data handling for stack summaries during portfolio interactions.

Browse files
Files changed (1) hide show
  1. app.py +24 -16
app.py CHANGED
@@ -1362,24 +1362,32 @@ with tab2:
1362
  if 'Stack' in display_frame.columns:
1363
  stack_stats = []
1364
  stack_columns = [col for col in display_frame.columns if col.startswith('Stack')]
1365
- for stack in stack_dict.values():
1366
- stack_mask = display_frame['Stack'] == stack
1367
- if stack_mask.any():
1368
- stack_stats.append({
1369
- 'Stack': stack,
1370
- 'Lineup Count': stack_mask.sum(),
1371
- 'Exposure': stack_mask.sum() / len(display_frame),
1372
- 'Avg Median': display_frame[stack_mask]['median'].mean(),
1373
- 'Avg Own': display_frame[stack_mask]['Own'].mean(),
1374
- 'Avg Dupes': display_frame[stack_mask]['Dupes'].mean(),
1375
- 'Avg Finish %': display_frame[stack_mask]['Finish_percentile'].mean(),
1376
- 'Avg Lineup Edge': display_frame[stack_mask]['Lineup Edge'].mean(),
1377
- })
1378
- stack_summary = pd.DataFrame(stack_stats)
1379
- stack_summary = stack_summary.sort_values('Lineup Count', ascending=False).drop_duplicates()
 
 
 
 
 
 
 
 
1380
  st.subheader("Stack Summary")
1381
  st.dataframe(
1382
- stack_summary.style
1383
  .background_gradient(axis=0).background_gradient(cmap='RdYlGn').background_gradient(cmap='RdYlGn_r', subset=['Avg Finish %', 'Avg Own', 'Avg Dupes'])
1384
  .format({
1385
  'Avg Median': '{:.2f}',
 
1362
  if 'Stack' in display_frame.columns:
1363
  stack_stats = []
1364
  stack_columns = [col for col in display_frame.columns if col.startswith('Stack')]
1365
+
1366
+ if st.session_state['settings_base'] and 'origin_stack_exposures' in st.session_state and display_frame_source == 'Portfolio':
1367
+ st.session_state['stack_summary'] = st.session_state['origin_stack_exposures']
1368
+ else:
1369
+ for stack in stack_dict.values():
1370
+ stack_mask = display_frame['Stack'] == stack
1371
+ if stack_mask.any():
1372
+ stack_stats.append({
1373
+ 'Stack': stack,
1374
+ 'Lineup Count': stack_mask.sum(),
1375
+ 'Exposure': stack_mask.sum() / len(display_frame),
1376
+ 'Avg Median': display_frame[stack_mask]['median'].mean(),
1377
+ 'Avg Own': display_frame[stack_mask]['Own'].mean(),
1378
+ 'Avg Dupes': display_frame[stack_mask]['Dupes'].mean(),
1379
+ 'Avg Finish %': display_frame[stack_mask]['Finish_percentile'].mean(),
1380
+ 'Avg Lineup Edge': display_frame[stack_mask]['Lineup Edge'].mean(),
1381
+ })
1382
+ stack_summary = pd.DataFrame(stack_stats)
1383
+ stack_summary = stack_summary.sort_values('Lineup Count', ascending=False).drop_duplicates()
1384
+ st.session_state['stack_summary'] = stack_summary.copy()
1385
+ if 'origin_stack_exposures' not in st.session_state:
1386
+ st.session_state['origin_stack_exposures'] = stack_summary.copy()
1387
+
1388
  st.subheader("Stack Summary")
1389
  st.dataframe(
1390
+ st.session_state['stack_summary'].style
1391
  .background_gradient(axis=0).background_gradient(cmap='RdYlGn').background_gradient(cmap='RdYlGn_r', subset=['Avg Finish %', 'Avg Own', 'Avg Dupes'])
1392
  .format({
1393
  'Avg Median': '{:.2f}',