金融, 统计

滚动分位数quantile

Rolling Quantile

指标解读|滚动分位数指标:洞察价格分布结构的关键工具 在金融数据分析与量化交易中,除了常见的移动平均线、波动率指标外,“分位数”这个统计学概念正在被越来越多专业投资者所关注。而在时间序列中引入分位数计算,就诞生了一个更强大、更灵活的工具 —— 滚动分位数指标(Rolling Quantile)。 一、什么是滚动分位数指标? 滚动分位数(Rolling Quantile)是对金融时间序列进行窗口式分位数运算的指标。它可用于识别在过去 N 天内,价格在哪个分布位…

指标解读|滚动分位数指标:洞察价格分布结构的关键工具

在金融数据分析与量化交易中,除了常见的移动平均线、波动率指标外,“分位数”这个统计学概念正在被越来越多专业投资者所关注。而在时间序列中引入分位数计算,就诞生了一个更强大、更灵活的工具 —— 滚动分位数指标(Rolling Quantile)。


一、什么是滚动分位数指标?

滚动分位数(Rolling Quantile)是对金融时间序列进行窗口式分位数运算的指标。它可用于识别在过去 N 天内,价格在哪个分布位置上,如是否处于高位(上分位)、中位(中值)或低位(下分位)。

📘 数学定义:

$$ Qt^{(q)} = \text{Quantile}\left(P{t - n + 1}, ..., P_t; q\right) $$

  • $Q_t^{(q)}$:第 $t$ 天,第 $q$ 分位数的值
  • $n$:窗口长度
  • $q$:分位数水平(例如 0.25 表示下四分位,0.5 是中位数)

二、pandas_ta 中的 quantile() 函数使用方法

pandas_ta 是一个功能强大的 Python 技术分析库,其 quantile() 函数可以非常高效地计算滚动分位数指标。

📌 函数调用示例:

import pandas_ta as ta

# 计算过去30日的0.25分位线
df["Q25"] = ta.quantile(df["close"], length=30, q=0.25)

🛠️ 参数说明:

参数名 类型 描述 默认值
close Series 收盘价序列 必填
length int 计算滚动分位数的窗口长度 30
q float 分位点,范围 0\~1(如 0.5) 0.5
offset int 数据偏移量,适用于前移后移对齐 0

三、可视化分析:滚动分位线揭示价格结构

通过绘制不同水平的滚动分位数曲线(如 Q25、Q50、Q75),我们可以获得市场的价格分布结构,从而辅助判断价格的“极端”程度或趋势强度。

📈 示例代码:

df["Q25"] = ta.quantile(df["close"], length=30, q=0.25)
df["Q50"] = ta.quantile(df["close"], length=30, q=0.5)
df["Q75"] = ta.quantile(df["close"], length=30, q=0.75)

plt.figure(figsize=(12,6))
plt.plot(df["close"], label="收盘价", color="gray")
plt.plot(df["Q25"], label="Q25", linestyle="--", color="blue")
plt.plot(df["Q50"], label="Q50 中位线", color="green")
plt.plot(df["Q75"], label="Q75", linestyle="--", color="red")
plt.fill_between(df.index, df["Q25"], df["Q75"], alpha=0.1, color="orange", label="中间50%价格区间")
plt.title("滚动分位数指标:30日窗口")
plt.legend()
plt.show()

✅ 通过这样的图表,你可以直观地看到:

  • 当前价格是否处于相对高位(> Q75)或低位(< Q25);
  • 中间50%价格波动区间,作为支撑/阻力带参考;
  • 分位区间变化是否收窄(趋势减弱)或扩张(波动增强)。

四、实战应用:滚动分位数在量化策略中的用法

1️⃣ 均值回归策略(基于分位带)

  • 当价格低于 Q25 且 RSI 超卖 → 买入机会;
  • 当价格高于 Q75 且 RSI 超买 → 卖出机会。

2️⃣ 趋势过滤器

  • 当价格长期运行于 Q75 上方,可能为强趋势行情;
  • 价格穿越 Q50(中位线)方向可用于趋势反转识别。

3️⃣ 分布视角辅助风险控制

  • 高波动期,Q25 与 Q75 的间距扩大;
  • 稳定震荡期,该间距收窄。

五、滚动分位数 VS 滚动中位数 VS 滚动平均

指标 特点 适用场景
滚动分位数 任意分位线,适用于分布分析 极端价格识别、支撑阻力分析
滚动中位数 特殊的0.5分位数 价格中枢识别、抗离群值能力强
简单移动平均 整体平滑 趋势判断、短期均值参考

📌 补充说明:滚动分位数更强调“分布统计特征”,比均值类指标在结构识别上更敏感,也更适合构建多指标并联系统


六、结语:在分布中寻找交易节奏

金融市场的波动不是随机的,而是具有一定结构的概率分布。滚动分位数指标正是理解这种结构的钥匙之一。它让我们得以在价格的时间窗口中,衡量当前位置是“高位”还是“低位”,是“常态”还是“极端”。

无论你是构建策略、回测系统,还是做实时交易信号过滤,使用 pandas_taquantile() 函数计算滚动分位线,都是非常可靠和高效的方式。