feat: add Quant OS A-share baseline
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user