文章

将指数增长时间序列数据转换为有界低噪信号

将指数增长时间序列数据转换为有界低噪信号
  • todo: 增加例子(处理结果的图片)
  • todo: 审阅

金融市场中大量变量具有长期指数增长特征,例如标普 500 指数、股票总市值、广义货币供应量 M2、融资债务余额以及居民和企业部门杠杆。此类序列通常具有以下形式:

\[Y_t \approx Y_0 \exp(g t + u_t)\]

其中,$g$ 表示长期复合增长率,$u_t$ 表示周期波动、风险偏离和短期噪声。

直接分析 $Y_t$ 往往没有意义,因为序列水平主要反映长期增长和价格尺度,而不是当前所处的金融状态。常见做法是计算对数差分:

\[r_t = \ln Y_t - \ln Y_{t-1}\]

对数差分可以消除指数趋势,但会暴露高频噪声、异方差和极端跳跃。更重要的是,$r_t$ 在数学上没有边界,因此很难直接作为跨时期、跨资产或跨变量的统一状态指标。

构造“有界且低噪”的金融信号,不应依赖某一种孤立技术,而应将问题拆分为四个步骤:

\[\text{正值变换} \rightarrow \text{趋势分离} \rightarrow \text{噪声抑制} \rightarrow \text{稳健有界化}\]

这一框架同时适用于价格类序列和宏观金融存量类序列,但不同数据类型应使用不同的趋势与噪声模型。


一、问题定义:有界与低噪分别意味着什么

1. 有界性

设最终构造的指标为 $I_t$。严格有界意味着存在有限常数 $a$ 和 $b$,使得:

\[a < I_t < b\]

例如,双曲正切函数可将任意实数映射到 $(-1,1)$:

\[I_t = \tanh(x_t)\]

百分位秩则可将序列映射到 $[0,1]$:

\[I_t = \frac{\operatorname{rank}(x_t)}{N}\]

需要区分“严格有界”和“统计意义上的软有界”。滚动 Z-Score:

\[z_t = \frac{x_t-\mu_t}{\sigma_t}\]

通常集中于有限区间,但理论上仍然属于整个实数轴,因此并非严格有界。

2. 低噪性

低噪不等于简单地让曲线更平滑。一个有效的低噪指标应尽可能保留经济上有意义的中低频变化,同时抑制以下成分:

  • 市场微观结构噪声;
  • 单期异常值;
  • 波动率聚集造成的振幅膨胀;
  • 数据修订、节假日和季节因素;
  • 不具有持续性的短期跳跃。

从信号处理角度,可以将观测序列写为:

\[x_t = s_t + \varepsilon_t\]

其中,$s_t$ 是目标状态信号,$\varepsilon_t$ 是短期噪声。所谓降噪,就是估计 $\hat{s}_t$,而不是机械地减小 $x_t$ 的波动幅度。

3. 有界与低噪是两个不同目标

平滑不能自动产生有界性。例如,移动平均后的收益率仍然可能出现任意大的数值。

同样,有界化也不能自动降噪。例如,对原始日收益率直接应用 $\tanh$,虽然输出落在 $(-1,1)$,但仍可能呈现高频正负翻转。

因此,较合理的顺序通常是:

\[\text{先提取低噪状态} \rightarrow \text{再进行稳健缩放} \rightarrow \text{最后映射到有限区间}\]

二、统一模型:趋势、状态与观测噪声

对正值金融序列先取自然对数:

\[y_t = \ln Y_t\]

随后将其分解为:

\[y_t = \tau_t + c_t + \varepsilon_t\]

其中:

  • $\tau_t$ 是长期增长趋势;
  • $c_t$ 是具有经济意义的周期或偏离状态;
  • $\varepsilon_t$ 是高频观测噪声。

最终希望得到的指标可以统一写成:

\[I_t = B\left( \frac{\hat{c}_t-m_t}{s_t} \right)\]

其中:

  • $\hat{c}_t$ 是经过趋势分离和降噪后的状态估计;
  • $m_t$ 是滚动位置参数;
  • $s_t$ 是滚动尺度参数;
  • $B(\cdot)$ 是有界映射函数。

这一表达式涵盖了多数实用方法。不同技术之间的差异,主要在于如何估计 $\hat{c}_t$、$m_t$ 和 $s_t$。


三、第一步:对数化与经济尺度消除

1. 为什么优先对正值序列取对数

对于指数增长序列:

\[Y_t = Y_0 e^{g t}\]

取对数后得到线性趋势:

\[\ln Y_t = \ln Y_0 + g t\]

这会带来三个好处。

第一,对数将绝对变化转化为相对变化。例如,$Y_t$ 从 $100$ 增长到 $110$,与从 $1{,}000$ 增长到 $1{,}100$,具有近似相同的对数变化。

第二,对数通常可以缓解随水平增长而扩大的异方差。

第三,对数能够使长期趋势更接近线性或低阶平滑过程,便于滤波和状态空间建模。

2. 比率变量仍可能需要对数化

对于杠杆债务与 M2 的比率:

\[L_t = \frac{D_t}{M_t}\]

可以直接分析 $L_t$,也可以分析对数比率:

\[\ell_t = \ln D_t - \ln M_t\]

对数比率具有清晰的增长率解释:

\[\Delta \ell_t = \Delta \ln D_t - \Delta \ln M_t\]

即债务增长率相对于货币供应增长率的差值。

如果研究目标是“债务扩张是否快于基础流动性”,$\ell_t$ 通常比单独处理 $D_t$ 更有经济含义。


四、第二步:趋势分离,而不是直接高阶差分

1. 对数差分适用于价格,但不一定适用于宏观存量

对于流动性较高的市场价格,日对数收益率:

\[r_t = \Delta \ln P_t\]

是自然的分析对象。价格水平通常接近随机趋势,直接去除长期确定性趋势未必合理。

但对于 M2、总市值、融资债务等缓慢变化的存量变量,一阶差分可能过度强调数据修订和单期变化。此时更适合估计长期趋势 $\tau_t$,然后分析偏离项:

\[c_t = \ln Y_t - \tau_t\]

$c_t$ 可解释为当前变量相对于长期复合增长路径的高估或低估程度。

2. 平滑趋势模型

一种通用做法是用平滑器 $S_\lambda$ 估计趋势:

\[\hat{\tau}_t = S_\lambda(y_t)\]

然后定义周期状态:

\[\hat{c}_t = y_t-\hat{\tau}_t\]

$S_\lambda$ 可以是:

  • 指数移动平均;
  • 局部多项式回归;
  • 平滑样条;
  • Hodrick–Prescott 滤波;
  • 状态空间趋势模型;
  • 小波低频重构。

不同方法并不存在普遍最优选择。核心是使趋势的时间尺度显著长于目标风险周期。

3. HP 滤波的适用边界

HP 滤波通过求解以下优化问题分离趋势:

\[\min_{\{\tau_t\}_{t=1}^T} \sum_{t=1}^{T}(y_t-\tau_t)^2 + \lambda \sum_{t=2}^{T-1} \left[ (\tau_{t+1}-\tau_t)-(\tau_t-\tau_{t-1}) \right]^2\]

第一项要求趋势接近原序列,第二项惩罚趋势增长率的变化。

HP 周期项为:

\[c_t = y_t-\tau_t\]

它通常围绕零波动,但并不严格有界。其主要问题包括端点偏差、参数敏感性和潜在的伪周期。因此,HP 滤波适合构造描述性宏观指标,但在实时交易或拐点识别中应谨慎使用。

4. 状态空间趋势模型

更系统的做法是将趋势建模为隐藏状态。例如,局部线性趋势模型可写为:

\[\begin{aligned} y_t &= \tau_t+\varepsilon_t \\ \tau_t &= \tau_{t-1}+g_{t-1}+\eta_t \\ g_t &= g_{t-1}+\zeta_t \end{aligned}\]

其中,$\tau_t$ 是趋势水平,$g_t$ 是潜在增长率。卡尔曼滤波可以同时估计两者。

相较于固定窗口均线,状态空间模型能够根据观测噪声与状态噪声的相对大小,自适应地决定平滑程度。


五、第三步:针对目标频率进行降噪

1. 平滑后差分

对于需要估计“平滑增长率”的场景,可以先平滑对数水平,再计算变化:

\[\tilde{y}_t = S_\lambda(\ln Y_t)\] \[g_t = \tilde{y}_t-\tilde{y}_{t-h}\]

其中,$h$ 是变化率期限。

这种方法比直接计算 $\ln Y_t-\ln Y_{t-h}$ 更平滑,但会产生一定滞后。$h$ 越大,短期噪声越弱,同时拐点响应越慢。

2. TRIX 作为平滑增长率

TRIX 可以写为三重指数平滑后的对数变化率:

\[\begin{aligned} E_t^{(1)} &= \operatorname{EMA}(Y_t,n) \\ E_t^{(2)} &= \operatorname{EMA}(E_t^{(1)},n) \\ E_t^{(3)} &= \operatorname{EMA}(E_t^{(2)},n) \end{aligned}\]

最终信号为:

\[x_t = \ln E_t^{(3)}-\ln E_{t-1}^{(3)}\]

TRIX 本质上是一个强低通滤波器与差分算子的组合。它适合构造低频动量指标,但不适合要求快速识别反转的应用。

3. 长短均线差作为带通近似

对数水平上的长短均线差为:

\[x_t = \operatorname{EMA}(\ln Y_t,n_s) - \operatorname{EMA}(\ln Y_t,n_l)\]

其中,$n_s<n_l$。

该结构会抑制长期趋势,也会削弱最高频噪声,因此可视为一种近似带通滤波器。它衡量的是短期路径相对于长期路径的偏离,而不是单期收益率。

为减少不同波动阶段下的振幅差异,还应继续进行尺度标准化。

4. 小波多尺度降噪

小波分解可将序列写为不同尺度分量之和:

\[y_t = A_{J,t} + \sum_{j=1}^{J}D_{j,t}\]

其中,$A_{J,t}$ 是低频近似项,$D_{j,t}$ 是第 $j$ 个尺度的细节项。

可以丢弃最高频细节项:

\[\tilde{y}_t = A_{J,t} + \sum_{j=j_0}^{J}D_{j,t}\]

该方法适合存在明显多尺度结构的数据,但应注意小波边界处理、基函数选择和前视偏差。直接将小波方法解释为“重整化群”通常只是一种类比,不应替代严格的统计检验。

5. 卡尔曼滤波估计潜在增长率

对于价格或存量变量,可以直接将潜在增长率建模为缓慢变化的隐藏状态:

\[\begin{aligned} r_t &= \mu_t+\varepsilon_t \\ \mu_t &= \rho\mu_{t-1}+\eta_t \end{aligned}\]

其中,$r_t$ 是观测到的变化率,$\mu_t$ 是低噪潜在增长率。

卡尔曼滤波输出的 $\hat{\mu}_t$ 可作为后续标准化和有界化的输入。其优势在于模型结构明确;缺点是依赖线性、高斯和参数稳定性假设。


六、第四步:稳健尺度标准化

1. 普通滚动 Z-Score

设降噪后的状态为 $x_t$,滚动 Z-Score 为:

\[z_t = \frac{x_t-\bar{x}_{t,N}} {s_{t,N}}\]

其中,$\bar{x}{t,N}$ 和 $s{t,N}$ 分别是过去 $N$ 期的均值和标准差。

这一变换可以消除局部尺度差异,但均值与标准差本身容易受到极端值影响。在金融厚尾分布下,单次崩盘可能同时改变分子和分母,使指标在较长时间内失真。

2. 中位数与 MAD 标准化

更稳健的方案是使用滚动中位数和中位绝对偏差:

\[m_t = \operatorname{median} \left( x_{t-N+1},\ldots,x_t \right)\] \[\operatorname{MAD}_t = \operatorname{median} \left( \left|x_i-m_t\right| \right)\]

稳健标准分数定义为:

\[z_t^{(r)} = \frac{x_t-m_t} {1.4826\,\operatorname{MAD}_t+\epsilon}\]

常数 $1.4826$ 用于在正态分布下使 MAD 与标准差具有近似相同的尺度,$\epsilon$ 用于避免分母为零。

相较于普通 Z-Score,该方法对单期异常值和跳跃更稳定。

3. 波动率标准化

对于价格收益率,可以用条件波动率进行标准化:

\[z_t = \frac{r_t}{\hat{\sigma}_t}\]

$\hat{\sigma}_t$ 可以通过滚动波动率、EWMA 或 GARCH 模型估计。

EWMA 方差递推为:

\[\hat{\sigma}_t^2 = \lambda\hat{\sigma}_{t-1}^2 + (1-\lambda)r_{t-1}^2\]

该处理并不直接减少时间频率上的噪声,但可以降低波动率聚集造成的振幅不稳定,使不同时期的信号更可比。


七、第五步:将标准化状态映射到有限区间

1. Tanh 有界映射

最常用的平滑有界函数是:

\[I_t = \tanh\left(\frac{z_t}{\alpha}\right)\]

其中,$\alpha>0$ 控制压缩速度。

当 $z_t$ 接近零时:

\[\tanh\left(\frac{z_t}{\alpha}\right) \approx \frac{z_t}{\alpha}\]
因此,小幅变化近似保持线性。随着 $z_t$ 增大,输出逐渐饱和于 $-1$ 或 $1$。

$\alpha$ 较小会使指标更快饱和,适合强调状态方向;$\alpha$ 较大则保留更多极端程度信息。

2. Logistic 映射

若希望输出位于 $(0,1)$,可以使用:

\[I_t = \frac{1} {1+\exp(-z_t/\alpha)}\]

该指标可解释为归一化状态强度,但不能在不建立概率模型的情况下直接解释为事件发生概率。

3. 滚动经验分布与百分位秩

滚动经验分布变换为:

\[I_t = \frac{1}{N} \sum_{i=t-N+1}^{t} \mathbf{1}(x_i\leq x_t)\]

其输出位于 $[0,1]$。

百分位秩具有三个明显特点:

  • 不依赖正态分布假设;
  • 不受异常值绝对幅度支配;
  • 输出具有直接的历史相对位置解释。

但百分位秩会丢失幅度信息。例如,历史最高值与远超历史水平的极端值都接近 $1$。此外,当窗口较短或数据存在大量重复值时,指标可能出现阶梯状跳变。

4. Winsorization 与 Tanh 的区别

截尾处理可以写为:

\[x_t^{(w)} = \min\left\{\max(x_t,q_l),q_u\right\}\]

其中,$q_l$ 和 $q_u$ 是滚动分位数阈值。

Winsorization 是硬截断,会在边界处产生不可微的平坦区;$\tanh$ 是连续、平滑的软压缩。对大多数连续信号建模任务,稳健标准化后接 $\tanh$ 通常更自然。


八、推荐的统一指标

综合前述步骤,一个实用的有界低噪指标可以定义为:

\[\begin{aligned} y_t &= \ln Y_t \\ x_t &= F(y_{1:t}) \\ z_t &= \frac{x_t-m_t}{1.4826\,\operatorname{MAD}_t+\epsilon} \\ I_t &= \tanh\left(\frac{z_t}{\alpha}\right) \end{aligned}\]

其中,$F(\cdot)$ 是根据数据类型选择的趋势分离或滤波算子。

该框架具有明确分工:

  • $\ln(\cdot)$ 处理指数尺度;
  • $F(\cdot)$ 提取目标频率上的经济状态;
  • MAD 标准化处理时变尺度和异常值;
  • $\tanh$ 提供严格边界。

最终指标满足:

\[-1<I_t<1\]

并可作如下解释:

  • $I_t\approx 0$:处于近期正常状态;
  • $I_t>0$:高于趋势或增长偏强;
  • $I_t<0$:低于趋势或增长偏弱;
  • $I_t\rightarrow 1$:进入历史上较极端的状态。

必须注意,接近边界表示“经模型归一化后的极端状态”,不一定表示价格即将反转或金融危机即将发生。


九、例一:标普 500 的低噪有界动量

1. 目标

对于标普 500 日价格 $P_t$,目标不是分析价格相对于某条确定性指数趋势的偏离,而是估计中期风险调整动量。

可以先计算 $h$ 日对数收益率:

\[r_t^{(h)} = \ln P_t-\ln P_{t-h}\]

然后用 EWMA 波动率标准化:

\[z_t = \frac{r_t^{(h)}} {\hat{\sigma}_t\sqrt{h}}\]

为了进一步抑制短期翻转,可以对 $z_t$ 进行平滑:

\[\tilde{z}_t = \operatorname{EMA}(z_t,n)\]

最后有界化:

\[I_t = \tanh\left(\frac{\tilde{z}_t}{\alpha}\right)\]

该指标衡量的是“经过波动率调整和平滑后的中期动量状态”。

2. 参数示例

对于日频数据,可以选择:

  • 收益期限 $h=21$,约对应一个交易月;
  • 平滑期限 $n=10$;
  • EWMA 衰减参数 $\lambda=0.94$;
  • 压缩参数 $\alpha=2$。

这些参数不具有普遍最优性。它们决定了指标关注的时间尺度,应通过样本外稳定性而不是样本内收益最大化来选择。

3. Python 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import numpy as np
import pandas as pd


def bounded_price_momentum(
    price: pd.Series,
    horizon: int = 21,
    smooth_span: int = 10,
    volatility_span: int = 42,
    alpha: float = 2.0,
    epsilon: float = 1e-8,
) -> pd.DataFrame:
    """
    Construct a bounded, volatility-adjusted momentum indicator.

    Parameters
    ----------
    price:
        Positive price series indexed by date.
    horizon:
        Return horizon in observations.
    smooth_span:
        EMA span applied to standardized returns.
    volatility_span:
        EWMA span used to estimate daily volatility.
    alpha:
        Tanh compression parameter.
    epsilon:
        Numerical floor for volatility.

    Returns
    -------
    DataFrame containing log price, return, volatility,
    standardized state, smoothed state and bounded indicator.
    """
    if (price <= 0).any():
        raise ValueError("Price observations must be strictly positive.")

    log_price = np.log(price)
    daily_return = log_price.diff()
    horizon_return = log_price.diff(horizon)

    daily_variance = daily_return.pow(2).ewm(
        span=volatility_span,
        adjust=False,
    ).mean()

    horizon_volatility = np.sqrt(
        daily_variance.clip(lower=epsilon) * horizon
    )

    standardized = horizon_return / horizon_volatility
    smoothed = standardized.ewm(
        span=smooth_span,
        adjust=False,
    ).mean()

    bounded = np.tanh(smoothed / alpha)

    return pd.DataFrame(
        {
            "log_price": log_price,
            "horizon_return": horizon_return,
            "horizon_volatility": horizon_volatility,
            "standardized": standardized,
            "smoothed": smoothed,
            "bounded_indicator": bounded,
        }
    )

这一方案适合价格动量,但不应直接套用到低频宏观存量,因为宏观存量中的噪声结构、趋势性质和发布频率均不同。


十、例二:杠杆债务相对于 M2 的偏离指标

1. 构造经济上有意义的基础序列

设杠杆债务余额为 $D_t$,M2 为 $M_t$。首先构造对数杠杆比率:

\[\ell_t = \ln D_t-\ln M_t\]

$\ell_t$ 上升意味着债务相对于货币供应扩张,$\ell_t$ 下降意味着债务扩张弱于 M2。

2. 提取长期趋势偏离

使用平滑趋势 $\tau_t$:

\[\tau_t = S_\lambda(\ell_t)\]

周期偏离为:

\[c_t = \ell_t-\tau_t\]

如果 $c_t>0$,说明债务与 M2 的相对关系高于其长期路径;如果 $c_t<0$,则低于长期路径。

对于月度或季度数据,可以选择平滑样条、HP 滤波或状态空间模型。若指标用于实时决策,应优先考虑单边滤波,避免使用未来数据估计当前趋势。

3. 稳健标准化与有界化

使用滚动中位数和 MAD:

\[z_t^{(r)} = \frac{c_t-\operatorname{median}_N(c_t)} {1.4826\,\operatorname{MAD}_N(c_t)+\epsilon}\]

最终指标为:

\[I_t = \tanh\left(\frac{z_t^{(r)}}{\alpha}\right)\]

此时,$I_t$ 表示债务相对于 M2 的趋势偏离在历史分布中的稳健标准化位置。

4. Python 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import numpy as np
import pandas as pd


def rolling_robust_zscore(
    series: pd.Series,
    window: int,
    epsilon: float = 1e-8,
) -> pd.Series:
    rolling_median = series.rolling(window).median()

    rolling_mad = series.rolling(window).apply(
        lambda values: np.median(
            np.abs(values - np.median(values))
        ),
        raw=True,
    )

    scale = (1.4826 * rolling_mad).clip(lower=epsilon)
    return (series - rolling_median) / scale


def bounded_leverage_indicator(
    debt: pd.Series,
    m2: pd.Series,
    trend_span: int = 60,
    normalization_window: int = 120,
    alpha: float = 2.0,
) -> pd.DataFrame:
    """
    Construct a bounded indicator for debt relative to M2.

    All input series must use the same frequency and units must be
    economically consistent.
    """
    data = pd.concat(
        {"debt": debt, "m2": m2},
        axis=1,
    ).dropna()

    if (data <= 0).any().any():
        raise ValueError("Debt and M2 must be strictly positive.")

    log_ratio = np.log(data["debt"]) - np.log(data["m2"])

    trend = log_ratio.ewm(
        span=trend_span,
        adjust=False,
    ).mean()

    deviation = log_ratio - trend

    robust_z = rolling_robust_zscore(
        deviation,
        window=normalization_window,
    )

    bounded = np.tanh(robust_z / alpha)

    return pd.DataFrame(
        {
            "log_ratio": log_ratio,
            "trend": trend,
            "deviation": deviation,
            "robust_z": robust_z,
            "bounded_indicator": bounded,
        }
    )

该示例使用 EMA 作为单边趋势估计,因此不会引入未来数据。若用于历史研究,可以将趋势模块替换为平滑样条或双边滤波;若用于实时监控,则必须保持因果性。


十一、不同方法在统一框架中的位置

1. 分数差分

分数差分定义为:

\[(1-L)^d y_t = \sum_{k=0}^{\infty} w_k y_{t-k}\]

其权重满足:

\[w_0=1\] \[w_k = -w_{k-1} \frac{d-k+1}{k}\]

当 $0<d<1$ 时,分数差分介于原始水平和一阶差分之间。它的主要目标是在提高平稳性的同时保留部分长期记忆。

但分数差分本身既不保证低噪,也不保证有界。它应被视为趋势处理算子 $F(\cdot)$ 的一种选择,后续仍需要稳健标准化和有界映射:

\[I_t = \tanh\left( \frac{ (1-L)^d y_t-m_t }{ \alpha s_t } \right)\]

2. HP 滤波

HP 滤波属于趋势分离模块,产生的周期项并不严格有界。正确的组合是:

\[\text{Log HP 周期项} \rightarrow \text{稳健标准化} \rightarrow \tanh\]

而不是将 HP 周期项本身视为有界指标。

3. TRIX 与 MACD

TRIX 和 MACD 类结构属于滤波或状态提取模块。它们能够降低高频噪声,但输出振幅受原序列波动状态影响,因此仍应进行滚动尺度标准化。

4. 小波方法

小波属于多尺度降噪模块。小波系数经过能量归一化后不一定自然落入 $[-1,1]$,除非明确使用满足该边界的归一化公式。更稳健的做法仍然是对重构状态进行滚动标准化和有界映射。

5. Hurst 指数与 DFA

Hurst 指数描述序列的尺度依赖和持久性,而不是水平偏离或增长速度。理论上的 Hurst 参数通常位于 $(0,1)$,但有限样本估计值可能存在偏差,某些估计程序甚至可能产生区间外结果。

因此,局部 Hurst 指数适合作为独立的市场结构特征,不宜直接替代债务偏离、估值偏离或风险调整动量指标。

6. Jacobi 过程

Jacobi 扩散满足:

\[dX_t = \kappa(\theta-X_t)dt + \sigma\sqrt{X_t(1-X_t)}dW_t\]

在适当参数和边界条件下,$X_t$ 可以保持在 $[0,1]$。但将一个经验金融指标通过非线性函数映射到 $[0,1]$,并不意味着该指标服从 Jacobi 过程。

若要使用 Jacobi 模型,需要对变换后状态的漂移、扩散函数和转移密度进行显式估计与检验。对于普通指标工程,直接使用稳健标准化与 Logistic 或 Tanh 映射通常更透明。

7. Lamperti 变换

对于连续时间扩散过程:

\[dX_t = \mu(X_t)dt+\sigma(X_t)dW_t\]

Lamperti 变换定义为:

\[Y_t = \int^{X_t}\frac{1}{\sigma(u)}du\]

其作用是将状态依赖扩散转换为单位扩散形式。它主要解决条件方差随状态变化的问题,但不会自动滤除时间序列中的高频随机项,也不会自动产生有界输出。

在离散金融数据中,波动率标准化可以被看作一种更容易实施的近似思想。

8. 跳跃补偿与稳健指标

跳跃补偿器用于构造补偿泊松过程或风险中性定价模型,不等同于从已实现时间序列中删除异常跳跃。对于经验指标,处理跳跃更实用的方法包括:

  • 稳健尺度估计;
  • 分位数截尾;
  • 双幂变差分离连续波动与跳跃;
  • 状态空间跳跃模型;
  • 对新闻冲击单独建模。

若指标的目的在于风险监控,完全删除跳跃通常并不合理,因为跳跃本身可能正是需要保留的风险信号。更合适的做法是压缩其影响,而不是将其视为无效噪声。


十二、参数选择与模型验证

1. 时间尺度必须对应经济问题

指标参数不能脱离研究期限。

对于日频价格:

  • 短期状态通常对应 $5$ 至 $21$ 个交易日;
  • 中期状态通常对应 $1$ 至 $6$ 个月;
  • 长期状态通常对应 $6$ 至 $24$ 个月。

对于月度 M2 或债务数据,趋势窗口可能需要覆盖数年,而非数月。

2. 避免前视偏差

双边滤波、中心移动平均和全样本 HP 滤波都会利用未来观测值估计历史状态。因此,历史图表可能显得异常平滑,但无法实时复现。

若指标用于回测或实时监控,时点 $t$ 的值只能依赖:

\[\{Y_1,Y_2,\ldots,Y_t\}\]

这要求使用单边滤波、递归状态空间模型或逐期重新估计。

3. 检查边界饱和率

若 $\tanh$ 输出长期接近 $-1$ 或 $1$,说明压缩参数过小或标准化不充分。

可以定义饱和率:

\[SR = \frac{1}{T} \sum_{t=1}^{T} \mathbf{1}(|I_t|>0.95)\]

过高的 $SR$ 会导致指标失去区分极端程度的能力。

4. 检查信号的有效独立样本量

平滑会提高自相关,因此视觉上更稳定的曲线并不意味着包含更多信息。

对于一阶自相关系数 $\rho_1$,有效样本量可粗略近似为:

\[N_{\mathrm{eff}} \approx N \frac{1-\rho_1}{1+\rho_1}\]

过度平滑可能使 $N_{\mathrm{eff}}$ 显著下降,从而夸大回归显著性。

5. 评估稳定性而不是只评估预测收益

一个稳健指标至少应检查:

  • 不同窗口下方向是否一致;
  • 不同历史阶段下分布是否稳定;
  • 实时估计与事后估计差异是否可接受;
  • 是否被少数危机样本主导;
  • 是否对数据频率和修订敏感;
  • 是否具有明确且稳定的经济解释。

十三、实践中的推荐配置

1. 日频市场价格

建议使用以下结构:

\[\text{多期对数收益率} \rightarrow \text{波动率标准化} \rightarrow \text{适度 EMA 平滑} \rightarrow \tanh\]

形式上可写为:

\[I_t = \tanh \left[ \frac{ \operatorname{EMA} \left( \frac{\ln P_t-\ln P_{t-h}} {\hat{\sigma}_t\sqrt{h}} ,n \right) }{\alpha} \right]\]

该结构适合构造有界趋势、风险偏好或动量状态。

2. 月度或季度宏观存量

建议使用:

\[\text{对数水平或对数比率} \rightarrow \text{单边趋势模型} \rightarrow \text{趋势偏离} \rightarrow \text{滚动 MAD 标准化} \rightarrow \tanh\]

例如:

\[I_t = \tanh \left[ \frac{ c_t-\operatorname{median}_N(c_t) }{ \alpha \left( 1.4826\,\operatorname{MAD}_N(c_t)+\epsilon \right) } \right]\]

该结构适合 M2、融资债务、总市值、信贷余额和杠杆率。

3. 跨变量综合金融条件指数

若需要组合多个指标,先对每个变量独立完成稳健标准化和有界化:

\[I_{j,t} = \tanh\left(\frac{z_{j,t}}{\alpha_j}\right)\]

再进行加权:

\[FCI_t = \sum_{j=1}^{K}w_j I_{j,t}\]

其中:

\[\sum_{j=1}^{K}|w_j|=1\]

这样可以避免高波动变量仅因量纲较大而支配综合指数。

若希望最终综合指标仍严格位于 $(-1,1)$,可再次映射:

\[I_t^{\mathrm{final}} = \tanh\left(\frac{FCI_t}{\beta}\right)\]

十四、结论

将指数增长型金融序列转换为有界、低噪信号,本质上不是寻找某个单一“高级算法”,而是完成四个相互独立的统计任务:

\[\boxed{ \text{对数化} + \text{状态提取} + \text{稳健标准化} + \text{非线性有界化} }\]

其中,对数化消除绝对尺度和指数增长效应;趋势模型、滤波器或状态空间模型提取经济上有意义的低频状态;MAD 或条件波动率标准化处理异方差和厚尾;Tanh、Logistic 或百分位秩提供严格边界。

对于价格类数据,一个可靠的默认方案是:

\[\text{多期对数收益率} + \text{波动率调整} + \text{轻度平滑} + \tanh\]

对于债务、M2 和市值等宏观存量,一个更合理的默认方案是:

\[\text{对数水平或对数比率} + \text{单边趋势偏离} + \text{滚动稳健 Z-Score} + \tanh\]

分数差分、HP 滤波、TRIX、小波和卡尔曼滤波都可以成为这一框架中的某个模块,但它们本身通常不能同时保证有界性与低噪性。真正稳定、可解释且可复现的指标,应明确区分趋势处理、噪声过滤、尺度归一化和边界压缩,而不是将这些目标混合在一个未经检验的复杂模型中。

warning

本文由作者按照 CC BY 4.0 进行授权