a68cf4905e
把聚宽"全天候轮动"(post48819)搬到 BulletTrade。融合=pip+扩展点注入 (SanguoMiniQmtProvider 继承 MiniQMTProvider 只 override get_fundamentals, set_data_provider 公开 API 注入, BulletTrade 源码 0 改动)。 - providers: SanguoMiniQmtProvider 补 get_fundamentals(PershareIndex+自算PE/PS/PB/PCF/市值/ROIC) - strategies/all_weather: 4选股函数+大小盘轮动+ETF兜底+涨停止损(聚宽风格翻译) - factors(估值/ROIC自算) + filters(ST/涨跌停/次新/停牌) - 88/88 测试 Mac+VPS 双过; VPS 回测 pipeline 跑通(修9bug:Capital单位/日期格式/百分数口径/11字段alias) - 实盘 runner_live+runbook 就绪等交易日; DEFAULT_DATA_PROVIDER=miniqmt env 不装 jqdatasdk - 文档: sanguo_portfolio_plan / portfolio_backtest_result / portfolio_live_runbook
54 lines
3.1 KiB
Markdown
54 lines
3.1 KiB
Markdown
# sanguo_portfolio 实盘启动手册 (AllWeather 全天候轮动)
|
||
|
||
**状态**:代码就绪,等交易日首跑(周六休市)。回测验证结论见 `portfolio_backtest_result.md`(T9 完成后补)。
|
||
|
||
## 前置确认(VPS 49.232.102.198)
|
||
- [ ] miniQMT 客户端运行中(userdata_mini = `C:\国金QMT交易端模拟\userdata_mini`),交易账号已登录
|
||
- [ ] bullet-trade 0.9.2 已装(VPS),`jqdatasdk` 未装(走 env 路径)
|
||
- [ ] sanguo_portfolio/ 已同步到 VPS(T9 agent 同步过,若 runner_live.py 有更新重新 scp)
|
||
- [ ] xtquant 可用(miniQMT 提供)
|
||
|
||
## 启动(VPS Windows cmd)
|
||
```bat
|
||
cd C:\sanguo_vnpy_v2 (或 VPS 项目根)
|
||
set DEFAULT_DATA_PROVIDER=miniqmt
|
||
set MINIQMT_MARKET=SH
|
||
set SANGUO_QMT_ACCOUNT=66639661
|
||
set SANGUO_QMT_PATH=C:\国金QMT交易端模拟\userdata_mini
|
||
python -m sanguo_portfolio.runner_live
|
||
```
|
||
- `DEFAULT_DATA_PROVIDER=miniqmt` 必设(避免 bullet-trade 模块加载强制 import jqdatasdk)
|
||
- `SANGUO_QMT_ACCOUNT` 必设(runner_live 缺它拒绝启动,防误下单)
|
||
- 初始资金 1,000,000(小仓位起步,runner_live 硬编码,首跑后按需调)
|
||
|
||
## 触发时点(BulletTrade scheduler 驱动)
|
||
| 时间 | 函数 | 动作 |
|
||
|---|---|---|
|
||
| 09:05 | prepare_stock_list | 记昨日涨停股、刷新持仓列表 |
|
||
| 月初第1交易日 09:30 | monthly_adjustment | 大小盘轮动择时 + 4 选股函数选 3-9 只 + ETF 兜底 + 调仓 |
|
||
| 14:00 | stop_loss | 昨日涨停今日打开卖 / 亏损 8% 止损 / 补跌加仓 |
|
||
|
||
## 观察点(首跑重点盯)
|
||
1. **QmtBroker connect**:日志 `QmtBroker 装配 account=...` 后应见连接成功;若 LiveEngine 未自动 connect,首跑需在 run_live 显式 `broker.connect()`(已知风险点,首跑验证)
|
||
2. **字段名**:provider 取 PershareIndex/Balance 实际字段名(T9 回测校准过 alias,若 VPS 实盘仍报 KeyError,对照 portfolio_backtest_result.md 字段校准表)
|
||
3. **首笔调仓**:月初 monthly_adjustment 触发,看 target_list 是否合理(3-9 只 + 可能 ETF),order_target_value 下单手数对不对(A股×100)
|
||
4. **涨跌停过滤**:涨停买不进/跌停卖不出是否正确跳过
|
||
|
||
## 风控
|
||
- 小仓位 1e6 起步(全天候策略最多持 9 只股票 + ETF)
|
||
- 涨停止损 + 8% 止损内置(stop_loss)
|
||
- T+1 自动扣减(BulletTrade A股适配)
|
||
- **首跑建议**:非月初启动,先观察 prepare/stop_loss 触发不调仓;月初再验证 monthly_adjustment
|
||
|
||
## 等交易日
|
||
今天(2026-07-18 周六)休市,真实成交做不了。代码已就绪,**周一(7/20)开盘后首跑**。首跑先小仓位 + 非月初观察 scheduler,确认连通后再等月初验证完整调仓。
|
||
|
||
## 回测验证结论
|
||
(T9 agent 完成后,从 portfolio_backtest_result.md 摘要:策略是否跑通、选股名单合理性、字段校准结果、聚宽数值对账缺基准标注)
|
||
|
||
## 已知限制
|
||
- PE/PB/PS/PCF 单期×4 近似 TTM(对账聚宽有偏差,精确 TTM 留 v2)
|
||
- ROIC 用单期 oper_profit(vs 聚宽 roic_ttm)
|
||
- jq query ORM 仅支持 ==/>/</between/in_/order_by/limit 子集
|
||
- 聚宽数值对账缺基准(用户不续费 jqdata),仅自洽验证
|