File size: 1,147 Bytes
f6ecdc3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aee057f
f6ecdc3
 
 
 
 
aee057f
 
f6ecdc3
aee057f
f6ecdc3
aee057f
f6ecdc3
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from __future__ import annotations

from typing import Any

import streamlit as st


def render_model_explainer(rows: list[dict[str, Any]]) -> None:
    if not rows:
        return

    with st.expander("Algorithm Breakdown: Recommendation Explainer"):
        for row in rows:
            batter_name = row.get("batter_name", "Unknown")
            slot = row.get("slot", "")
            reasons = row.get("reason_tags", []) or []

            st.markdown(f"**{slot}: {batter_name}**")

            st.write(
                {
                    "fair_hr_odds": row.get("fair_hr_odds"),
                    "book_hr_odds": row.get("book_hr_odds"),
                    "hr_edge": row.get("hr_edge"),
                    "adjusted_edge": row.get("adjusted_edge"),
                    "hr_bet_ev": row.get("hr_bet_ev"),
                    "confidence": row.get("confidence"),
                    "confidence_bucket": row.get("confidence_bucket"),
                    "tier": row.get("recommendation_tier"),
                    "priority_score": row.get("priority_score"),
                    "reason_tags": reasons,
                }
            )