QQQ ETF轮动小助手
致力于提升QQQ ETF投资的alpha收益
📌 数据口径与无未来数据声明: 本系统所有溢价率严格采用日终近似口径:溢价率(%) = (收盘价 / 同日单位净值 - 1) × 100(注:非盘中实时 IOPV 溢价率)。 回测与推荐严格杜绝未来数据泄露,$t$ 日收盘后观测溢价差并生成信号,严格在 $t+1$ 交易日生效执行。本系统仅供量化策略研究,不构成任何投资承诺与交易建议。
📡 溢价波动监控中心
历史视图按日终口径:溢价率 = (收盘价 / 同日单位净值 − 1) × 100; 当日视图按盘中口径:实时溢价率 = (现价 / IOPV − 1) × 100,随行情逐分钟采样沉淀为当日分时曲线。
🖱️ 图表交互:在 Y 轴刻度区上下拖动可拉伸/压缩纵向比例(两条曲线贴得近时可拉开看清), 拖动时刻度条高亮并浮现「放大/缩小 ×倍率 · 量程」气泡;在刻度区滚轮同样缩放、 双击刻度区缓动回弹恢复自适应量程;在绘图区内横向拖动可划段查看区间统计。 溢价率图(历史与分时)上的白色虚线为 10% 溢价率警戒线(QDII 溢价破 10% 多与限购/额度紧张相关)。
模式
基准
窗口
📊 各标的溢价统计(当前窗口)
代码基金名称 最新溢价率 均值 最大 最高点回撤 最小 20% 分位 80% 分位 当前百分位 方差 有效天数
① 溢价差模式:Spread = 该标的溢价率 − 基准标的溢价率(同日相减,基准自身不参与); ② 分位为线性插值口径,与「单对深度研究」页一致;缺失数据显示 --,绝不以 0 兜底; ③ 历史数据来源:本系统自行采集的行情与官方净值严格同日对齐(缺失留空,绝不以 0 兜底); ④ 划段统计:按住鼠标左键在图上拖一段,图下方显示区间内各标的溢价差的涨跌(起点 → 终点、涨跌幅);双击图表清除。
⏱️ 数据采集定时任务
--
按日采集
日行情 K 线 + 官方单位净值 → 重算溢价率
每日
加载中…
当日分钟采集
收盘快照 + 当日分钟溢价率全量回补
每日
加载中…
由后端守护线程按北京时间到点自动触发,服务运行期间无需人工干预;每个任务每天自动执行一次, 执行结果持久化在系统配置里,重启不会重复触发。若服务在计划时间之后才启动、且当天尚未执行,会补跑一次。 当日分钟采集与「溢价监控-当日实时」共用同一张采样表(按 code + 日期 + 分钟去重),互不冲突。
📡 数据采集与质量审计监控中心
代码 基金名称 市场 跟踪基准 历史起止区间 总天数 有效天数 缺失率 质量状态 管理操作
🏆 全市场 66 组配对量化排名矩阵 66 组配对
ETF A vs ETF B 最新溢价 A 最新溢价 B 当前溢价差 累计超额收益 年化超额收益 年初至今收益 夏普比率 最大回撤 均值回归分 半衰期 超额胜率 切换次数 稳健综合评分
🎯 当前持仓切换实时决策推荐
持仓角色:L 标的(低溢价侧)
正在分析当前持仓与所有候选标的的实时溢价差...
📖 这些数据是什么意思?「规则未触发」代表什么?(点击展开)
① 核心量:溢价差 Spread

本模块把当前持仓记为 A、候选标的记为 B,逐个配对测算。 页面顶部的「持仓角色」开关决定溢价差的展示方向(默认 L 标的):

持仓 = L 标的(低溢价侧,默认):溢价差 = 候选标的溢价率 − 当前持仓溢价率
持仓 = H 标的(高溢价侧):溢价差 = 当前持仓溢价率 − 候选标的溢价率

切换开关时 L / H 分位阈值随之镜像,但触发判定语义完全一致:始终是 「当前持仓相对候选标的过热 → 换入候选标的」,与历史回测同源,因此累计超额、稳健评分等回测指标不受开关影响。

② 判定规则(双阈值状态机)
  • 持仓 = H 标的:Spread ≥ H 当前持仓溢价明显高于候选 → 触发换仓信号 SWITCH(换入候选)。
  • 持仓 = L 标的:Spread ≤ L 持仓相对候选的低溢价优势已收敛/反转 → 同样触发 SWITCH(换入候选)。两种口径下触发判定等价。
  • 安全区 持仓 = H 标的时 Spread ≤ L、或持仓 = L 标的时 Spread ≥ H → 持仓处于低溢价优势区,继续持有。
  • L < Spread < H 落在中间观望区间 → 规则未触发 (HOLD),维持现有持仓。
③ 「规则未触发 (HOLD)」到底是什么?

它不是算错、也不是没数据,而是说明:当前溢价差落在 [L, H] 的中间区间内, 既没突破换出条件,也没跌到换入条件,因此今天不需要做任何操作。 系统宁可不给信号,也不会为了「凑一个推荐」而虚构调仓动作。

与它并列的另两种状态:⚡ 策略信号已触发 (SWITCH)、 证据不足(共同历史不足 60 日,或当日净值/收盘价缺失)。

④ 卡片各字段含义
当前持仓溢价 / 目标溢价两只 ETF 各自的当日溢价率(收盘价相对单位净值)。
实时溢价差两者之差,即上文 Spread —— 是触发判定的唯一依据。展示方向由顶部「持仓角色」开关决定(L 标的 = 目标 − 持仓;H 标的 = 持仓 − 目标)。
累计超额该配对历史回测中,轮动策略净值相对「始终持有当前持仓」的净值增量(已扣手续费与滑点)。
年初至今收益轮动策略净值今年以来的累计收益(今年首个交易日前一交易日 → 最新交易日)。注意它是 绝对收益、非年化,与上方「累计超额」口径不同:它包含纳指 beta,两只同源 ETF 的数值会非常接近。回测窗口未覆盖今年年初(如选「最近 60 天」)时显示 --。
夏普比率策略净值的年化夏普比率,衡量风险调整后的表现。
稳健评分5 项异质指标归一化加权后的综合分(0–100),越高越稳健。权重见「参数配置」页的 5 个滑块(自动归一化);任一指标算不出来按其 0 分计入,不给中性保底。
⑤ 阈值 L / H 取自哪里?

本模块的 L / H 每只候选各自计算:取该配对在所选历史窗口(右上角 60 / 120 / 250 交易日)内 溢价差的分位值。分位比例由「参数配置」页的「分位阈值」统一控制, 当前生效 --,全平台生效; 具体数值见每张卡片的标尺与上方横幅。

🔬 单对纳指 ETF 溢价差轮动深度回测
vs
⚙️ 调仓阈值 L / H 分位自适应
当前区间分位参考:-- 分位 = -- | -- 分位 = --
默认取当前所选区间溢价差分布的分位值作为低阈值 L 与高阈值 H, 分位比例由「参数配置」页统一设定(当前 --,全平台生效)。 可直接修改上方 L / H 覆盖默认值;修改会被记录,下次打开页面自动恢复, 同时仍会保留分位数值供对照。
累计超额收益
--
年化超额收益
--
年化夏普比率
--
历史最大回撤
--
历史换仓次数
--
超额胜率
--
稳健综合评分
--
超额收益基准 = 始终持有 A(不切换)。累计超额为复合口径且已扣除手续费与滑点; 「本段超额」为单段简单差,不含费用。绝对年化收益不展示——同类纳指 ETF 高度同源,该数值只反映纳指 beta。
📋 历史调仓与换仓执行流水(严格 $t$ 日收盘信号 ➔ $t+1$ 日执行扣费)
每行的「本段」= 本次切换实际开启的那段持仓期,超额收益 = 本段持有标的收益 − 本段另一只标的收益, 即这笔切换究竟选对了多少。
序号 信号触发日 实际执行日 卖出标的 买入标的 触发时价差 执行时价差 本段持仓天数 本段持有收益 本段对照收益 本段超额收益 本段策略收益
⚙️ 策略与回测核心参数配置
L = 溢价差该分位值(默认 20);配对排名 / 持仓推荐 / 单对研究自适应全平台生效
H = 溢价差该分位值(默认 80);须严格大于下界
作为各页面上「时间窗口」的初始值;可选「自定义区间」并指定起止日期
默认万分之五 (0.0005)
默认万分之五 (0.0005)
夏普比率的风险基准,非切换超额收益口径 (默认 0.02)
时间先后切分 (默认 0.70 为前70%)
🎛️ 稳健综合评分 5 维度权重配置 (自动归一化处理)

评分 = Σ(维度得分 × 权重) ÷ Σ权重,滑块之和不必等于 1,系统按权重和归一化。 任一维度算不出来(数据不足)按 0 分计入,不再给「中性 50 分」——避免缺数据反而占便宜。
「数据充足度」已移除:它只反映窗口长短,会系统性压低短窗口配对;数据够不够不再折算成分数, 只在「能否参与评估」这一层生效(两只标的共同有效交易日 < 10 天的配对直接跳过)。
「多窗口稳定性」已移除:观察窗口本来就由你自己选(60 / 120 / 250 / 自定义),选定后本就在该窗口内单独回测, 再叠一层跨窗口一致性等于拿你没选的窗口来扣分。

防过拟合的收益维度,用于稳健评分内部计算(与界面展示字段无关)
25%
20%
15%
10%
5%
🖥️ 抓取与回测实时审计日志
🔔 消息推送提醒
盘中每 10 秒检查一次:实时溢价差(A − B)满足触发条件(大于/小于阈值)即推送(边沿触发,回到阈值内自动复位)
pushplus 推送通道 当前 token: -- 前往 pushplus 获取 token ↗
token 只保存在你的账号里,界面上永远只显示前 4 位;保存后请务必点「发送测试消息」确认能收到。
推送规则 0 / 3
新增规则: − %
📨 推送历史
时间规则当时差值阈值结果说明
👥 用户管理
角色:普通用户 < VIP(可用推送)< 超管(全部菜单)。VIP 由超管手动授予/回收。
ID用户名角色推送规则数注册时间最近登录操作