数据与算法

分数阶微分在金融时序中的应用:明日策略回测保留历史记忆的数学实操

在明日策略回测里,最容易被忽略的不是模型结构,而是输入模型的那条价格序列。你把收盘价直接塞进机器学习模型,非平稳性会把训练过程搅成一锅粥;你把价格做成一阶差分,也就是常见的收益率,序列是干净了,但价格里原本携带的趋势、惯性和长程记忆,也被一刀砍掉。…

分数阶微分在金融时序中的应用:明日策略回测保留历史记忆的数学实操

这就是金融时序特征工程最硬的一道矛盾:模型要平稳,交易逻辑却不愿意丢掉历史。

分数阶微分的价值,正是卡在这条缝里。它不急着把价格序列绞杀成纯收益率,而是通过介于 0 和 1 之间的微分阶数,让序列逐步削弱趋势、保留部分历史记忆。对量化交易者来说,这不是数学装饰,而是决定回测信号还能不能活着走到实盘的一道工序。

但先把话说死:分数阶微分不会自动制造 alpha,也不会替你解决过拟合、滑点和仓位失控。它只是把一条被粗暴处理的价格序列,重新加工成更适合机器学习使用的特征。参数选错,照样会扫损;窗口处理错,回测结果照样能漂亮到失真。

一阶差分很干净,但它砍掉了什么

金融机器学习里,价格序列最常见的处理方式是一阶差分。设价格为 \(P_t\),一阶差分可以写成:

\[

\Delta P_t=P_t-P_{t-1}

\]

如果使用对数价格,则通常写成:

\[

r_t=\log(P_t)-\log(P_{t-1})

\]

这类处理方式的优势很明确。原本带有趋势、水平和累积结构的价格,被转换成变化量。许多价格序列经过一阶差分后,更容易满足平稳性要求,模型也不必死盯着价格本身的绝对水平。

问题在于,一阶差分的刀口太深。

价格在 \(t\) 时刻的变化,只由当前价格和前一个价格决定。更早的历史不是完全不存在,而是不会再以原始价格结构的形式进入当前特征。对于某些策略,这样做没有问题。例如,短线动量、波动率、价差变化,本来就只需要关注局部变动。但如果你的预测逻辑依赖趋势持续、价格偏离、均值回归速度,或者希望模型识别更长时间跨度的状态切换,一阶差分可能会把有用信息连同噪声一起扫出去。

这不是说收益率特征没用。恰恰相反,收益率是金融建模中最常见、最稳健的基础特征之一。真正的问题是:你不能把它当成所有价格信息的终点。

在明日策略回测中,经常会出现下面这种假象:

  • 原始价格与目标变量之间看起来存在结构关系;
  • 做一阶差分后,ADF检验通过,序列变得平稳;
  • 模型训练更稳定,回测曲线也更规整;
  • 但一旦换到滚动样本,信号衰减,交易次数增加,滑点开始吞噬收益。

这不一定是模型本身失效,也可能是特征工程提前把策略依赖的中长期结构削平了。

一阶差分解决的是平稳性问题,但它不负责替你保管历史。把价格直接砍成收益率,模型是轻了,记忆也可能没了。

平稳性与历史记忆的冲突

所谓平稳性,简单说,是序列的统计特征不会随着时间推移发生剧烈漂移。均值、方差以及自相关结构处在相对稳定的范围内。许多机器学习模型并不要求严格的数学平稳,但非平稳输入会让模型把时间趋势误判成可重复规律。

例如,一段上涨行情中的价格序列会持续抬高均值。模型如果直接学习价格水平,很容易把某个时期的价格区间当成预测依据。市场一换环境,模型立刻被击穿。

但历史记忆同样不能忽略。金融市场并不是每根K线都从零开始。波动聚集、趋势延续、成交行为、宏观事件冲击,都可能让当前状态与过去一段时间存在联系。这里的“记忆”不是指价格一定会重复过去,而是说过去数据会对当前状态分布产生影响。

一阶差分把这种影响压缩得很厉害。分数阶微分则尝试放慢这个过程,让历史权重逐步衰减,而不是在一个时间点上突然归零。

分数阶微分的数学逻辑:让历史权重逐步衰减

分数阶微分的核心不是简单地把“差分次数”改成小数,而是将差分算子推广到非整数阶。

整数阶差分可以理解为:

  • \(d=0\):不做差分,保留原始序列;
  • \(d=1\):做一次差分,得到收益率或价格变化;
  • \(d=2\):在一阶差分基础上再次差分。

当 \(d\) 落在 0 和 1 之间时,得到的就是分数阶微分。它会使用当前值以及一系列历史值的加权组合:

\[

X_t^{(d)}=\sum_{k=0}^{\infty}w_kP_{t-k}

\]

其中权重可以递推计算:

\[

w_0=1

\]

\[

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

\]

这个递推式最关键的地方,在于权重不会像一阶差分那样只保留两个点。当前价格会获得最大权重,更早价格的权重逐步缩小,但不会立刻消失。

当 \(d=1\) 时,权重很快退化成当前价格与前一价格的差;当 \(d\) 处在 0 与 1 之间时,历史项仍会参与计算。阶数越接近 0,原始价格结构保留得越多;阶数越接近 1,趋势被削弱得越彻底,序列也更接近传统收益率。

这就是分数阶微分的交易含义:它不是在平稳和非平稳之间二选一,而是沿着一条连续的参数轴寻找最低必要差分强度。

为什么不能直接把 d 设成 0.5

很多人第一次接触分数阶微分,会直接问:既然 0.5 处在中间,那就用 0.5。这个思路在回测里很危险。

微分阶数不是审美参数,更不是越居中越合理。不同资产、不同频率、不同价格变换方式,对平稳性的要求不一样。股票日线、股指期货分钟线、商品期货连续合约,波动结构和市场微观噪声完全不同。一个在日线数据上有效的 \(d\),拿到高频数据里可能只会放大噪声和交易成本。

实际工程中,常见做法是从较小的 \(d\) 开始逐步增加,观察序列何时通过平稳性检验,同时记录它与原始价格序列的相关性。研究和实操资料显示,对许多金融资产价格序列而言,\(d\) 在 0 到 0.6 之间就可能达到平稳要求;部分序列在 \(d<0.3\) 时已经能够通过ADF检验,同时与原始价格保持很高相关性,相关系数甚至可以达到 0.98 左右。

这里有两个词必须分开看:

  • 平稳性告诉你序列是否适合进入模型;
  • 相关性告诉你分数阶处理后还剩多少原始价格信息。

只盯着ADF检验,容易把序列差分过头;只盯着相关性,又可能把非平稳价格原封不动地送进模型。真正可用的 \(d\),应当是满足平稳性要求的最低阶数附近,而不是随手指定的固定值。

明日策略回测的实操:先找最小有效阶数

分数阶微分要落地,不能停在公式上。你需要把它放进一套不会自欺的回测流程里。

第一步不是训练模型,而是把数据切开。训练区间、验证区间和测试区间必须按照时间顺序排列,不能随机打乱。金融数据的时间依赖非常强,随机切分会让相邻样本互相泄露,最后得到的不是策略,而是一张被未来数据喂肥的回测成绩单。

第二步是确定候选阶数。可以从 \(d=0\) 开始,按照固定步长递增,例如逐步检查 0.1、0.2、0.3,直到接近 1。步长不必机械固定,重点是让你看清楚序列从非平稳到平稳的变化过程。

第三步是在训练区间内完成检验。不要把全样本先做完分数阶微分,再拿结果切分训练集和测试集。即使分数阶微分本身没有使用目标变量,这种全样本处理也可能让早期样本计算时接触到不该接触的结构,尤其是采用膨胀窗口时,未来数据泄露会从边缘悄悄钻进来。

一套更稳的工作顺序,可以压缩成下面几个动作:

1. 按时间切分原始价格序列

先确定训练、验证和测试区间,再对每个区间执行特征处理。不要先全量计算,再事后切分。

2. 在训练区间搜索阶数

逐步提高 \(d\),对每个候选序列做ADF等平稳性检验,同时记录与原始价格的相关性。

3. 选择满足约束的最低阶数

目标不是让检验统计量看起来最漂亮,而是在满足平稳要求的前提下,尽量保留价格信息。

4. 锁定参数后进入验证区间

不能因为验证区间表现不好,就反复修改 \(d\) 直到曲线重新变好。否则验证集会被你用成第二个训练集。

5. 在测试区间只做一次正式评估

测试集是最后的扫损区,不是参数调教场。动一次测试结果,结论就需要重新打折。

ADF检验不是交易信号

ADF检验常被误用成“策略有效性检验”。这是两回事。

ADF检验主要用于判断序列是否存在单位根。它可以帮助你判断分数阶微分后的特征是否更接近平稳,但它不能告诉你未来价格会上涨还是下跌,也不能证明模型具备交易优势。

一个通过ADF检验的特征,照样可能没有预测能力;一个没有通过ADF检验的变量,也可能在特定模型中提供有效信息。检验结果只是特征工程的一道门,不是开仓按钮。

你要把它放回策略链条中看:

  • 分数阶微分处理价格;
  • 目标变量定义未来收益、方向或波动变化;
  • 模型在训练区间学习特征与目标之间的关系;
  • 验证和测试阶段检验关系是否能穿越时间;
  • 最后再把手续费、滑点、成交限制和仓位规则接上。

如果只看统计检验,不看交易执行,模型会在纸面上赢,在盘口里爆仓。

FFD固定窗口截断:回测里最不能漏的一刀

分数阶微分的理论形式使用的是无限历史窗口。但实盘没有无限记忆,回测更不能假装自己拥有无限且无污染的历史。

工程上常用固定窗口分数阶微分,也就是FFD。它的核心是:为每个时点使用有限长度的历史价格,并把绝对值小于阈值的远期权重截掉。

假设权重序列为 \(w_0,w_1,w_2,\ldots\),当某个历史权重的绝对值低于阈值 \(\tau\) 时,可以停止继续向更早历史扩展。常见阈值包括 \(10^{-4}\) 或 \(10^{-5}\),但这不是一条可以闭眼照抄的行业圣旨。高频 tick 数据和日线数据的最佳截断阈值不能混为一谈,具体数值需要根据标的、频率和样本长度离线搜索。

为什么膨胀窗口会制造未来数据泄露

膨胀窗口的做法,是随着时间推进不断把更早历史纳入计算。表面上看,这符合“只使用过去数据”的原则,但问题藏在权重计算和样本边界处理中。

分数阶微分的权重衰减很慢。一个较早的观测值,可能在很长时间后仍然带有非零权重。如果你在全样本上一次性计算,再把结果切成训练集和测试集,训练区间边界附近的特征可能携带了后来才纳入计算的历史结构,或者因归一化、窗口确定和参数选择方式接触了未来区间信息。

尤其是当你用完整样本决定窗口长度、截断点或阶数,再把结果宣称为样本外回测,数据泄露就已经发生。它不会像代码报错一样跳出来,而是藏在一条异常顺滑的净值曲线里。

FFD的作用不是让数学公式更漂亮,而是给历史记忆装上边界。每个时间点只调用固定长度的过去数据,远端权重被截断,特征构造过程更接近真实交易。

在回测里,历史记忆可以保留,但窗口边界必须锁死。没有固定窗口的分数阶微分,漂亮曲线先按数据泄露处理。

固定窗口并不等于随便截一段历史

FFD的“固定”有两层含义:

1. 权重序列按照固定的计算规则生成;

2. 每个时点实际使用的历史长度受到明确限制。

你不能今天用 500 根K线,明天发现信号弱了,就把窗口扩到 2000 根;也不能先用全历史找到最有利的阈值,再把这个阈值套在过去的回测中。窗口长度和权重阈值都属于特征工程参数,必须只在训练阶段决定,再锁定到后续数据。

对于长度不足的早期样本,需要明确处理方式。最直接的方法是丢弃无法形成完整窗口的前若干条记录。另一种方法是使用可用历史计算,但这样会让不同时间点的特征具有不同的有效记忆长度,模型可能把“数据刚开始积累”误认为市场状态变化。

在交易系统里,这种边界处理很容易被忽略。你看的是一列数,系统看到的是一堆不同历史长度拼出来的数。特征定义不稳定,模型自然会乱扫。

参数调优:不要追求最漂亮的检验结果

分数阶微分至少涉及三个工程参数:

  • 微分阶数 \(d\);
  • 固定窗口长度;
  • 权重截断阈值 \(\tau\)。

它们相互影响。提高 \(d\),通常会削弱趋势并加快平稳化;扩大窗口,会纳入更久远的历史;降低截断阈值,会保留更多微弱历史权重。三个参数一起暴力搜索,很快就会把验证集和测试集吃干净。

真正稳妥的调优,应该有明确的优先级。

先调阶数,再定窗口

阶数决定你对原始价格的差分强度,是最直接的控制旋钮。先在训练区间内搜索 \(d\),找到满足平稳性要求的最低阶数,再研究窗口长度是否足以承载该阶数对应的权重结构。

如果一开始就把 \(d\)、窗口长度和阈值全部组合搜索,最后得到的可能只是某个历史区间的偶然匹配。你无法判断收益来自分数阶微分本身,还是来自某个窗口碰巧贴合了样本中的一段行情。

窗口长度看权重衰减,不看情绪

固定窗口长度不应凭感觉设定。可以先观察权重随滞后阶数的衰减情况,确定当权重绝对值低于指定阈值后,继续加入更远历史对特征的影响是否已经很小。

这里要防止两个极端:

  • 窗口过短,历史记忆被提前截断,结果接近强差分;
  • 窗口过长,计算成本上升,边界处理复杂,且远期微弱权重可能把噪声拖进模型。

如果数据是高频级别,窗口长度还会影响特征更新速度和系统延迟。高频交易里,哪怕只是增加一段计算,也可能造成信号生成和下单之间的滑点扩大。分数阶微分不是离线论文里的孤立公式,它要接受行情流、撮合延迟和成交价格的绞杀。

阈值不是越小越好

阈值越小,保留的历史权重越多。听起来像是“信息保留更多”,但微小权重不等于有效信号。金融数据中的远期历史本身可能已经被噪声污染,保留它们会增加计算量和输入维度,却不一定增加预测能力。

常见的权重截断阈值可以从 \(10^{-4}\) 或 \(10^{-5}\) 附近开始测试,但必须在时间滚动验证中检查结果。研究资料并没有为所有市场、所有频率提供一套通吃的最优阈值。特别是 tick 级数据,最佳阈值需要依据具体标的离线搜索,不能把日线经验直接搬过去。

分数阶微分接入机器学习:特征不是越多越强

分数阶微分最适合被看作一种价格变换特征。它可以与收益率、波动率、成交量、盘口不平衡、期限结构等变量并列进入模型,而不是取代全部特征。

一个常见的设计方式是同时保留不同信息层次:

特征类型主要保留的信息典型用途主要风险
原始价格或对数价格价格水平与长期结构识别区间位置、趋势状态非平稳性、尺度漂移
一阶差分或收益率短期变化与方向动量、波动、方向预测长程记忆被削弱
分数阶微分特征平稳性与部分历史记忆机器学习输入、状态识别阶数和窗口敏感
滚动波动率风险与波动聚集仓位调整、风险过滤窗口滞后
成交量或盘口特征交易行为与流动性识别吃货、逼空、扫损区域高频噪声、滑点影响

表里最容易被忽略的是“用途”一列。分数阶微分不是为了让所有模型都变得更聪明,而是让模型在处理价格水平时,不必在非平稳性和信息损失之间做一次过于粗暴的选择。

目标变量必须和特征时间对齐

假设你在 \(t\) 时刻用分数阶微分后的价格特征预测未来 \(h\) 个周期的收益:

\[

y_t=\log(P_{t+h})-\log(P_t)

\]

那么特征只能使用 \(t\) 及之前的数据。若你的交易动作在下一根K线开盘执行,还要明确使用哪一个时刻的价格、信号生成时间和成交时间。

这看似基础,却是回测最常见的穿仓点。有人用收盘价计算特征,又用同一根K线的收盘价成交;有人用未来窗口计算波动率,再把结果放回过去;有人把整段数据先标准化,均值和方差已经偷看了测试区间。

分数阶微分不能替你修复这些错误。它只是一个变换层,时间对齐仍然要由你负责。

标准化也要分时间

机器学习模型通常需要对特征做标准化。这里同样不能把全样本均值和标准差直接套进历史回测。训练区间估计出的参数可以应用到验证区间,验证阶段锁定后再应用到测试区间。滚动策略则需要使用当时可获得的数据更新统计量。

如果分数阶微分后的特征与原始价格相关系数仍然很高,尺度漂移的问题不会自动消失。高相关只代表它保留了价格结构,不代表不同时间段的分布完全一致。

因此,模型评估至少应当同时观察:

  • 平稳性检验是否稳定通过;
  • 与原始价格的相关性是否过快下降;
  • 训练、验证、测试阶段的特征分布是否发生明显漂移;
  • 交易信号是否集中出现在某一个特殊行情阶段;
  • 加入手续费和滑点后,策略收益是否仍然存在;
  • 换窗口、换起止日期后,结果是否立刻塌方。

最后两项才真正接近交易。模型在统计指标上领先,不代表账户能够承受连续扫损。

用复盘动作看分数阶微分,而不是只看曲线

我们把一笔明日策略回测里的动作拆开。

假设当前模型使用三类输入:一阶收益率、滚动波动率和分数阶微分价格特征。信号在 \(t\) 时刻生成,交易在下一时点执行。模型并不是因为分数阶微分“预测了价格”,而是从更完整的状态中识别出当前价格所处的位置。

如果只使用一阶收益率,模型看到的主要是最近几根K线的变化。价格过去一段时间是从高位回落,还是从低位反弹,可能被压缩成相似的局部收益序列。分数阶微分增加后,较早的价格信息仍以衰减权重进入特征,模型有机会区分这两种路径。

但注意,是“区分状态”,不是“保证方向”。

如果模型输出做多信号,下一步还要经过交易规则:

1. 预测值必须超过开仓阈值;

2. 当前波动和流动性必须允许成交;

3. 预设止损距离不能被滑点直接吞掉;

4. 单笔风险不能因为信号连续叠加而失控;

5. 持仓方向不能和已有风险暴露冲突。

很多回测只保留了模型预测,却删掉了执行约束。结果就是模型负责开仓,现实负责爆仓。

分数阶特征如何影响入场判断

分数阶微分特征常见的作用,不是单独触发买卖,而是作为状态过滤器。例如:

  • 一阶收益率显示短线反弹;
  • 分数阶微分特征仍显示价格处于长期弱势区间;
  • 波动率同步扩大;
  • 模型因此降低做多信号权重,或者要求更高的预测阈值。

反过来,短线收益率偏弱,但分数阶特征显示价格已经脱离长期下行状态,策略可能不再把每次下跌都当成趋势延续。

这类组合的重点是逻辑推演:短周期变化和较长记忆是否相互确认,还是互相打架。你不能看到特征增加,就把模型输出直接当成更强的方向判断。特征越多,冲突越多,解释难度也越高。

退出规则不能交给分数阶微分

分数阶微分适合改善输入序列,不适合承担所有风险管理责任。止损、止盈、最大持仓时间、波动率调整仓位,这些都必须独立存在。

尤其在期货交易中,分数阶特征保留了历史记忆,可能让模型更倾向于持有原有方向。但市场一旦出现逼空、流动性断层或突发跳空,历史记忆不会替你平仓。模型还在看过去,账户已经被当前价格击穿。

所以回测时要分别观察:

  • 信号预测是否有效;
  • 入场价格是否可成交;
  • 持仓期间的最大不利变动;
  • 止损是否在真实滑点下执行;
  • 信号失效后是否能及时退出。

如果把这些结果混成一条收益曲线,你很难知道策略究竟赢在预测,还是赢在某几个没有真实成交约束的价格点。

常见错误:分数阶微分不是万能补丁

错误一:把 d 越小等同于信息越多

当 \(d\) 很小时,处理后的序列确实更接近原始价格,相关性可能很高。但高相关不等于高预测力。非平稳趋势、价格水平和市场状态混在一起,模型可能只是在记忆训练区间的价格路径。

你需要的是“最低必要差分”,不是“尽可能不差分”。如果序列没有达到基本平稳要求,保留再多历史,也只是把污染带进模型。

错误二:看到ADF通过就宣布策略成功

ADF通过只能说明特征在统计意义上更接近平稳。它不能证明未来收益可预测,也不能证明策略扣除交易成本后有利润。

真正的验证必须落到样本外滚动测试,并且把手续费、滑点、成交价格、限价单未成交等条件放进去。没有这些约束,分数阶微分只是一个漂亮的数学变换。

错误三:全历史计算后再做回测切分

这是最严重的一类错误。你不能先拿全量价格生成分数阶特征,再把前半段当训练、后半段当测试,然后声称没有使用未来目标变量就不存在泄露。

特征工程本身就可能泄露。窗口、权重截断、标准化和阶数选择,都必须受到时间边界约束。特别是膨胀窗口分数阶微分,必须改用固定窗口FFD,并剔除绝对值低于阈值的过早历史权重。

错误四:用一个参数覆盖所有资产

股票、股指期货、商品期货和加密资产的交易时间、波动结构、跳跃特征都不一样。日线和分钟线也不能共用一套阶数与窗口。

分数阶微分的参数应该和标的、频率、价格处理方式绑定。跨资产复用时,需要重新验证,而不是因为某个品种的相关系数达到 0.98,就认定所有品种都能照抄。

错误五:忽略合约切换和价格连续性

期货连续合约在换月时可能存在跳空、价差调整或拼接方式变化。你如果直接对未处理的连续价格做分数阶微分,算法会把换月结构当成真实价格冲击。

这会进一步污染历史权重。分数阶微分会把某个异常跳变以衰减形式带入后续多个时点,影响可能比普通收益率特征持续更久。

因此,期货数据必须先明确连续合约构造方式、换月规则和价格调整方法,再进入分数阶微分。否则你以为模型保留了市场记忆,实际保留的是数据拼接留下的伤疤。

一套更稳的回测流程

如果你准备把分数阶微分放进明日策略回测,可以按下面的顺序执行。

先处理原始数据

确认时间戳、交易日历、缺失值、停牌区间和合约切换。高频数据还要检查重复成交、异常价格和盘口时间错位。分数阶微分会把历史项叠加起来,原始数据的一处错误不会只影响一根K线。

再定义价格变量

明确使用收盘价、成交价、中间价,还是对数价格。股票复权方式、期货连续合约拼接方式,也要在这里固定。不要一边调模型,一边更换价格口径。

在训练区间搜索 d

从较低阶数开始递增,记录每一个候选值的平稳性结果和与原始价格的相关性。选择满足检验要求的最低有效阶数。对于多数金融资产,候选范围可以先关注 0 到 0.6,但这只是搜索范围,不是结论。

根据权重衰减构造FFD窗口

计算权重序列,观察权重绝对值何时低于阈值。然后使用固定窗口,而不是全历史膨胀窗口。窗口长度和阈值在训练阶段决定,验证和测试阶段锁定。

把特征和目标严格错位

特征只使用当前时点及以前的数据,目标使用未来区间收益或方向。交易执行时间要晚于信号生成时间。任何同一根K线内的价格使用,都必须写清楚假设。

做滚动验证

不要只看一次训练测试切分。使用多个时间段进行滚动评估,观察分数阶特征在不同市场状态中的表现。重点看性能是否依赖单一趋势行情,是否在震荡、急跌和高波动阶段失效。

最后才进入执行层评估

加入手续费、滑点、成交延迟、最大持仓和仓位限制。对于期货,还要考虑保证金占用与连续亏损后的资金曲线。模型如果只能在理想成交价下赚钱,那就不具备上线资格。

分数阶微分的边界:它保留记忆,但不解释记忆

分数阶微分最有吸引力的地方,是它让价格序列不必在“原始价格”和“收益率”之间二选一。它能够在一定程度上保留历史结构,让机器学习模型看到比局部收益率更丰富的路径信息。

但它不会告诉你这些记忆为什么存在。

价格的长程相关可能来自趋势,也可能来自波动聚集、市场制度变化、交易者行为、宏观事件传导或数据构造方式。分数阶微分只是把这种结构以数学权重保留下来,模型是否能够正确识别,取决于目标定义、特征组合、样本外验证和执行规则。

此外,历史记忆在市场环境变化时会失效。一个过去有效的窗口,可能在波动率结构切换后变得过长;一个适合日线的阶数,放到分钟线中可能保留太多噪声;一个在单品种上表现稳定的特征,换到另一种资产后可能只剩下回测幻觉。

因此,分数阶微分不应被包装成“战胜传统收益率”的万能方法。它的准确定位是:一种用于金融机器学习的特征工程技术,在平稳性与信息保留之间提供更细的控制。

对于明日策略回测,最值得坚持的原则只有三条:

  • 用最低必要的差分强度处理非平稳性;
  • 用固定窗口FFD限制历史信息边界;
  • 用样本外交易结果,而不是单一统计检验,判断特征是否值得保留。

2018年,Marcos López de Prado 在《Advances in Financial Machine Learning》第五章系统讨论了分数阶微分特征在金融机器学习中的应用。真正值得借鉴的不是某个固定阶数,而是那种工程思路:让数据处理服务于预测任务,同时明确承认信息损失和数据泄露的代价。

结语:记忆可以保留,风险不能遗漏

分数阶微分给量化交易者留下了一条更窄、但更有价值的路:不把价格原样扔进模型,也不急着用一阶差分把所有历史砍平。通过阶数、窗口和权重阈值的控制,你可以让特征逐步接近平稳,同时保留部分价格路径信息。

但这条路没有捷径。\(d\) 不是越小越好,相关系数高不是预测能力强,ADF通过也不是盈利证明。全历史计算、膨胀窗口、参数反复试到测试集变好,任何一个错误都能把回测结果推向虚假繁荣。

你最终要验证的,不是分数阶微分在数学上是否漂亮,而是它在严格时间边界、真实交易成本和连续扫损之后,是否还能为模型留下有效信息。

窗口没锁死,回测就是泄露;滑点没算清,盈利就是幻觉;仓位没管住,所谓历史记忆,最后只会变成爆仓账户里最贵的一段数学。

常见问题

分数阶微分和一阶差分有什么区别?
一阶差分主要使用当前价格与前一价格,能够削弱趋势并提高平稳性,但可能损失较多长期历史结构。分数阶微分使用当前值和一系列历史值的加权组合,让历史权重逐步衰减。
分数阶微分的阶数d应该如何选择?
通常应从较小的d开始递增,在训练区间内检查平稳性和与原始价格的相关性,选择满足平稳性要求的最低有效阶数。不同资产、频率和价格变换方式需要重新确定参数,不能直接固定使用0.5。
为什么回测中要使用固定窗口分数阶微分FFD?
理论上的分数阶微分使用无限历史窗口,而固定窗口FFD只调用明确长度的过去数据,并截去绝对值低于阈值的远期权重。这样可以限制历史信息边界,使特征构造更接近真实交易,并降低数据泄露风险。
ADF检验通过是否说明分数阶微分策略有效?
不是。ADF检验只能帮助判断特征是否更接近平稳,不能证明未来收益可预测,也不能证明策略扣除手续费和滑点后仍然盈利。
分数阶微分特征可以单独用于交易吗?
文中将分数阶微分定位为价格变换特征,通常可与收益率、波动率、成交量和盘口特征一起进入模型。它更适合作为状态识别或过滤信息,不能替代止损、止盈、持仓时间和仓位限制等执行规则。