---
name: File storage locations
description: All soccer/betting files must be saved to E:\soccer, not OneDrive or separate directories
type: feedback
---

Keep all scripts, data files, and outputs in `E:\soccer`. Do not write to OneDrive paths like `C:\Users\lirse\OneDrive\Desktop\soccer\`.

**Why:** User consolidated everything from `E:\football_analytics` into `E:\soccer` on 2026-04-12. Single directory for all soccer/betting work.

**How to apply:** When writing new files or editing scripts that reference output paths, always use `E:\soccer\` as the base directory. League data CSVs are in `E:\soccer\league_data\`.

**2026-06-06 folder reorg — where things live now:**
- `E:\soccer\main\` — ALL live strategy code (live_monitor.py, daily_signals.py, daily_watchlist.py, refresh_api_football.py, refresh_league_data.py, resolve_bets.py, resolve_live_data.py, weekly_bet_summary.py, kalshi_live.py, maps.py, kalshi_trader.py, kalshi_kill.py, kalshi_reconcile.py, check_positions.py, kalshi_auth_test.py). Scripts run with cwd=`E:\soccer`. The 4 `run_*.bat` launchers (at root) now call `main\<script>.py`; the 3 directly-scheduled tasks (SoccerResolveLiveData, SoccerResolveBets/resolve_bets, SoccerWeeklySummary) were retargeted to `E:\soccer\main\...` via schtasks /change.
- `E:\soccer\research\` — notebooks (strategy.ipynb, research.ipynb, clv_research.ipynb), `research/analysis/` scratch (_*.py probes), strategy_bets.csv, strategy_*.png, roi_gate_*.csv, bets_rf_clv.csv. Notebook data paths were made ABSOLUTE (E:/soccer/live_data/, E:/soccer/test.csv; strategy.ipynb writes outputs to E:/soccer/research/) so they run regardless of cwd.
- `E:\soccer\memory\` — project docs (e.g. strategy_C_research.md). (Distinct from the Claude auto-memory at C:\Users\lirse\.claude\...)
- `E:\soccer\misc\` — retired code (misc/archive/), stale logs, old dumps (fixtures_live.csv, _cashout_analysis.json), standalone utilities (dedupe_live_data.py, export_bets.py, pull_api_football.py).
- `E:\soccer\data\` — NEW (2026-06-06): ALL live state + config the pipeline reads/writes. JSON: bankroll, kalshi_bankroll, kalshi_real_bankroll, pending_bets, bet_history, sent_signals, auto_trade_log, league_map, team_map, _result_cache. CSV: signal_log, clv_kalshi_log, _tmp_MLS (live MLS temp download), predictions_today (generated). Plus AUTO_TRADE_KILL (kill-switch flag) and watchlist.txt (user-edited). **All referenced via absolute `E:\soccer\data\<file>` constants** in main/ scripts (and 2 research probes _equity_excl.py/_equity_kelly.py read data\bet_history.json).
- `E:\soccer\logs\` — ALL logs now: live_monitor.log (active), daily_signals.log, refresh_api_football.log, refresh_league_data.log, auto_trade_errors.log, watchlist_log.txt. The 4 run_*.bat redirect here; daily_signals.py AUTO_TRADE_ERR_LOG → logs\.
- **ROOT now holds ONLY `.env`** (hidden config; daily_signals.py:38 & live_monitor.py:45 hardcode `E:\soccer\.env`, kalshi_trader.py:24 fixed to same) plus the data/code dirs above. The "no loose files" rule (2026-06-06): everything except .env lives in a folder. Do NOT recreate loose root files.
- **2026-06-06 migration-bug fixes** (introduced when code moved to main/, fixed during data/ reorg): kalshi_reconcile.py `REPO=Path(__file__).parent` → `Path(r'E:\soccer\data')`; kalshi_trader.py `.env` loader `Path(__file__).parent` → `r'E:\soccer\.env'`; task `\SoccerDailyWatchlist8AM` was still pointing at old root `daily_watchlist.py` → repointed to `main\`.
- **Task Scheduler (8 jobs)** all repointed to main/: `\BettingSignals`→main\run_daily_signals.bat, `\SoccerDailyWatchlist`→main\run_daily_watchlist.bat, `\SoccerDailyWatchlist8AM`→python main\daily_watchlist.py, `\SoccerRefreshAPIFootball`→main\run_refresh_api_football.bat, `\SoccerRefreshData`→main\run_refresh_league_data.bat, `\SoccerResolveLiveData`/`\SoccerResolveNightly`(resolve_bets)/`\SoccerWeeklySummary`→main\*.py. (schtasks /change warns about empty run-as password — benign, pre-existing.)
