布林带数学原理及探究
布林带
(Bollinger Bands,BBands)又称布林指标,是John Bollinger在1980年提出的一种分析方法。其核心原理为:使用移动平均法和统计理论里的\(3\sigma\)原理构造出三条轨道线,以此来对股价进行分析。
移动平均法
移动平均
(Moving Average)是一种被广泛使用的时间序列分析技术,其基本原理是:通过依次计算序列在\(t\)期内的平均值,来对序列未来的趋势进行预估,能很好的消除序列的随机扰动,反映出序列的周期
\(T\)和长期趋势
\(Y\)。从数学理论来看,移动平均
是卷积
的一种特殊形式,或者说,卷积
是对移动平均的一种推广。移动平均
按平均值计算方式的不同可分为以下几种:
为方便后续讨论,定义时间序列: $$y:{y_1,y_2,...y_{t-1},y_t,y_{t+1},y_n}$$
-
简单移动平均
简单移动平均
(Simple Moving Average)是直接使用\(t\)期的算数平均值作为\(t\)期的移动平均值:\(SMA_1^t=\frac{\sum_{i=1}^{t}y_i}{t}\),\(SMA_2^{t+1}=\frac{\sum_{i=2}^{t+1}y_i}{t}\),\(SMA_{n+1-t}^n=\frac{\sum_{i=n+1-t}^{n}y_i}{t}\),最后得到由原始序列移动平均后的新序列\(y_{new} :SMA_i,i=1,2,...,n-1\),新序列消除了原始序列的随机扰动,可以更直观的观测原始序列的周期和趋势。值得一提的是,在计算移动平均时还有一个需要关注的点--采用的移动窗口大小,也就是上文中的\(t\)值,下面的动图展示了移动窗口从\(0-360\)动态变化时,移动平均序列的变化趋势:
可以很直观的看到,随着移动窗口的\(t\)的增大,曲线越来越平滑,当\(t=360\)时,移动平均所得的序列曲线已经近似为水平线,这是使用移动平均法最令人的诟病的地方--滞后性,事实上所有的移动平均算法都存在这样的问题:随着移动窗口的增大,移动平均后的得到序列都会表现出一定的滞后性只是有些算法优化的好,出现滞后的\(t\)会更大,而有些会在\(t\)值较小时就会出现滞后,实际还需考虑原始序列的长度与\(t\)值的相对大小。所以在实际使用时须根据实际序列选定适宜的移动窗口\(t\),以此计算出的移动平均序列才能正确体现原始序列的长期趋势和周期。
简单移动平均只是移动平均算法中最为简单的一种,其它的还有诸如
滑动加权移动平均
、指数移动平均
、分形自适应移动平均
、赫尔移动平均
等算法,由于布林带在计算是只采用了简单移动平均法,在此对其他算法不再做详细介绍,等以后有时间再专门开一篇文章来讨论。\(3\sigma\)原则
熟悉正态分布的读者应该知道,正态分布曲线(也称为高斯曲线)是一条以\(x=\mu\)为对称轴的钟形曲线,从图形可以很直观的看到,随机变量在对称轴附近分布最为集中,离对称轴越远数据分布越少。数学是严谨的,仅仅只有感觉是远远不够的,为了验证这种直观想法是否正确,接下来使用理论工具来进行证明。首先使用数学语言来进一步描述我们的猜想:服从正态分布的随机变量总是集中分布在对称轴\(X=\mu\)附近,并且离对称轴越远数据分布越稀疏,再使用正态分布的两个重要参数\(\mu,\sigma\)来做进一步刻画--随机变量的取值在\((\mu-\sigma,\mu+\sigma)\)之间的概率应该是比较大的,为了使证明更具一般性,直接计算随机变量的取值在\((\mu-k\sigma,\mu+k\sigma)\)之间的概率,即计算\(P\{|x-\mu|\leq{k\sigma}\}\)的值,其中随机变量\(X\)服从正态分布,计算过程如下:
\[f = P\{|x-\mu|\leq{k\sigma}\}=\int_{\mu-k\sigma}^{\mu+k\sigma}\frac{1}{\sqrt{2\pi}\sigma}e^{\frac{-(t-\mu)^2}{2\sigma^2}}\,\mathrm{d}t \]作变换\(z=\frac{t-\mu}{\sigma}\),整理得\(f=\int_{-k}^{k}\frac{1}{\sqrt{2\pi}}e^{\frac{-z^2}{2}}\,\mathrm{d}z=2\int_{0}^{k}\frac{1}{\sqrt{2\pi}}e^{\frac{-z^2}{2}}\,\mathrm{d}z=2(\int_{-\infty}^k-\int_{-\infty}^0)\frac{1}{\sqrt{2\pi}}e^{\frac{-z^2}{2}}\,\mathrm{d}z\)
两个积分中由于被积函数是标准正态分布的概率密度函数,先计算第二个积分:
令\(I = 2\int_{-\infty}^{0}\frac{1}{\sqrt{2\pi}}e^{\frac{-z^2}{2}} \,\mathrm{d}z=\int_{-\infty}^{+\infty}\frac{1}{\sqrt{2\pi}}e^{\frac{-z^2}{2}} \,\mathrm{d}z\)
对于该无穷积分,考虑到其在实数域是收敛的,故可以考虑构造二重积分进行求解:
\[I^2=\int_{-\infty}^{+\infty}\frac{1}{\sqrt{2\pi}}e^{\frac{-u^2}{2}}du\int_{-\infty}^{+\infty}\frac{1}{\sqrt{2\pi}}e^{\frac{-v^2}{2}}dv=\iint_{\Omega}\frac{1}{2\pi}e^{\frac{-(u^2+v^2)}{2}}d\delta \]做极坐标变换\(\rho(r,\theta)\),即得:
\[I^2=\iint_{\Omega}\frac{1}{2\pi}e^{\frac{-(u^2+v^2)}{2}}d\delta=\iint_{\chi}\frac{1}{2\pi}e^{\frac{-r^2}{2}}|J_{\rho}|d\rho \]其中,极坐标变换的Jacobi行列式:
\[J_{\rho}=\frac{D(x,y)}{D(r,\theta)}=r \]于是:
\[I^2=\iint_{\chi}\frac{1}{2\pi}e^{\frac{-(r^2)}{2}}|J_{\rho}|d\rho=\iint_{\chi}\frac{1}{2\pi}e^{\frac{-(r^2)}{2}}|r|d\rho=\int_{-\infty}^{+\infty}\int_{0}^{2\pi}\frac{1}{2\pi}e^{\frac{-r^2}{2}}|r|drd\theta \]简化得:
\[I^2=\int_{0}^{2\pi}\frac{1}{\pi}d\theta \int_{0}^{+\infty}re^{\frac{-r^2}{2}}dr=-e^{\frac{-r^2}{2}} |_{0}^{+\infty}=0-(-1)=1 \]得到\(f = 2\int_{-\infty}^{k}\frac{1}{\sqrt{2\pi}}e^{\frac{-z^2}{2}} \,\mathrm{d}z-1=2\Phi(k)-1\),对于第一个无穷积分\(\Phi(k)\)在实数域是收敛的,但是目前无法使用初等函数表示其
原函数
,在实际计算时,可以将该被积函数作泰勒级数
展开来得到该无穷积分在某点处的积分值(通过控制展开的泰勒级数的项数可以得到任意精度的近似值)也可以使用数值计算中计算数值积分的几种方法(如复化辛普森法)类求该积分在某点的积分值。当然,由于被积函数是标准正态分布的概率密度函数,也可以直接查表得到积分值。查表得到\(K=1,2,3\)时,\(\Phi(k)\)与\(f\)的值如下:
k值 $ \Phi(k)$ \(:f:2\Phi(k)-1\) 1 0.8413 68.26% 2 0.9772 95.44% 3 0.99865 99.74% 也就是说,对于正态分布随机变量在\((\mu-k\sigma,\mu+k\sigma)\)内取值的概率为99.73%,在\((\mu-k\sigma,\mu+k\sigma)\)之外取值的概率仅为0.27%,按
小概率原理
这种情况基本不会发生,支持我们的猜想得到了理论证明,而这个猜想经过整理就得到在概率统计中有着广泛应用的\(3 \sigma\)准则。需要注意的是\(3 \sigma\)准则是有适用范围的,要求随机变量服从正态分布。对于非正态分布可依据
中心极限定理
重构随机变量,再结合切比雪夫不等式
使用。切比雪夫不等式:$$P{|X-\mu|\geq k\sigma}\leq \frac{1}{k^2}$$
布林带
基于\(3\sigma\)准则,约有\(95.44\%\)的值是落在序列均值的两倍标准差之内的,使用移动平均后的序列表示均值,即可得到布林带的的三条核心曲线:
中轨线
:对序列做简单移动平均后得到新序列曲线,能够很好的体现原序列的周期和长期趋势。一般而言,简单移动平均的移动窗口大小依据实际数据来确定,为方便说明,假设\(N_t\)为第\(t\)时间段内窗口大小(即项数)
上轨线
:中轨线+\(k\)第\(t\)时间段的标准差(k为整数)
下轨线
:中轨线-\(k\)第\(t\)时间段的标准差
从以上的讨论来看,布林带只是概率论中\(3\sigma\)准则的一个简单延伸,是用概率论的眼光来看待序列。最终使用三条轨道线的趋势来评估原始序列在未来的一个发展趋势,由于布林带算法理论的粗糙,仅仅只适合作为参考,并不能作为判断依据,有兴趣的读者可以根据上文的相关理论进一步优化布林带算法,来得到更加可靠的结论。