Files
quant-trading/web
Gahow Wang 5dbabc3e08 feat: named live books; start selected_2026_09 (26 strategies)
A live book is a cohort of strategies, each with its own account, started
on one date with one capital and a flat fee per order (trader.LIVE_BOOKS).
The original book keeps its state in data/; a named book in
data/books/<book>/. The monitor runs every book; auto/status/log/compare/
replay take --book. A fresh account opens on the book's first session.

selected_2026_09: US $10,000 and $1 per order from 2026-09-25, CN ¥50,000
and ¥5 per order from 2026-09-28 (the first CN session after the choice).
Strategies beat their benchmark in the Apr-Sep 2026 point-in-time replay
and passed a 10-year PIT backtest (US Sharpe >= 0.6, MaxDD > -50%; CN
Sharpe >= 0.2, CAGR > 0), no daily variants, at most two frequencies per
factor signal, plus the three 2026-09 research strategies.

bridge.py live --book and bridge.py books feed a book selector on the
live page (/api/strategies/live?book=, /api/strategies/live/books).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 20:46:09 +08:00
..

quant-trading web

Web UI and API for the quant-trading repository: strategy backtests and live books (via ../bridge.py), plus a personal watchlist agent.

统一个人股票监控 MVP,支持 A股、港股、美股自选股,按日生成监控报告。数据接口固定使用 IPADS Responses API,密钥从仓库根目录 .env 的 IPADS_API_KEY 读取。

Run

npm install
npm run dev

Frontend: http://127.0.0.1:5173

Backend: http://127.0.0.1:8787

LAN access:

HOST=0.0.0.0 CLIENT_PORT=5174 PORT=8787 npm run dev

Open http://gahow-pc.ipads-lab.se.sjtu.edu.cn:5174 from another device on the same network.

IPADS API

配置文件:

IPADS_API_KEY=your_api_key

固定服务端配置:

base_url = "http://tianx.ipads-lab.se.sjtu.edu.cn:8319/v1"
wire_api = "responses"
env_key = "IPADS_API_KEY"

The backend calls:

POST http://tianx.ipads-lab.se.sjtu.edu.cn:8319/v1/responses
Authorization: Bearer ${IPADS_API_KEY}

The response output text must be JSON matching the stock snapshot schema used by the agent. If IPADS_API_KEY is blank, the app uses deterministic demo data so the dashboard remains usable.

Features

  • Add/remove watchlist symbols such as 600519, 000001.SZ, 00700.HK, AAPL, MSFT.US.
  • Normalize symbols into A股、港股、美股 markets.
  • Generate a daily report with earnings timing, peer stocks, valuation discount/premium, related news, and buy-watch/hold/avoid recommendations.
  • Refreshes the cached daily report every 24 hours while the backend process is running.
  • View each watchlist stock with locally cached D/W/M/Y K-line chart data, zoom controls, MA5/MA20/MA60, RSI14, MACD, volume, and cached financial statements. US K-line and quote/research fields use Nasdaq as the fixed data source and target at least 5 years of verified daily OHLCV history when available.
  • Cache related market context such as sector, liquidity, volatility, drawdown, relative strength, capital flow, sentiment, and risk flags.
  • Run an agent-backed quantitative analysis across technical, valuation, growth, quality, liquidity, sentiment, and risk factors to classify each stock as buy-watch/hold/avoid.
  • Add tags to every watchlist stock and filter the watchlist by tag.
  • In configured provider mode, prompts require verified data and do not permit approximate or fabricated values; missing data is surfaced instead of being filled with synthetic values.
  • K-line cache updates incrementally: once 5 years of daily bars exist locally, refreshes request only the latest missing window and merge by date.

Local cache

Web state lives in the repo-level data/web/ (see src/server/paths.ts): watchlist.json, per-stock snapshot/K-line/financial data under cache/, and backtest results under strategy_cache/. The strategy page reads data/precomputed/backtest_results.json, written by precompute_backtest.py at the repo root.

Production runs as systemd services; see "Server Deployment" in the root CLAUDE.md.