# JoinQuant hosted backtest evidence — 2026-07-26 This is a real hosted-runtime smoke record, not a cross-engine acceptance report and not an investment-performance claim. ## Run identity - Strategy: `quant_os_portable_momentum_v1` - Hosted record: [JoinQuant backtest detail](https://www.joinquant.com/algorithm/backtest/detail?backtestId=62de09f1e0f9e81b260a18e0ee59e953) - Period: 2024-01-02 through 2024-12-31 - Initial capital: CNY 1,000,000 - Frequency/runtime: daily, Python 3 - Benchmark: CSI 500 (`000905.XSHG`) - Uploaded bundle: `dist/joinquant_strategy.py` - Uploaded bundle SHA-256: `22ddb0546beb3bd4e4bbedecb271452111324c3903e45be1f4ac3d39f38cce4f` - Portable core SHA-256: `af29e4e5e10705cf6aff89874394c1e80d3780f093c19d90ed53ef9d0188a934` ## Hosted result | Metric | Hosted value | | --- | ---: | | Strategy return | -19.98% | | Annualized return | -20.56% | | Excess return | -24.12% | | Benchmark return | 5.46% | | Alpha | -0.259 | | Beta | 0.830 | | Sharpe | -0.806 | | Win rate | 0.474 | | Profit/loss ratio | 0.816 | | Maximum drawdown | 32.45% | The visible completed-run log contained zero `ERROR`, `Traceback`, or `订单委托失败` entries. These performance numbers are negative and are recorded only to prove that the hosted execution path completed; they provide no investment-value evidence. ## Defects found by the hosted runtime The real platform run found three issues that fake wiring alone did not expose: 1. JoinQuant's hosted namespace shadowed Python's global `sum`. The portable core now uses its own deterministic numeric reducer. 2. STAR Market market orders require worst-price protection. The wrapper now submits a documented `LimitOrderStyle`: daily upper limit for buys and daily lower limit for sells, and fails closed when that price is absent or invalid. 3. STAR Market auction orders require at least 200 shares, except a complete sale of the remaining sub-200 balance. The rule now lives in the shared portable core and local simulator, so JoinQuant and QMT receive the same legal target/order delta. The order API and limit-style contract are documented in the [official JoinQuant API PDF](https://cdn.joinquant.com/help/img/JoinQuantAPI.pdf). The 200-share minimum and remaining-balance exception are described by the [Shanghai Stock Exchange](https://edu.sse.com.cn/tib/). ## Evidence boundary This record proves that one real JoinQuant daily backtest completed with the uploaded wrapper. It does **not** pass G9 because the following evidence is still missing: - a complete hosted export containing input close arrays or hashes, the portable plan, orders and fills; - a local canonical run over the exact same frozen inputs; - layer-by-layer L1—L4 comparison with enumerated difference reasons; - a real QMT peer run and at least 20 trading days of broker shadow evidence. Accordingly, `gate_scorecard.json` remains `NOT_BASELINE_60`.