原文地址:快速构建指数的方法,和主成分分析PCA
作者:曹毅
利用log(P2)-log(P1)=log(P2/P1)=log(1+r) = r 的原理,我想到一个快速构建股票指数的方法:
S= a * log(x) + b * log(y) + c * log(z) + ...
a,b,c等等分别是权重(金额),x,y,z等等分别是各股的股价
这个指数是自动rebalance的。
再对log(x)等等的协方差矩阵用主成分分析PCA,我们可以找到几个互不相关的正交股(协方差=0),比如:
u = 2x + y - z
v = x -5y + 2z
u和v是不相关的(协方差=0)。用u,v来表达x,y,z股票集合大部分的信息。这对持有大量股票的基金经理比较有用。
x,y,z等等是相关的(协方差<>0),比如一个指数的前10大成分股。
我感兴趣的是u,v是什么样的走势,有研究说特征值最大的那个对应的u,是跟等权指数(也就是S=log[x]+log[y]+log[z])高度相似的。这个还有待我考证。
参考资料:
http://www.quantcode.com/modules/mydownloads/singlefile.php?lid=119 这里有excel vba下载,用的是jacob算法(https://en.wikipedia.org/wiki/Jacobi_eigenvalue_algorithm),我看了下vba代码,用11个变量,221行数据,没有把变量标准化,也就是没有 (log[x]-mean)/stdev,尽量不要修改这么复杂的代码,所以要让你的数据fit进来(也即:行不够,放"ND"; 列不够,放零)。
还有个不错的前交易员的blog,查PCA的时候看到的,他好像是机器学习背景: https://quantmacro.wordpress.com/
例1:选取11个股AAPL
MSFT
GOOG
CVX
MMM
TXN
AMZN
TLT
FB
BA
SDS
2015年9月初到2016年6月底的日线数据,下图是前两个主因子PC1,PC2的权重分布,由于这段时间大多数股票都下跌,而唯独TLT(美股国债)和SDS(-2x spx50)走势不同,所以我们看到它们的权重小于0,而其他股票的权重都在0.3左右。
例2:同样时间段,7个股
SPY
TLT
SLV
DBC
USO
HYG
EEM
算出来主因子PC1的权重是
0.19
-0.12
0.15
0.33
0.83
0.12
0.34 (有没有剔除mean,结果都一样)
但是除以/stdev后,有区别:
0.57
-0.25
0.09
0.24
0.25
0.36
0.60
SAS软件里面,第一种是对协方差矩阵cov做分解,第二种是没有标注cov,所以默认是用相关系数矩阵,也就是除以了stdev的。
第一种处理法明显给了USO太多权重(说明USO是个主导因子,也即方差大的变量),而且TLT国债的权重是负的(因为负相关),导致PC1组合的走势波动巨大。第二种方法权重比较平均,算出来的PC1的走势也和等权指数比较接近,但是我觉得除以stdev没有道理,因为这样会缩小该股的涨跌幅。这是要值得注意的。
转载请注明原文地址: https://ju.6miu.com/read-672738.html