⚠️ 免责声明:本文策略仅用于学习交流,所有代码/数据均为模拟推演,不构成任何投资建议。历史回测不代表未来收益,股市有风险,决策需谨慎。
📈 先上结果
2025年1月1日 → 2026年4月3日(15个月)
| 指标 | 值 |
|---|---|
| 累计收益 | 632.69%(6.3倍) |
| 年化收益率 | 419.99% |
| 最大回撤 | 13.51% |
| 胜率 | 64.89% |
| 夏普比率 | 260.14% |
💥 什么概念?
- 10万元本金 → 15个月后变成 73万元
- 平均每月收益超 20%
这就是社区最近大火的【五福闹新春】ETF轮动策略。
策略三大核心模块,手把手带你读懂代码逻辑
🔹 模块一:ETF池构建 —— 广度 × 流动性 = 稳健起点
策略不是瞎选,而是两层筛选:
1. 固定池(200+只)
覆盖:
- 宽基指数:沪深300、中证500、中证2000、创业板
- 行业主题:芯片、医药、AI、新能源、证券
- 海外市场:纳指、恒生科技、标普500、日经
- 大宗商品:黄金、原油、豆粕
目的:确保"不漏掉任何机会"
2. 动态池(每日刷新)
# 每日计算全市场流动性门槛
avg_total_money = daily_totals.mean()
threshold = avg_total_money / 20000 # 动态阈值
# 过滤低流动性标的
qualified = [etf for etf in etf_list if avg_money > threshold]
- 按行业分组,每组取成交额最高者
- 最终保留Top 100,避免"僵尸ETF"拖累收益
最终合并池 ≈ 150~200只,兼顾广度与可交易性。
🔹 模块二:动量得分系统 —— 不看涨幅,看"趋势质量"
很多人以为"涨得多=好",但五福策略真正聪明的地方在于:
得分 = 年化收益 × R²(拟合优度)
# 加权线性回归(近期权重更高)
def calculate_momentum_score(price_series, lookback_days=25):
y = np.log(price_series[-(lookback_days+1):]) # 对数价格
x = np.arange(len(y))
weights = np.linspace(1, 2, len(y)) # 近期数据权重更高
slope, intercept = np.polyfit(x, y, 1, w=weights)
annualized_returns = math.exp(slope * 250) - 1 # 年化收益
# 计算加权R²(拟合优度)
ss_res = np.sum(weights * (y - (slope * x + intercept)) ** 2)
ss_tot = np.sum(weights * (y - np.mean(y)) ** 2)
r_squared = 1 - ss_res / ss_tot if ss_tot else 0
return annualized_returns * r_squared # 得分 = 收益 × 稳定性
📌 为什么这么设计?
- 斜率大 → 趋势强
- R²高 → 走势稳(非震荡假突破)
- 两者缺一不可——只涨不稳的ETF,我们不要
再叠加五重过滤:
- ✅ R² > 0.4(趋势明确)
- ✅ 成交量比 < 1.8(排除异常放量)
- ✅ 近3日无单日跌幅 > 3%(防接飞刀)
- ✅ 溢价率 ≤ 30%(防高位泡沫)
- ✅ 价格在滤波器上方(确保上升通道)
⚠️ 重要说明: PT回测中溢价率过滤因平台限制被跳过(
get_extras不可用),这是导致聚宽回测年化419%、而PT回测仅149%的核心原因—— 不是策略失效,是回测环境简化。 实盘中通过get_etf_info()可还原。
🔹 模块三:动态风控
动态风控:市场变了,策略也变
1. 震荡期识别系统
策略会自动判断当前市场状态:
# 进入震荡期条件(满足任一即切换)
if (bias > 0.08) or \ # 乖离率>8%
(prev_rsi > 70 and current_rsi < 65) or \ # RSI超买回落
(g.stop_loss_triggered_today): # 当日触发止损
g.current_filter = 'range_bound' # 切换高斯滤波器
- 正常市 → 拉普拉斯滤波器(灵敏捕捉趋势)
- 震荡市 → 高斯滤波器(降低噪音,减少假信号)
2. 分钟级止损
# 固定比例止损
if current_price <= cost_price * 0.95:
smart_order_target_value(security, 0, context) # 清仓
g.stop_loss_triggered_today = True
3. 防御模式
无合适标的时,自动切至货币ETF(511880)。
📌 温馨提示:任何策略都有其适用的市场环境。个人拙见:五福策略在趋势明确的市场中表现优异,但策略包含多个固定参数,这些参数基于历史数据优化,未来市场风格变化可能导致表现差异。建议实盘前充分理解策略逻辑,并用小资金验证。投资有风险,决策需谨慎。
获取方式
我们已将"五福ETF聚宽"完整适配至 ptrade 环境
- 关注量化星图公众号,并回复"五福ETF" 即可获得聚宽全部源代码。
- 加入量化星图知识星球,即可获得"五福ETF"Ptrade源代码及十余个精选量化策略。