Adds the analytics surface of the dashboard:
* gui/data_layer.py — extended with load_closed_positions (windowed
filter on closed_at) and three pure-function aggregators:
compute_equity_curve, compute_kpis, compute_monthly_stats. Drawdown
is measured against the running peak of cumulative realised P&L.
* gui/pages/3_📈_Equity.py — KPI strip, plotly cumulative-PnL line,
drawdown area below, P&L histogram by close_reason, per-month table
with win-rate.
* gui/pages/4_📜_History.py — windowed table of closed trades with
multiselect close-reason and winners/losers radio filters, six-tile
KPI strip, CSV export button.
* pyproject.toml — relax mypy on plotly + pandas (no shipped stubs).
Validated with synthetic data: 3 trades, 67% win rate, $50 total,
max drawdown $30 — all matching expected math. GUI launches, HTTP 200
on / and /_stcore/health.
353/353 tests still pass; ruff clean; mypy strict src clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>