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
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 |
-
|
| 1366 |
-
|
| 1367 |
-
|
| 1368 |
-
|
| 1369 |
-
|
| 1370 |
-
|
| 1371 |
-
|
| 1372 |
-
|
| 1373 |
-
|
| 1374 |
-
|
| 1375 |
-
|
| 1376 |
-
|
| 1377 |
-
|
| 1378 |
-
|
| 1379 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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}',
|