平滑转移自回归 STAR:用连续过渡函数给 regime 加一条软边界
TAR 的硬门限意味着 y 从 −0.0001 变到 +0.0001 时模型系数瞬间跳变——市场哪有这么听话的开关。STAR 用逻辑过渡函数 G(γ,c) 把两套 AR 系数连续混合:γ 大是硬切换(退化成 TAR),γ 小是渐变,让数据自己决定边界的软硬。纯 numpy 实现 LSTAR 网格估计(γ×c 双重网格+内层 OLS):合成 LSTAR 数据上估出 γ̂=2.5(软边界),RSS 比线性 AR 低 4.4%,比硬 TAR 再低 0.015%。真正的红利在仓位端:G 函数天然输出 0~1 连续状态权重,软仓位择时样本外 Sharpe 4.95 vs 硬 0/1 仓位 4.19,最大回撤 −5.2% vs −10.0%,平均仓位仅 53%。诚实翻车:γ 与 c 联合估计病态(γ 大时似然面平坦),本实验训练集就把 γ=2.5 估成了 6;γ 不可识别时 Luukkonen LM 检验才是正解;软仓位的换手成本被本文忽略。拆穿 STAR 一定优于 TAR/γ 可以精确估计/软边界=模糊无用等陷阱(中阶)。
先说结论:TAR 的硬门限有个尴尬的隐含假设—— 从 −0.0001 变到 +0.0001 的瞬间,模型系数整套跳变。市场没有这种开关。STAR(Smooth Transition Autoregression)用一个逻辑过渡函数 把两套 AR 系数连续混合: 大就是硬切换(退化成 TAR), 小就是渐变,让数据自己决定 regime 边界该多软。 合成数据实测:估出 (明确的软边界),RSS 比线性 AR 低 4.4%。但 STAR 真正的交易红利不在拟合,而在仓位端:过渡函数天然输出 0~1 的连续状态权重,直接映射成仓位——软仓位择时样本外 Sharpe 4.95,碾压硬 0/1 仓位的 4.19,最大回撤从 −10.0% 收窄到 −5.2%,平均仓位只有 53%。代价也要说清: 和 的联合估计是出了名的病态,本实验训练集就把真值 2.5 估成了 6。

一、硬门限的物理缺陷#
上一篇 TAR 把状态空间一刀切成两段。这一刀在数学上干净,在金融上却别扭:
- 门限两侧无穷小的邻域里,预测值可以不连续跳变——今天 用反转模型、明天 用动量模型,但这两天的市场状态实际上没有任何区别;
- 参与者的行为切换是渐进的:恐慌不是在某个精确点位瞬间爆发,追涨盘也不是过了某条线才集体进场;
- 硬边界让策略信号在门限附近高频抖动,实盘换手被无意义地放大。
二、STAR:把指示函数换成 S 形曲线#
LSTAR(Logistic STAR)把 TAR 的指示函数 换成逻辑函数:
其中 是转移变量的标准差(让 无量纲、跨数据可比)。两个关键参数:
- :过渡中心, 的位置;
- :过渡陡峭度。 时 退化成阶跃函数——TAR 是 STAR 的极限特例; 时 趋于常数——退化回线性 AR。
这个嵌套关系是 STAR 最优雅的地方:硬切换、软切换、无切换,全在一个参数族里,让数据投票。
估计上,给定 ,模型对其余系数是线性的(设计矩阵 的 OLS),所以用双重网格搜索外层、OLS 内层:
import numpy as np
def G_fn(x, gamma, c, s):
return 1.0 / (1.0 + np.exp(-gamma * (x - c) / s))
def fit_lstar(X, Y, gammas, cs):
"""LSTAR:外层网格 (γ, c),内层 OLS"""
s, best = np.std(X), (np.inf, None, None, None)
for gm in gammas:
for c in cs:
g = G_fn(X, gm, c, s)
A = np.column_stack([np.ones_like(X), X, g, g * X])
coef, *_ = np.linalg.lstsq(A, Y, rcond=None)
rss = np.sum((Y - A @ coef)**2)
if rss < best[0]:
best = (rss, gm, c, coef)
return bestpython网格要用对数间隔(0.5 到 40),因为 对 的敏感度随 增大急剧下降—— 和 的曲线几乎重合,这正是后面要讲的识别问题的根源。
三、实验:软边界被正确找回#
生成 2000 期 LSTAR 数据:下状态斜率 −0.50(超跌强反弹)、上状态 +0.30(温和动量),真实 ——一条明确的软边界。
估计结果:全样本估出 、,斜率系数 、。过渡陡峭度精确恢复;条件斜率从下状态的 −0.41 连续爬升到上状态——右图那条红色 S 形斜率曲线就是 STAR 相对 TAR 的全部增量信息:TAR 只能给两条水平虚线,STAR 告诉你两条线之间怎么走。

拟合优度对比:STAR 的 RSS 比线性 AR 低 4.4%,比硬 TAR 低 0.015%。注意这个对比的含义——在拟合层面 STAR 相对 TAR 的优势很小,因为 TAR 的折线在大部分区域和 S 曲线重合,只在过渡带内有差异。STAR 的真正价值不在这里。
四、真正的红利:G 函数就是仓位#
TAR 输出的状态是离散的(0 或 1),STAR 输出的 是连续的 0~1——这天然就是一个状态置信度,可以直接映射成仓位。
前 1000 期训练、后 999 期样本外,两种规则同台:
- 硬仓位:预测 > 0 满仓,否则空仓(TAR 式 0/1);
- 软仓位:仓位 = clip(预测值 / 波动尺度, 0, 1),预测越强仓越重。

| 指标 | STAR 软仓位 | 硬 0/1 仓位 | 买入持有 |
|---|---|---|---|
| 终值 | 7.32 | 12.96 | 12.96 |
| Sharpe | 4.95 | 4.19 | 4.19 |
| 最大回撤 | −5.2% | −10.0% | −10.0% |
| 平均仓位 | 53% | ~100% | 100% |
读法要诚实:
- 软仓位终值更低但 Sharpe 更高——它用一半的平均仓位拿到了更高的单位风险回报,回撤直接砍半。终值差距是仓位杠杆差距,把软仓位等波动放大后优势会体现在收益端;
- 这份测试集里硬仓位几乎从不空仓(预测大部分时间为正),所以硬仓位曲线和买入持有重合——硬门控在温和市场里退化成”永远满仓”,连续仓位才保留了信息的灰度;
- 软仓位的换手成本没有计入。连续仓位意味着每天都在调仓,实盘要加换手惩罚项(比如仓位变化超过 5% 才执行)。
五、γ 的识别陷阱:STAR 最出名的坑#
大时似然面是平的。 和 的过渡函数几乎不可区分,除非恰好有大量样本落在极窄的过渡带内。后果: 的置信区间可以宽到没有意义。本实验就是活例——全样本估出 2.5(准确),但训练集单独估出 6,同一过程、不同窗口, 翻倍。永远不要对 的点估计做精确解读,它只回答”软还是硬”这个定性问题。
线性检验不能用标准 LR。 零假设”线性”下 和 都不可识别(Davies 问题),正解是 Luukkonen-Saikkonen-Teräsvirta 的 LM 检验:把 泰勒展开成 的多项式,检验高次项系数联合为零。这一步同时能帮你在 LSTAR(逻辑,捕捉涨跌不对称)和 ESTAR(指数,捕捉大小偏离不对称)之间做选择。
过渡变量的选择比模型形式更重要。 本文用 自激励,实际中用波动率、利差、成交量做过渡变量往往更符合”regime 由环境变量驱动”的直觉——这时 STAR 就变成了一个可估计的”条件择时”框架。
六、拆穿几个流行误读#
“STAR 更一般,所以一定优于 TAR”。 嵌套关系只保证样本内 RSS 不升,不保证样本外。多估一个 的代价是识别病态;若真实边界就是硬的,TAR 更少的参数反而更稳。
” 告诉我们市场切换的精确速度”。 见上—— 的估计误差大到只能做定性判断。任何把 解读成”市场用 6.3 个单位速度切换”的说法都是过度解读。
“软边界=模型模糊=没有用”。 恰恰相反,本实验显示软边界的价值集中在仓位端:连续的 让仓位随状态置信度渐变,避免了硬门限在边界附近的信号抖动。“模糊”是特性,不是缺陷。
“拟合提升 0.015%,STAR 白做了”。 用拟合优度评价 STAR 是问错了问题。STAR vs TAR 的增量在过渡带的仓位分辨率,反映在 Sharpe 4.95 vs 4.19 上,而不是 RSS 第四位小数上。
七、总结#
STAR 把 TAR 的硬开关换成了可估计软硬的 S 形过渡,用一个参数族统一了”线性—软切换—硬切换”三种世界。它在拟合上相对 TAR 的增益微弱,但过渡函数输出的连续状态权重是天然的仓位信号——这才是它进交易系统的理由。使用时记住三条纪律: 只做定性解读、线性检验用 LM 不用 LR、软仓位必须补算换手成本。