快捷搜索:  汽车  科技

量化交易正态分布:Quantopian量化交易6

量化交易正态分布:Quantopian量化交易6而在现实生活中,比如要计算一个投资组合持仓的平均收益,各只股票的持仓数量与价格都不近相同,这时候就需要加权算数平均了。示例代码算术平均值注:其中Xi表示集合中各观测值 使用NumPy提供的mean()方法,我们可以很轻松的获取算术平均值。

对于一个数据集,通常会从数据的中心和分散程度两方面去进行衡量,最为常用的两个指标为均值(mean)与方差(variace),均值是用来衡量数据的中心,而方差则展示了数据的分散程度。

量化交易正态分布:Quantopian量化交易6(1)

均值与方差

首先我们先来介绍下均值,均值又分为三种

算术平均值(Arithmetic mean)

算术平均是日常中使用最为频繁的一种均值,它的数学定义式如下:

量化交易正态分布:Quantopian量化交易6(2)

算术平均值

注:其中Xi表示集合中各观测值

使用NumPy提供的mean()方法,我们可以很轻松的获取算术平均值。

示例代码

而在现实生活中,比如要计算一个投资组合持仓的平均收益,各只股票的持仓数量与价格都不近相同,这时候就需要加权算数平均了。

量化交易正态分布:Quantopian量化交易6(3)

加权算术平均

注: wi表示权重数组,所有权重相加等于1

几何平均值

算术平均使用加法来做平均,而几何平均则使用乘法来做平均,其定义式如下:

量化交易正态分布:Quantopian量化交易6(4)

几何平均

注:如果所有的观测值Xi均大于等于0,还可以通过取对数,使得公式转化为加法的形式

量化交易正态分布:Quantopian量化交易6(5)

对几何平均公式取对数

使用SciPy(另一个Python常用的科学计算库,NumPy属于其一部分)的gmean()函数可以计算几何平均值。

量化交易正态分布:Quantopian量化交易6(6)

示例代码

注:如果数据集中有负数,该如何计算几何平均值,这个问题在计算资产投资回报的时候很容易解决,因为收益率最低值为-1(-100%),所以我们可以在所有值之上加1再计算算术平均值,此时公式可以写成:

量化交易正态分布:Quantopian量化交易6(7)

计算收益率的算数平均

量化交易正态分布:Quantopian量化交易6(8)

示例代码

调和平均值

调和平均数一般使用较少,其定义式为:

量化交易正态分布:Quantopian量化交易6(9)

调和平均数

这个式子可能不太好理解,我们可以做一个倒数操作,可以看到调和平均的倒数是所有观测值倒数的算术平均,例如,一个组合采用平均投资金额的策略,即每个股票分配相同的金额,股票价格高,则购买数量少,反之亦然。调和平均代表购买每只股票的平均成本。

量化交易正态分布:Quantopian量化交易6(10)

调和平均数倒数

使用SciPy的hmean()函数可以计算调和平均值

量化交易正态分布:Quantopian量化交易6(11)

示例代码

衡量数据的中心的方式除了使用均值外,常见的还有中位数(median)与众数(mode)

  • 中位数表示将数据集排序后处于中间位置的数值,如果数据集中元素为奇数个,则为(n 1)/2位置元素,如果数据集元素为偶数个,则为n/2和(n 2)/2两个元素的平均值。

  • 众数则表示结合中出现次数最多的元素

以前这几种方式都可以看作为点估计(以一个点表示整个数据集的特性)的一种,在使用的时候一定要确定没有遗漏其他的重要信息,一般情况下均值不会单独使用,会辅以数据分散情况的指标。还有一点需要特别注意,尽量不要假设数据的分布,因为如果假设的分布与真实不符,那么即使你使用了正确的度量方法,也会得到一个令人啼笑皆非的结果。

接下来的部分,为大家介绍度量数据分散程度的几种方式。而这部分在金融中尤为重要,因为衡量风险的一个主要途径就是看历史的收益的分散情况,如果收益数据围绕在均值附近很集中的位置,那么可以认为风险很小,相反,如果收益很分散,则风险就很高。

首先,我们先准备一下数据,使用NumPy产生包含20个随机整数的一个数组

量化交易正态分布:Quantopian量化交易6(12)

数据准备示例代码

跨度(Range)

跨度为数据集中最大值与最小值之差,集合中异常值会对其造成很大影响,使用np.ptp()方法可以获取该值。

量化交易正态分布:Quantopian量化交易6(13)

获取跨度值示例代码

平均绝对偏差(MAD/Mean Absolute Deviation)

平均绝对偏差表示所有元素与算数平均的绝对距离的算术平均值,定义式如下:

量化交易正态分布:Quantopian量化交易6(14)

平均绝对偏差

注:n表示元素个数, μ表示算数平均值,特别注意是要取绝对值

循环求和再除以元素个数,很容易就能得到MAD值:

量化交易正态分布:Quantopian量化交易6(15)

计算MAD

方差与标准差(Variance & standard deviation)

方差表示所有元素与算数平均的平方差的算术平均值,定义式如下:

量化交易正态分布:Quantopian量化交易6(16)

方差

注:与平均绝对偏差相比,方差因为其可微分的特性使用得更为广泛

对方差开方后,就可以得到标准差。

NumPy提供了np.var()与np.std()方法计算方差与标准差。

量化交易正态分布:Quantopian量化交易6(17)

计算方差与标准差

提到标准差,我们在这里引入切比雪夫不等式,它可以帮我们理解标准差的作用。切比雪夫不等式是指,样本落在算数平均左右k(k>1)个标准差内的概率,至少是1-1/k^2,这个范围与真实的概率可能相差较多,但因为其对于数据与分布没有任何要求,应用非常广泛。

半方差与半离差(Semivariance & semideviation)

方差与标准差虽然展示了数据的波动性,但是却没有区分波动的方向,特别是在金融中计量资产收益率的时候,我们往往更关注与低于预期值的部分,这就是半方差与半离差存在的意义。

半方差定义式如下:

量化交易正态分布:Quantopian量化交易6(18)

半方差

注:公式中(n<)表示比算数平均值小的元素个数,求和部分也有此过滤条件

半离差则为半方差的平分根。

NumPy中没有自带的函数,但根据定义也很容易实现

量化交易正态分布:Quantopian量化交易6(19)

计算半方差代码

如果将公式中的算数平均换做一个最低目标值,就可以得到目标半方差与目标半离差

量化交易正态分布:Quantopian量化交易6(20)

目标半方差

到这里,本篇文章也接近尾声,但是最后要说的事情非常重要!目前我们所计算的这些均值与方差,都只是针对样本数据的,但它们是否能正确的反应总体的分布却不一定,技术上和细节处之后都还需要大量的工作来保证最后结果的有效性。之后的文章会包含此部分内容。

感谢阅读,欢迎订阅!

猜您喜欢: