Trading ROI (MWR + TWR) of a bound wallet over a window
/v1/me/wallets/{id}/roiReturn on the wallet's whole-account NAV (perp + spot + vault + staking) between `from` and `to`. Two measures are returned because they answer different questions: `mwrPct` (money-weighted, modified Dietz) is the actual return on the user's capital — affected by deposit/withdraw timing; `twrPct` (time-weighted, chain-linked at each cash flow) is the strategy/trading return, comparable across users regardless of flows; `simpleRoiPct` (un-weighted = PnL ÷ capital deployed) ignores flow timing — the most robust + intuitive "ROI on deposited capital", and the recommended default to display (it stays stable on freshly-funded wallets where mwr/twr destabilise; with no flows all three are equal). All are fractions (`0.1` = +10%). NAV anchors come from Hyperliquid's own `portfolio` history (older points are coarser → `accuracy:interpolated`); when the window ends ~now the live account value is used as an exact end anchor (`accuracy:exact-end`). The breakdown (`grossRealizedPnlUsd` / `tradingFeeUsd` / `builderFeeUsd` / `fundingUsd`) is for reconciliation only — it is already embedded in NAV-based returns, not additive. **Hyperliquid** supports retrospective history; **Polymarket** is going-forward only — its MWR/TWR are computed from our own NAV snapshots + persisted deposit/withdraw flows that accrue from when the wallet is first observed, so windows predating that return null metrics with a `note` (and PM has no realized/fee breakdown). Cached ~60s with request coalescing.