股票量化交易软件:通过差异化和熵值分析来探索市场"记忆"

所用方法的原因和简要背景

流动性市场的大量参与者,他们在经营时会基于不同的投资期限,这便产生了很多市场噪音。 因此,市场的信噪比较低。 尝试整数型时间序列差分能令情况恶化,其会消除残余记忆,并将报价转换为以平稳性为特征的序列。 价格序列有记忆性,因为每个数值都建立在具有悠久历史的价位之上。 时间序列变换,例如增量对数,会裁剪记忆,因为它们是基于有限的窗口长度来创建的。 当转换平稳地消除市场记忆时,统计学家使用复杂的数学方法来提取残余的记忆。 这就是为什么许多相关的经典统计方法会导致虚假的结果。 长期依赖的概念 长期依赖(LRD),也称为长期记忆或长期持续,是一种分析金融时间序列时可能出现的现象。 它可表示为两个价格之间的统计依赖性的衰减率随时间间隔(或它们之间的距离)的增加而增加。 当依赖性衰减慢于指数衰减时,这种现象则被认为具有长期依赖性。 长期依赖通常也与自相似过程相关。 有关 LRD(长期依赖)的详情,请参阅维基百科文章。 平稳性和记忆存在的问题
价格图表的一个共同特征是非平稳性:它们有很长的价位历史,随时间的推移平均价格会改变。 为了进行统计分析,研究人员需要处理价格增量(或增量的对数),盈利能力或波动性的变化。 这些变换可从价格序列中消除记忆,令时间序列更加平稳。 虽然平稳性是统计结论的必要属性,但并非总需要消除整个记忆,因为记忆是预测模型的基础属性。 例如,均衡(平稳)模型必须包含一些记忆,以便能够评估价格偏离其预期价值的程度。
问题在于价格增量是固定的,但不包含过去的记忆,而价格序列包含全部数量的可用记忆,但它是非稳定性的。 问题出现了:如何差分时间序列令其平稳,同时最大程度地保留可能记忆。 因此,赫兹股票量化理应概括价格增量的概念,以便研究平稳性系列,其中并非所有记忆都被消除。 在这种情况下,比之其他可用方法,价格增量不是价格变换的最优解。
为此,将引入分数型差分的概念。 两个极端之间存在广泛的可能性:单一和零差分。 在一侧来看,它们是完全不同的价格。 从另一侧来看,价格没有任何差别。
分数型差分的应用范围足够广泛。 例如,差分序列通常作为机器学习算法的输入。 问题是,必须在机器学习模型可识别的前提下,显示相应历史阶段的新数据。 在非平稳序列的情况下,由于模型可能地错误操作,新数据也许位于已知数值范围之外。

分数型差分的历史
在各种科技文献中论述的几乎所有用于分析和预测金融时间序列的方法,都提出了整数型差分的概念。 在这方面会出现以下问题:
为什么整数型差分(例如,单位滞后)是最优的?
这种过度差分是不是经济理论容易产生有效市场假设的原因之一?
应用于时间序列分析和预测的分数型差分概念至少可以追溯到霍金斯(Hosking)。 在他文章中,ARIMA 过程家族是广义的,允许差分度拥有分数部分。 这是有道理的,因为分数型差分过程体现出长期持久性或抗持久性,因此比之标准ARIMA 提高了预测能力。 该模型被称为 ARFIMA(自回归分数积分移动平均值)或 FARIMA。 之后,其他作者在主要与加速计算方法相关的文献中有时会提到分数型差分。 这种模型可用于长期记忆时间序列的建模,即,自长期平均值的偏差比指数衰减更慢的情况下。
分数型差分的概念
赫兹股票量化来研究回漂运算符(或滞后算子) B ,应用于实数值矩阵{Xt},其中 B^kXt = Xt-k,对于任意整数 k ≥ 0。 例如,(1 − B)^2 = 1 − 2B + B^2,其中 B^2Xt = Xt−2,由此,(1 − B)^2Xt = Xt − 2Xt−1 + Xt−2。 注意 (x + y)^n =

编辑
针对每个正整数 n。 对于实数值 d,

编辑
则是一个二项式序列。 在分数模型中, d 可以是具有以下二项式序列正式扩展的实数值:
编辑切换为居中
分数型差分的情况能够保留市场记忆
赫兹股票量化来看看有理非负 d 如何能够保留记忆。 该算术序列由标量乘积组成:

编辑
含有权重 𝜔

编辑
合数值 X

编辑
当 d 为正整数时,

编辑
,在这种情况下,记忆被裁剪。 例如,d = 1 用于计算增量,

编辑
且 𝜔 = {1,−1, 0, 0,…}。 固定观察窗的分数型差分 分数型差分通常应用于时间序列的整个顺序。 在这种情况下,计算的复杂性更高,而变换序列的偏移则是负数。 Marcos Lopez De Prado 在其 金融机器学习的进展 一书中提出了一种固定宽度窗口的方法,其中当模块 (|𝜔k|) 小于指定阈值 (𝜏) 时,系数顺序会被丢弃。 与传统的扩展窗口方法相比,该过程具有以下优点:对于任何原始序列的顺序它允许具有相等的权重,降低计算复杂度,并消除回漂。 这种转换可以保存有关价位和噪音的记忆。 由于存在记忆、不对称和过度峰度,这种变换不是正态(高斯)分布,然而它可以平稳的。 分数型差分过程的展示 赫兹股票量化创建一个脚本,令您可以直观地从时间序列的分数型差分中评估获得的效果。 我们会创建两个函数:一个用于获得权重 ω,另一个用于计算序列的新值: //+------------------------------------------------------------------+ void get_weight_ffd(double d, double thres, int lim, double &w[]) { ArrayResize(w,1); ArrayInitialize(w,1.0); ArraySetAsSeries(w,true); int k = 1; int ctr = 0; double w_ = 0; while (ctr != lim - 1) { w_ = -w[ctr] / k * (d - k + 1); if (MathAbs(w_) < thres) break; ArrayResize(w,ArraySize(w)+1); w[ctr+1] = w_; k += 1; ctr += 1; } } //+------------------------------------------------------------------+ void frac_diff_ffd(double &x[], double d, double thres, double &output[]) { double w[]; get_weight_ffd(d, thres, ArraySize(x), w); int width = ArraySize(w) - 1; ArrayResize(output, width); ArrayInitialize(output,0.0); ArraySetAsSeries(output,true); ArraySetAsSeries(x,true); ArraySetAsSeries(w,true); int o = 0; for(int i=width;i<ArraySize(x);i++) { ArrayResize(output,ArraySize(output)+1); for(int l=0;l<ArraySize(w);l++) output[o] += w[l]*x[i-width+l]; o++; } ArrayResize(output,ArraySize(output)-width); } 赫兹股票量化显示一个动画图表,该图表根据参数 0<d<1: 而变化 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { for(double i=0.05; i<1.0; plotFFD(i+=0.05,1e-5)) } //+------------------------------------------------------------------+ void plotFFD(double fd, double thresh) { double prarr[], out[]; CopyClose(_Symbol, 0, 0, hist, prarr); for(int i=0; i < ArraySize(prarr); i++) prarr[i] = log(prarr[i]); frac_diff_ffd(prarr, fd, thresh, out); GraphPlot(out,1); Sleep(500); } 此为结果:

编辑
图例 1. 分数型差分 0<d<1 正如预期的那样,随着差分度 d 的增加,图表变得更加平稳,同时逐渐失去以往价位的“记忆”。 序列的权重(按价格值计算的标量乘积的函数)在整个序列期间保持不变,不需要重新计算。 根据分数型差分创建指标 为了便于在智能交易系统中使用,赫兹股票量化创建一个指标,应能够指定各种参数:差分度,删除过度权重的阈值大小,和显示历史的深度。 我不会在这里发布完整的指标代码,您可以在源文件中查看它。 我仅指出权重计算函数是相同的。 以下函数用于计算指标缓冲区数值: frac_diff_ffd(weights, price, ind_buffer, hist_display, prev_calculated !=0);

编辑切换为居中
图例 2. 幂指数为 0.3 和 0.9 的分数型差分 现在赫兹股票量化拥有了一个指标,可以非常准确地指示时间序列中动态变化的信息量。 当差分度增加时,信息丢失,序列变得更加平稳。 不过,只有价位数据丢失。 也许剩下的是周期性循环,它将成为预测的参考点。 因此,赫兹股票量化正在接近信息论方法,即信息熵,这将有助于评估数据量。 信息熵的概念 信息熵是与信息论相关的概念,它示意事件中包含的信息量。 通常,事件越具体或确定,它所包含的信息越少。 更具体地说,信息与不确定性的增加有关。 这个概念是由 Claude Shannon 引入的。 随机值的熵可以通过引入随机 X 值的分布概念来判定,该值取有限数量的值:

编辑
然后,事件(或时间序列)的具体信息定义如下:

编辑
熵值评估可以如下书写:
编辑
信息量和熵的测量单位取决于对数基数。 例如,这可以是 bits,nat,trits 或 hartleys。 我们不会详细阐述 Shannon 的熵理论。 然而,应当注意的是,这种方法不适合评估短期和有噪声的时间序列。 因此,Steve Pincus 和 Rudolf Kalman 提出了一种与金融时间序列相关的称为 “ ApEn”(近似熵)的方法。 该方法在 “不规则,波动,风险和金融市场时间序列” 一文中有详细论述。