- MaxDD ranks shallower drawdowns first (values are negative); ruined
results are badged and never ranked as best.
- Metrics render '—' for null/non-finite values instead of crashing.
- Amounts use the market's currency (CNY for CN) instead of hard-coded USD.
- Injection scenarios show invested / final value / profit / return on
invested from capitalFlows and label return metrics as time-weighted.
- Precomputed results show their data end date and warn when older than 7
days; live strategies warn when not updated for 4 days, show start date,
price as-of, stale holdings, and same-window benchmark with excess return.
- Unknown precomputed scenario returns 400 instead of silently serving the
first scenario; the client uses the scenarioId it receives.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Keying LiveStrategyDetail by strategy name resets its child state (trade-log
pagination), so switching strategies no longer keeps the previous page index.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Rebuilds the client into Live (watchlist with charts, fundamentals, news,
quant analysis) and Strategy (backtest runner / precomputed results) pages,
adds the corresponding /api/stocks/:symbol/chart|fundamentals|related|quant
and /api/strategies endpoints, and updates project tooling.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Introduces strategyTypes shared schema and a server-side strategyService
that lists strategies, runs backtests, and caches results.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adds a stock data cache layer and indicator helpers (MA/RSI/MACD), expands
the MarketDataProvider interface with candles, fundamentals, related-data,
and quant analysis, and threads tags + source attribution through the
shared types. Updates affected agent tests.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>