/~learn/s/f3ad4ead
> 一句话总结:用「对数价格中枢 × 效率系数 × 区间动量」替代传统的「斜率 × R²」,从 ETF 候选池中每日选出趋势最强的 N 只持有。原文声称十年 38 倍(年化 42%),本文档记录策略逻辑并给出复现方案。
---
微信公众号「量化君」系列文章:
原文声称绩效(2015-2025):
| 指标 | 原始版(斜率×R²) | 改进版(动量×效率系数) |
| ------ | ------------------- | ------------------------- |
| 累计收益率 | 1460.59% | 3867.10% |
| 年化收益率 | 29.82% | 42.01% |
| 夏普比率 | 1.07 | 1.49 |
| 最大回撤 | 31.30% | 26.05% |
---
原始版:用最小二乘法拟合 N 日价格斜率,乘以决定系数 R² 来衡量趋势质量。
改进版:用区间涨跌幅(动量)× 效率系数。
效率系数(Efficiency Ratio)出自 Kaufman 的自适应均线 AMA:
效率系数 = |位移| / 路程
= |P_t - P_{t-N}| / Σ|P_i - P_{i-1}|
效率动量 = 动量 × 效率系数,既衡量涨了多少,也衡量涨得有多「顺畅」。
不用原始价格,改用对数价格:
对数价格 = ln(价格中枢)
对数收益率 = ln(P_t) - ln(P_{t-1})
好处:
不用收盘价,改用:
价格中枢 = (开盘价 + 最高价 + 最低价 + 收盘价) / 4
收盘价只是 K 线「彩带」中的一个点,价格中枢更好代表了整根 K 线的运行。
每天执行以下步骤:
1. 对每只 ETF 计算对数价格中枢:
log_price_center = ln((open + high + low + close) / 4)
2. 计算 N 日动量:
momentum = log_price_center[t] - log_price_center[t-N]
3. 计算效率系数:
displacement = |log_price_center[t] - log_price_center[t-N]|
path = Σ|log_price_center[i] - log_price_center[i-1]| (i 从 t-N+1 到 t)
efficiency_ratio = displacement / path
4. 计算效率动量:
efficiency_momentum = momentum × efficiency_ratio
5. 排序选出效率动量最强的 SELECT_NUM 只 ETF
6. 如果当前持仓 ≠ 最强 ETF,则调仓换入
---
| 参数 | 含义 | 默认值 |
| ------ | ------ | -------- |
CODE_LIST | ETF 候选池代码列表 | — |
N_DAYS | 动量和效率系数的回看天数 | 20 |
SELECT_NUM | 选几只趋势最强的 ETF | 1 |
---
shift(1),即用前一天之前的数据决定今天的持仓---
---