A Streamlit app that helps you shop the best line across books and track CLV (Closing Line Value) over time.
- App: https://mrponyrivers-line-shopping-clv-tracker.streamlit.app/
- Repo: https://github.com/mrponyrivers/line-shopping-clv-tracker
Watch on YouTube: https://youtu.be/ghMJ3IXv45Y
- Line Shop: log offers across books → automatically surface the best price
- CLV Tracker: log bets → update closing odds/line → compute CLV (beat-the-close)
- Export-friendly: download clean CSVs for analysis or integration
- Open the Live demo
- Click Load demo (sidebar) to populate sample offers + bets
- Go to Line Shop → select a best-price row → create a bet from the selection
- Go to CLV Tracker → add closing odds/line → review CLV metrics
- Go to Import / Export → download templates + exports
git clone https://github.com/mrponyrivers/line-shopping-clv-tracker.git
cd line-shopping-clv-tracker
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows PowerShell
pip install -r requirements.txt
streamlit run app.pyRecommended columns:
sport,league,gamemarket_type(ML/Spread/Total)side(team / Over / Under)line(optional numeric)odds_decimalbooknotes(optional)
Recommended columns:
sport,league,gamemarket_type(ML/Spread/Total)direction(Over/Under for totals, optional)sideentry_line,entry_odds_decimal,entry_bookclose_line,close_odds_decimalstake,fair_prob,result,notes(optional)
This project demonstrates an end-to-end sports odds + decisioning workflow:
line ingestion → normalization (decimal odds) → best-price selection → CLV measurement → exportable artifacts.
Built with a clean Streamlit UI and zero-friction templates for fast demos.
This app is educational and workflow-focused. Betting involves risk and variance.
CLV is a process metric (beating the close), not a guarantee of short-term profit.
