python数学应用

布林带数学原理探究

2019-06-19  本文已影响0人  殉道者之花火
布林带

布林带(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}

  可以很直观的看到,随着移动窗口的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时间段内窗口大小(即项数)
上轨线:中轨线+kt时间段的标准差(k为整数)
下轨线:中轨线-k
t时间段的标准差

  从以上的讨论来看,布林带只是概率论中3\sigma准则的一个简单延伸,是用概率论的眼光来看待序列。最终使用三条轨道线的趋势来评估原始序列在未来的一个发展趋势,由于布林带算法理论的粗糙,仅仅只适合作为参考,并不能作为判断依据,有兴趣的读者可以根据上文的相关理论进一步优化布林带算法,来得到更加可靠的结论。

上一篇下一篇

猜你喜欢

热点阅读