355 lines
20 KiB
Markdown
355 lines
20 KiB
Markdown
# ETF 自适应网格策略回测报告(新配置)
|
||
|
||
- 配置来源:`py-client/etc/_etf.yaml`(**回测直接读取该文件,不再维护副本**)
|
||
- 回测区间:**2025-12-22 ~ 2026-09-18(182 个交易日)**
|
||
- 标的:`588000.SH`、`510300.SH`、`518880.SH`;日线 242 根(2025-09-19 ~ 2026-09-18,**未复权**)
|
||
- 账户:起始 **50 万**、`min_cash_ratio=0.10`、佣金 `max(5, 金额×0.0003)`
|
||
- 复现:`py -3.14 -B labs/analysis/etf/run.py`(结果落 `results.json` / `run_report.txt`)
|
||
- 对照脚本:`compare.py`(旧 vs 新)、`capital.py`(资金需求)、`sweep.py`(参数)、`drawdown.py`(浮亏轨迹)
|
||
- 本报告只做分析,**未修改任何策略代码**。
|
||
|
||
## 本次配置变化
|
||
|
||
| 标的 | 旧 `buy_shares` | 新 `buy_shares` | 新 `max_shares` |
|
||
| --- | ---: | ---: | ---: |
|
||
| 588000.SH | 1,000 | **10,000** | 100,000 |
|
||
| 510300.SH | 1,000 | **4,000** | 20,000 |
|
||
| 518880.SH | 1,000 | **2,000** | 10,000 |
|
||
|
||
`defaults` 段(add_pct 3.0 / min_profit_pct 1.0 / channel_pct 15 / max_adds 9 等)**未改**。
|
||
|
||
---
|
||
|
||
## 一、结论摘要
|
||
|
||
| 指标 | 基准(触价成交) | 贴近实盘(反弹价) | 悲观(收盘价) |
|
||
| --- | ---: | ---: | ---: |
|
||
| **账户权益变动** | **+6,110.84(+1.22%)** | +8,426.54(+1.69%) | **−2,551.34(−0.51%)** |
|
||
| 最大回撤(权益口径) | 0.48% | 0.56% | 1.68% |
|
||
| 完整轮次 / 胜率 | 32 / **32 胜 0 负** | 27 / 27 胜 | 13 / 13 胜 |
|
||
| 单轮平均已了结利润 | **+195.81** | — | — |
|
||
| 平均持有 / 最大持有 | **3.7 天 / 23 天** | — | — |
|
||
| 平均档位 / 最大档位 | 1.16 / 4 | — | — |
|
||
| 佣金合计 | 401.79 | 343.75 | 197.34 |
|
||
| 平均资金占用 / 峰值 | **2.24% / 17.41%** | 3.40% / 17.85% | 6.71% / 24.83% |
|
||
|
||
**和旧配置比,收益放大了 4 倍,但收益率只从 0.31% 提到 1.22%(同一 50 万账户)——因为放大的是仓位,不是机会。**
|
||
|
||
| | 旧配置 | 新配置 | 倍数 |
|
||
| --- | ---: | ---: | ---: |
|
||
| 买入名义额 | 176,668 | **664,705** | **3.76×** |
|
||
| 权益变动(50 万账户) | +1,534.14 | **+6,110.84** | **3.98×** |
|
||
| 收益率 | 0.31% | **1.22%** | 3.98× |
|
||
| 最大回撤 | 0.25% | 0.48% | 1.9× |
|
||
| 平均资金占用 | 0.67% | **2.24%** | 3.3× |
|
||
| 占用 ROI(权益/平均占用) | 45.68% | **54.48%** | 1.19× |
|
||
| 完整轮次 | 28 | 32 | 1.14× |
|
||
| 单轮平均利润 | 55.98 | **195.81** | 3.5× |
|
||
|
||
**四个关键读数**
|
||
|
||
1. **放大股数 ≈ 等比例放大盈亏**:名义额 ×3.76、盈亏 ×3.98,几乎 1:1。这是"加杠杆",
|
||
不是"改进了策略";风险(回撤)同步从 0.25% 升到 0.48%。
|
||
2. **入场机会没有变多**:轮次 28 → 32(+14%)。机会频率仍由市场决定(一年 59 个信号,见 §四)。
|
||
3. **资金利用率仍然极低**:平均只投出 **2.24%** 的钱,峰值 17.41%。
|
||
**绝对盈亏与账户规模无关**——把资金从 20 万加到 120 万,盈亏始终是 +6,110.84,
|
||
收益率从 3.06% 被摊薄到 0.51%(`compare.py` §C)。这说明**50 万并没有被用满**。
|
||
4. **悲观成交假设下会亏钱**(−2,551.34,−0.51%)。新配置把仓位放大 4 倍后,
|
||
结论对成交假设的敏感度也放大了:`touch` +6,111 / `bounce` +8,427 / `close` −2,551。
|
||
|
||
---
|
||
|
||
## 二、逐标的归因(基准)
|
||
|
||
| 标的 | 完整轮次 | 已了结净额 | 了结时仍持有 | 按成本净额 | 未实现 | 按市价净额 |
|
||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||
| 588000.SH | 12 | +2,011.94 | 0 | +2,011.94 | 0 | +2,011.94 |
|
||
| 510300.SH | 13 | +2,521.97 | **4,000 股** | **−15,961.17** | −155.14 | **−16,116.31** |
|
||
| 518880.SH | 7 | +1,732.07 | 0 | +1,732.07 | 0 | +1,732.07 |
|
||
| 合计 | 32 | **+6,265.98** | — | **−12,217.16** | −155.14 | **−12,372.31** |
|
||
|
||
对平关系(已用脚本验证):`权益变动 +6,110.84 = 已了结净额(含未了结成本)−12,217.16 + 未了结成本 18,483.14 − 未实现 155.14`。
|
||
`已了结净额` 是**现金流口径**(把还在手上的仓位当成已花掉的钱),**不是亏损**:32 个了结轮次合计 **+6,265.98**。
|
||
|
||
**⚠️ 最大的问题在这里**:`510300.SH` 的 13 个轮次全部盈利(合计 +2,521.97),但**最终一笔未了结的
|
||
4,000 股(成本 18,483)** 让它的净额变成 −15,961。一只标的的未了结仓位,吃掉了三只标的
|
||
全部已了结利润(+6,266)的两倍半。旧配置里这个数字是 −4,035,**放大 4 倍仓位后变成 −15,961**。
|
||
|
||
---
|
||
|
||
## 三、成交结构与资金
|
||
|
||
### 3.1 完整轮次
|
||
|
||
| 项 | 值 |
|
||
| --- | ---: |
|
||
| 完整轮次 | 32(32 胜 0 负) |
|
||
| 单轮平均利润 | +195.81(最好 +684.48,最差 +139.36) |
|
||
| 平均持有 | 3.7 天(最长 23 天) |
|
||
| **持有 ≤1 天就了结** | **22 / 32(69%)** |
|
||
| 平均档位 / 最大档位 | 1.16 / 4 |
|
||
| 底仓 / 补仓次数 | 33 / 5 |
|
||
|
||
**69% 的轮次在 1 天内完成**:新配置把单档金额放大到 1.8~14 万后,1% 的止盈目标对应的绝对金额
|
||
变成 18~140 元/档,达到速度没变,但**单轮利润的绝对值被放大**。
|
||
同时 **平均只用 1.16 档**(补仓 5 次),阶梯依然远未铺开。
|
||
|
||
### 3.2 资金占用
|
||
|
||
| 项 | 值 |
|
||
| --- | ---: |
|
||
| 有持仓天数 | 73 / 182(40.1%) |
|
||
| 平均占用 | 11,216 元 = **2.24%** |
|
||
| 峰值占用 | 87,052 元 = **17.41%** |
|
||
| 买入名义 / 换手 | 664,705 元 / **1.33 倍** |
|
||
| 资金需求(按各标的区间最低价估) | 三只各 1 档 ≈ **46,518**;铺满 10 档 ≈ **465,180** |
|
||
|
||
- 配置现在的**理论满载需求是 46.5 万**(三只各铺满 10 档),50 万账户刚好能承载。
|
||
- 但实际峰值只用到 8.7 万(17.4%)、平均 1.1 万(2.24%)——**账户有 80% 以上的钱全年闲置**。
|
||
|
||
### 3.3 佣金(新配置下更不是瓶颈)
|
||
|
||
| 项 | 值 |
|
||
| --- | ---: |
|
||
| 佣金合计 | 401.79 |
|
||
| 占买入名义 | **0.06%**(旧配置 0.184%) |
|
||
| 佣金率 0 → 0.0003 → 0.001 | +6,149.52 → +6,110.84 → +5,643.61 |
|
||
|
||
单档金额变大后几乎全部按 `0.0003` 计费(不再吃 5 元最低佣金),**佣金成本降到可忽略**。
|
||
`min_profit_pct=1%` 的绝对余量非常大(每档毛利润 ≈ 18~140 元 vs 双边佣金 10 元)。
|
||
|
||
### 3.4 逐月权益
|
||
|
||
| 月份 | 权益变动 | 幅度 |
|
||
| --- | ---: | ---: |
|
||
| 2025-12 | 0.00 | 0.000% |
|
||
| 2026-01 | +260.08 | +0.052% |
|
||
| 2026-02 | +105.42 | +0.021% |
|
||
| 2026-03 | **−773.15** | −0.155% |
|
||
| 2026-04 | +2,234.72 | +0.447% |
|
||
| 2026-05 | +456.96 | +0.091% |
|
||
| 2026-06 | +925.85 | +0.184% |
|
||
| 2026-07 | +1,530.46 | +0.304% |
|
||
| 2026-08 | +767.21 | +0.152% |
|
||
| 2026-09 | +603.29 | +0.119% |
|
||
|
||
9 个月里 1 个月亏损、8 个月盈利,但**全部落在 ±0.45% 以内**——典型的"小仓位、稳定、无感"。
|
||
|
||
---
|
||
|
||
## 四、为什么收益率还是上不去(新配置下的定量结论)
|
||
|
||
### 4.1 根因没变:机会数量由市场决定
|
||
|
||
| 标的 | 可回放日 | 最低价跌破门槛 | **入场信号** | 跌破门槛天数占比 |
|
||
| --- | ---: | ---: | ---: | ---: |
|
||
| 588000.SH | 182 | 44 | 20 | 24.2% |
|
||
| 510300.SH | 182 | 47 | 29 | 25.8% |
|
||
| 518880.SH | 182 | 30 | 10 | 16.5% |
|
||
| 合计 | 546 | 121 | **59** | — |
|
||
|
||
一年 59 个信号(≈ 每天 0.32 次),本次实际建网 33 次、了结 32 轮。**机会已被用尽**。
|
||
33 次建网里,现价在过去 60 日收盘的分位中位数 **6.7%**,19/33 落在 10% 分位以下——**入场门槛执行到位**。
|
||
|
||
### 4.2 单档股数放大后,绝对盈亏与账户无关
|
||
|
||
| 起始资金 | 权益变动 | 收益率 | 平均占用 | 峰值占用 |
|
||
| ---: | ---: | ---: | ---: | ---: |
|
||
| 200,000 | +6,110.84 | **3.06%** | 5.61% | 43.53% |
|
||
| 300,000 | +6,110.84 | 2.04% | 3.74% | 29.02% |
|
||
| **500,000** | **+6,110.84** | **1.22%** | 2.24% | 17.41% |
|
||
| 800,000 | +6,110.84 | 0.76% | 1.40% | 10.88% |
|
||
| 1,200,000 | +6,110.84 | 0.51% | 0.93% | 7.25% |
|
||
|
||
**同一份交易、同一个盈亏,只因为分母变大,收益率就摊薄 6 倍。**
|
||
所以"收益率低"要拆成两件事:①策略**绝对赚钱能力**(这 9 个月 +6,111 元);
|
||
②**账户里有多少钱在真正干活**(平均 2.24%)。
|
||
|
||
### 4.3 继续放大股数:收益线性涨、风险同步涨
|
||
|
||
| 场景(50 万账户) | 权益变动 | 收益率 | 最大回撤 | 平均占用 | 占用 ROI | 收益/回撤 |
|
||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||
| `buy_shares`×0.25 | +1,418.64 | 0.28% | 0.12% | 0.58% | 48.8% | 2.30 |
|
||
| `buy_shares`×0.5 | +3,077.19 | 0.62% | 0.24% | 1.11% | 55.4% | 2.54 |
|
||
| **现配置** | **+6,110.84** | **1.22%** | **0.48%** | **2.24%** | **54.5%** | **2.56** |
|
||
| `buy_shares`×2 | +12,226.40 | 2.45% | 0.95% | 4.49% | 54.5% | 2.57 |
|
||
| `buy_shares`×4 | +24,452.81 | 4.89% | 1.89% | 8.97% | 54.5% | 2.59 |
|
||
|
||
**占用 ROI 恒定在 48.8%~54.5%,收益/回撤恒定在 2.3~2.6** —— 说明在这段样本里,
|
||
放大股数**既不改善也不恶化风险调整后收益,只是等比放大**。
|
||
既然风险调整后收益不变,放大到多大就取决于账户能承受的回撤:若接受 1.9% 回撤,
|
||
`×4` 可把 9 个月收益做到 +2.4 万(4.89%)。
|
||
|
||
---
|
||
|
||
## 五、参数敏感性(28 组,基准=当前 `_etf.yaml`)
|
||
|
||
| 场景 | 权益变动 | 收益率 | 最大回撤 | 底仓 | 补仓 | 主出口 | 副出口 | 佣金 | 平均占用 |
|
||
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||
| **基准(当前配置)** | **+6,110.84** | 1.222% | 0.478% | 33 | 5 | 32 | 0 | 401.79 | 2.24% |
|
||
| add_pct=2.0 | +5,856.05 | 1.171% | 0.362% | 32 | 4 | 31 | 0 | 378.00 | 2.78% |
|
||
| add_pct=4.0 | +5,794.31 | 1.159% | 0.356% | 33 | 3 | 32 | 0 | 382.15 | 2.37% |
|
||
| add_pct=5.0 | +5,104.25 | 1.021% | 0.412% | 31 | 1 | 30 | 0 | 339.29 | 2.71% |
|
||
| min_profit_pct=0.5 | +3,475.39 | 0.695% | 0.498% | 41 | 4 | 40 | 0 | 477.22 | 1.56% |
|
||
| min_profit_pct=0.8 | +5,220.81 | 1.044% | 0.486% | 37 | 4 | 36 | 0 | 432.96 | 1.80% |
|
||
| **min_profit_pct=1.5** | **+6,560.59** | **1.312%** | 0.438% | 23 | 4 | 22 | 0 | 284.56 | 3.21% |
|
||
| min_profit_pct=2.0 | +5,680.19 | 1.136% | 0.448% | 19 | 5 | 17 | 2 | 246.20 | 3.96% |
|
||
| channel_pct=1 | +3,287.51 | 0.658% | 0.677% | 23 | 4 | 22 | 0 | 283.33 | 3.07% |
|
||
| channel_pct=10 | +5,350.72 | 1.070% | 1.289% | 27 | 6 | 26 | 0 | 349.58 | 5.46% |
|
||
| channel_pct=20 | +5,579.94 | 1.116% | 0.480% | 28 | 6 | 27 | 0 | 352.61 | 3.25% |
|
||
| channel_pct=30 | +4,779.74 | 0.956% | 0.381% | 23 | 4 | 22 | 0 | 295.36 | 2.53% |
|
||
| max_adds=3 / 5 / 15 | +6,110.84 | 1.222% | 0.478% | 33 | 5 | 32 | 0 | 401.79 | 2.24% |
|
||
| inner_step=0.2 | +5,848.68 | 1.170% | 0.478% | 35 | 5 | 34 | **1** | 423.10 | 2.01% |
|
||
| inner_step=0.4 | +6,110.84 | 1.222% | 0.478% | 33 | 5 | 32 | 0 | 401.79 | 2.24% |
|
||
| 无副出口 | +6,110.84 | 1.222% | 0.478% | 33 | 5 | 32 | 0 | 401.79 | 2.24% |
|
||
| atr_multiplier×0.5 / ×2.0 | +6,110.84 | 1.222% | 0.478% | 33 | 5 | 32 | 0 | 401.79 | 2.24% |
|
||
| 无 T+1(min_hold_days=0) | +6,110.84 | 1.222% | 0.478% | 33 | 5 | 32 | 0 | 401.79 | 2.24% |
|
||
| 佣金率=0 / 0.001 | +6,149.52 / +5,643.61 | 1.230% / 1.129% | 0.478% / 0.491% | 33 | 5 | 32 | 0 | 350 / 1,317 | 2.24% |
|
||
| 成交=反弹确认价 | +8,426.54 | 1.685% | 0.558% | 28 | 5 | 27 | 0 | 343.75 | 3.40% |
|
||
| **成交=收盘价** | **−2,551.34** | **−0.510%** | 1.676% | 15 | 6 | 13 | 0 | 197.34 | 6.71% |
|
||
|
||
**与旧配置一致的三个"零影响参数"依然零影响**(新配置下同样验证):
|
||
|
||
- **`atr_multiplier`×0.5 / ×2.0 → 结果一模一样**:格距不参与任何触发价(`docs/etf.md` §3.3 的设计后果)。
|
||
逐标的 ATR 倍数标定(0.5/1.0/1.0)**对成交没有任何影响**。
|
||
- **`max_adds`=3 / 5 / 15 → 结果一模一样**:一年只补仓 5 次、最多 4 档,9 档闸门从未生效。
|
||
- **`inner_step`=0.4 / 无副出口 → 结果一模一样**:`inner_grids×inner_step`(1.4%~1.8%) 仍大于
|
||
`min_profit_pct`(1.0%),副出口在基准下 **0 次成交**;只有压到 0.2 才触发 1 次。
|
||
- `min_profit_pct=1.5%` 是本批唯一略优于基准的参数(+6,560.59 vs +6,110.84),
|
||
但差异仅 7%,**在 32 个轮次的样本上不足以判定**(旧配置同参数反而略差)。
|
||
|
||
---
|
||
|
||
## 六、风险:无止损 + 未了结仓位
|
||
|
||
### 6.1 未了结仓位的浮亏轨迹(均价法)
|
||
|
||
| 标的 | 持仓天数 | 最长连续浮亏天数 | 最深浮亏 | 最深浮亏% | 期末浮亏 |
|
||
| --- | ---: | ---: | ---: | ---: | ---: |
|
||
| 588000.SH | 27 | 13 | −1,191 | **−8.25%** | +2 |
|
||
| 510300.SH | 47 | 7 | −651 | −3.54% | −150 |
|
||
| 518880.SH | 22 | 5 | −2,518 | −3.57% | +135 |
|
||
|
||
- **这三个标的的浮亏都不深**(最深 −8.25%),且**最后都回正**(期末浮亏仅 −150 / +2 / +135)。
|
||
样本期(含 MA60 向下的 3~7 月)没有出现真正的单边下跌,**尾部风险未被覆盖**。
|
||
- 510300 的期末浮亏只有 **−150 元**(−0.8%),不是因为"亏得多",而是因为
|
||
**4,000 股 × 4.62 的成本额(18,483)被算成了现金流出**,所以在现金流口径里显得很吓人。
|
||
|
||
### 6.2 时间止损反事实(分析用)
|
||
|
||
| 规则 | 权益变动 | 收益率 | 占用 ROI | 强平次数 |
|
||
| --- | ---: | ---: | ---: | ---: |
|
||
| 不止损(现配置) | +6,110.84 | 1.222% | 54.48% | 0 |
|
||
| 持有 >5 天且浮亏即平 | +5,914.84 | 1.183% | 52.73% | 3 |
|
||
| 持有 >10 天且浮亏即平 | +5,474.84 | 1.095% | 48.81% | 3 |
|
||
| 持有 >20 天且浮亏即平 | +4,838.84 | 0.968% | 43.14% | 3 |
|
||
|
||
**时间止损在这段样本里是负收益**(越早平仓越差),因为浮亏最终都修复了。
|
||
这说明:**在均值回归有效的样本里,无止损是特征不是缺陷**;它真正的风险只在单边下跌时才暴露,
|
||
而那部分样本这里没有。要不要加闸门,取决于你能否承受"一次单边下跌把 32 轮利润全部回吐"
|
||
(旧配置里 510300 已经演示过一次:13 轮盈利被一笔未了结仓位反超)。
|
||
|
||
---
|
||
|
||
## 七、与旧配置的结论对比
|
||
|
||
| 项 | 旧配置(1,000 股/档) | 新配置(10,000/4,000/2,000) | 结论变化 |
|
||
| --- | --- | --- | --- |
|
||
| 50 万账户 9 个月收益 | +1,534(0.31%) | **+6,111(1.22%)** | 放大 4 倍(等比于仓位) |
|
||
| 最大回撤 | 0.25% | 0.48% | 同步放大 |
|
||
| 轮次 / 胜率 | 28 / 28 胜 | 32 / 32 胜 | 机会未变多 |
|
||
| 单轮平均利润 | 55.98 | **195.81** | 3.5 倍(仓位放大) |
|
||
| 平均资金占用 | 0.67% | 2.24% | 仍极低 |
|
||
| 占用 ROI | 45.68% | 54.48% | 略优(大单摊薄佣金) |
|
||
| 佣金/名义 | 0.184% | **0.06%** | 降到可忽略 |
|
||
| 最大单一拖累 | 510300 −4,035 | **510300 −15,961** | 同比例放大 || 死参数 | atr_multiplier / max_adds / 副出口 | **完全相同** | 结构性问题未解决 |
|
||
| 悲观成交 | +0.16% | **−0.51%(转负)** | 敏感度放大到会亏钱 |
|
||
|
||
**新配置解决了"钱太少"的一部分(单轮利润从 56 元到 196 元),但没解决三件结构性问题:**
|
||
①机会频率(由市场决定);②资金利用率(平均 2.24%);③无止损下单一标的拖累(同比例放大)。
|
||
|
||
---
|
||
|
||
## 八、和"买入持有"比:收益率更低,但资金效率与回撤好得多
|
||
|
||
同一区间(2025-12-22 ~ 2026-09-18,182 个交易日)、同一份日线、同一 50 万账户
|
||
(`vs_hold.py`,买入持有=首日等权买入三只 ETF 持到期末,忽略整手限制):
|
||
|
||
| 策略 | 期末权益 | 总收益 | 年化 | 最大回撤 | 日波动 | 夏普 | 卡玛 |
|
||
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||
| ETF 网格(现配置) | 506,110.84 | **+1.22%** | 1.70% | **0.48%** | **0.080%** | **1.34** | **2.56** |
|
||
| 等权买入持有 | 526,201.75 | **+5.24%** | 7.33% | 16.75% | 1.747% | 0.40 | 0.31 |
|
||
|
||
逐标的区间涨跌:`588000.SH` **+24.13%**(期间最大回撤 31.19%)、`510300.SH` −3.13%、
|
||
`518880.SH` −5.28%(最大回撤 30.52%)。
|
||
|
||
**分三种口径回答"哪个更好":**
|
||
|
||
| 口径 | 胜者 | 差距 |
|
||
| --- | --- | --- |
|
||
| **绝对收益**(同样 50 万) | **买入持有** | +5.24% vs +1.22%(多赚 2 万,是网格的 4.3 倍) |
|
||
| **风险调整后**(夏普/卡玛) | **网格** | 夏普 1.34 vs 0.40;卡玛 2.56 vs 0.31 |
|
||
| **资金效率** | **网格** | 平均只占用 2.24% 的钱就赚了 1.22%(占用部分 ROI **54.48%**);买入持有 100% 占用 |
|
||
|
||
**但是"同风险"才是公平的比法。** 网格只投 2.24% 的钱、回撤 0.48%;买入持有投 100%、回撤 16.75%。
|
||
把网格单档股数放大到接近买入持有的回撤:
|
||
|
||
| 放大倍数 | 权益变动 | 总收益 | 最大回撤 | 平均占用 | 夏普 | 卡玛 |
|
||
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||
| 1×(现配置) | +6,110.84 | 1.22% | 0.48% | 2.24% | 1.34 | 2.56 |
|
||
| 4× | +24,452.81 | 4.89% | 1.89% | 8.97% | 1.35 | 2.59 |
|
||
| 10× | +31,729.14 | **6.35%** | 6.42% | 33.63% | 0.87 | 0.99 |
|
||
| 20× | +40,473.94 | **8.09%** | 7.40% | 40.16% | 0.97 | 1.09 |
|
||
| 35× | 放大过头,被资金/10 档上限挡住,回测归零 | — | — | — | — | — |
|
||
|
||
**结论**:把仓位放大到 **4~20 倍**(回撤仍在买入持有的一半以内),网格的绝对收益
|
||
(4.89% ~ 8.09%)就能**超过买入持有的 5.24%**。也就是说——
|
||
**现在配置下"买入持有更好"只是因为网格几乎没下注;同风险下网格的效明显更高。**
|
||
但要注意这是同一段历史的外推,且样本期 `588000.SH` 涨 24%,是偏向"持有"的行情。
|
||
|
||
---
|
||
|
||
## 九、建议(按证据强度排序)
|
||
|
||
| # | 措施 | 量化依据 | 代价 | 需要改代码 |
|
||
| ---: | --- | --- | --- | --- |
|
||
| 1 | **把 `buy_shares` 提到风险预算允许的上限**(或改成"每档 = 现金的 x%") | 占用 ROI 恒定 48~55%、收益/回撤恒定 2.3~2.6;`×2` 得 +12,226(2.45%)、`×4` 得 +24,453(4.89%) | 回撤同步到 0.95% / 1.89% | 只改 `_etf.yaml` |
|
||
| 2 | **扩充标的白名单**(目标 6~10 只) | 收益率随标的数近似线性(1→3 只:0.20%→0.77%,见旧报告 §10.3);当前峰值占用仅 17.4%,容量充足 | 需逐标的标定筛选 | 只改 `_etf.yaml` |
|
||
| 3 | **接受或修掉 `510300.SH` 的未了结拖累** | 它的 13 轮盈利 +2,534 被一笔未了结仓位变成 −15,961,是三只里唯一的净负项 | 加闸门会引入已实现亏损(§6.2 显示样本内为负收益) | 需改 `positions.py` |
|
||
| 4 | **让副出口可达或删除** | `inner_step` 0.4 与"无副出口"结果完全一致;0.2 才有 1 次成交 | 改 `_etf.yaml` 一行 | 只改 `_etf.yaml` |
|
||
| 5 | **不要动** `add_pct` / `channel_pct` / `atr_multiplier` | 现值均不劣于邻域;`atr_multiplier` 完全无效 | — | — |
|
||
| 6 | **验证成交假设** | `touch` +6,111 / `bounce` +8,427 / `close` **−2,551**;新配置下悲观模型已经转负 | 需 tick/分钟级数据 | — |
|
||
|
||
**一句话**:新配置把"每轮赚多少"放大了 3.5 倍,但**收益率仍受限于"一年 59 个机会 × 平均只用 2.24% 的钱"**。
|
||
下一步要提收益,只有两条路:**扩标的(更多并行机会)** 和 **在可承受回撤内继续放大单档股数**;
|
||
调参已被数据否决(唯一例外是 `min_profit_pct=1.5%`,但样本量不足以定论)。
|
||
|
||
---
|
||
|
||
## 十、复现
|
||
|
||
```
|
||
labs/analysis/etf/
|
||
├── backtest.py 回测内核(日线近似、三种成交模型、共享资金、T+1、sizer)
|
||
│ —— 配置直接读 py-client/etc/_etf.yaml
|
||
├── run.py 总报告生成器 → results.json / run_report.txt
|
||
├── compare.py 旧 vs 新配置对照 + 资金需求 + 规模敏感性
|
||
├── capital.py 资金需求与账户规模扫描
|
||
├── analysis.py 轮次统计 / 资金占用 / 逐月 / 28 组敏感性
|
||
├── sweep.py 改进方案扫描(参数 / 规模 / 组合)
|
||
├── universe.py 标的数量 × 资金规模
|
||
├── entries.py 入场机会频率
|
||
├── drawdown.py 未了结仓位浮亏轨迹 + 时间止损反事实
|
||
├── vs_hold.py 网格 vs 等权买入持有(同区间、同账户)
|
||
└── cache/*.json 日线缓存
|
||
```
|
||
|
||
```powershell
|
||
cd D:\work\quant\big-qmt
|
||
py -3.14 -B labs/analysis/etf/run.py # 当前 _etf.yaml 的基准回测与报告
|
||
py -3.14 -B labs/analysis/etf/compare.py # 旧 vs 新对照
|
||
py -3.14 -B labs/analysis/etf/capital.py # 资金需求
|
||
py -3.14 -B labs/analysis/etf/drawdown.py # 浮亏轨迹
|
||
py -3.14 -B labs/analysis/etf/vs_hold.py # 网格 vs 买入持有
|
||
```
|