66- ** Layer** : ` runtime-platform ` .
77- ** Responsibility** : QMT / miniQMT A-share execution runtime.
88- ** Owns** : QMT runtime controls and A-share platform integration.
9- - ** Consumes** : CnEquityStrategies, CnEquitySnapshotPipelines artifacts, QuantPlatformKit, QuantRuntimeSettings.
9+ - ** Consumes** : CnEquityStrategies, QuantPlatformKit, QuantRuntimeSettings, market-history inputs .
1010- ** Must not** : own strategy research logic or publish snapshot artifacts.
1111
1212A-share quant platform layer for ** miniQMT / QMT** , built on ` QuantPlatformKit ` and ` CnEquityStrategies ` .
1313
1414Current scope is ** dry-run first** : evaluate strategy targets and preview orders without submitting to the broker.
1515
16- ## Supported profiles (P0)
16+ ## Supported dry-run profiles
1717
1818| Profile | Input mode |
1919| ---| ---|
2020| ` cn_industry_etf_rotation ` | ` market_history ` (** 主轨,runtime_enabled** ) |
21- | ` cn_industry_etf_rotation_aggressive ` | ` market_history ` (** optional target,vol25% ** ) |
22- | ` cn_dividend_quality_snapshot ` | ` feature_snapshot ` (requires snapshot path) |
23- | ` cn_index_etf_tactical_rotation ` | ` market_history ` (legacy / research_backtest_only) |
21+ | ` cn_industry_etf_rotation_aggressive ` | ` market_history ` (** optional target,live_candidate ** ) |
22+
23+ Research-only profiles such as ` cn_dividend_quality_snapshot ` and ` cn_index_etf_tactical_rotation ` are intentionally rejected by QMT runtime settings until they are promoted in ` CnEquityStrategies ` .
2424
2525## Quick start
2626
@@ -34,6 +34,7 @@ export STRATEGY_PROFILE=cn_industry_etf_rotation
3434export QMT_DRY_RUN_ONLY=true
3535export QMT_MARKET_HISTORY_PATH=data/fixtures/market_history.sample.csv
3636
37+ python3 scripts/preflight_qmt_runtime.py
3738python3 main.py
3839curl http://127.0.0.1:8080/probe
3940curl http://127.0.0.1:8080/dry-run
@@ -52,35 +53,9 @@ curl http://127.0.0.1:8080/dry-run
5253
5354Runtime target example: ` QuantRuntimeSettings/examples/targets/qmt/industry_etf_aggressive_dry_run.example.json `
5455
55- ### Legacy index ETF tactical rotation (research only)
56-
57- ``` bash
58- export STRATEGY_PROFILE=cn_index_etf_tactical_rotation
59- export QMT_MARKET_HISTORY_PATH=data/fixtures/market_history.sample.csv
60- python3 main.py
61- ```
62-
63- ### Dividend quality snapshot (feature snapshot)
64-
65- ``` bash
66- python3 -m pip install --no-deps -e ../CnEquitySnapshotPipelines
67-
68- # Regenerate fixtures (uses sample factor CSV; sets as_of to today)
69- python3 scripts/build_fixtures.py
70-
71- export STRATEGY_PROFILE=cn_dividend_quality_snapshot
72- export QMT_DRY_RUN_ONLY=true
73- export QMT_FEATURE_SNAPSHOT_PATH=data/fixtures/dividend_quality/cn_dividend_quality_snapshot_factor_snapshot_latest.csv
74- export QMT_FEATURE_SNAPSHOT_MANIFEST_PATH=data/fixtures/dividend_quality/cn_dividend_quality_snapshot_factor_snapshot_latest.csv.manifest.json
75-
76- python3 main.py
77- curl http://127.0.0.1:8080/dry-run
78- ```
79-
8056End-to-end smoke (stage/build/run):
8157
8258``` bash
83- python3 scripts/smoke_cn_dividend_quality_dry_run_e2e.py
8459python3 scripts/smoke_cn_industry_etf_rotation_dry_run_e2e.py
8560python3 scripts/smoke_cn_industry_etf_rotation_aggressive_dry_run_e2e.py
8661```
@@ -90,13 +65,11 @@ python3 scripts/smoke_cn_industry_etf_rotation_aggressive_dry_run_e2e.py
9065| Variable | Default | Description |
9166| ---| ---| ---|
9267| ` QMT_DRY_RUN_ONLY ` | ` true ` | When true, never submit live orders |
93- | ` STRATEGY_PROFILE ` | required | Strategy profile id |
68+ | ` STRATEGY_PROFILE ` | required | QMT-enabled strategy profile id |
9469| ` QMT_MARKET_HISTORY_PATH ` | — | CSV with ` date,symbol,close ` for direct strategies |
95- | ` QMT_FEATURE_SNAPSHOT_PATH ` | — | Snapshot CSV for feature-snapshot strategies |
96- | ` QMT_FEATURE_SNAPSHOT_MANIFEST_PATH ` | — | Snapshot manifest JSON (required for dividend quality) |
9770| ` RUNTIME_TARGET_JSON ` | — | Optional runtime target override from QuantRuntimeSettings |
9871
99- See ` .env.example ` and ` CnEquityStrategies/docs/platform_integration.md ` .
72+ Use ` .env.example ` as the dry-run configuration template. Run ` python3 scripts/preflight_qmt_runtime.py ` before starting the service; it validates the selected profile and required input paths without touching any live account credentials .
10073
10174## HTTP endpoints
10275
0 commit comments