[茶思]资产的分类方法

时间:2020-01-22 21:22:55   收藏:0   阅读:78

技术分享图片

资产类别(asset class),是指一群具有相似特性或遵循相同监管规定的投资品。这一定义中,未指明“相似”是多么相似,也未说明“特性”或“监管规定”具体指什么,因为显然按照不同角度以及不同的标准,资产类别可以有多种具体的定义和分类方法。

为什么要考虑资产分类这一问题?

资产分类是投资研究中的一个必要过程。

首先,通过聚类,对研究范围进行简化,更容易抓住主线逻辑。

第二,通过找出投资标的之间的相似性,可以对投资标的的性质以及价格驱动因素有初步的了解。

第三,进行资产分类后可以投资于每一类别中的典型品种,简化了交易过程。

由于资产分类标准的多元性,以及在投资过程中应当根据策略需求划分合适的资产类别,因此有针对性地进行资产分类是有必要的。例如,在运用宏观经济研究能力进行大类资产配置时,资产类别的划分应体现受宏观经济因素驱动的特性,而在进行中高频交易时,资产类别的划分应体现受流动性和市场博弈因素影响的特性。

资产类别划分思路

一种最为常见的大类资产划分方法,即将资产分为:权益类、固定收益类以及大宗商品,有时候还会加上“另类投资品”(可以视为“其他”类,常以房地产信托投资基金为代表)。这种分类方式既然被冠以“大类”的定语,自然十分粗糙。

回归本源,资产分类应当以资产价格走势的相似性为基准。视标准要求严格程度的不同,可分为最为粗放的“大类资产”,也可精细至每项投资品都是单独的分类。

且由于“相似性”是可以随着时间变化的,如果允许资产类别内的成份随着时间而调整,那么可以产生十分简化的分类集合。例如,一般权益类资产是根据公司所属行业进行分类的,但如果允许动态调整,那么可以根据Fama and French (1993) 或Fama and French (2015)将权益资产大致分为3类或5类,同样有很高的代表性。

进一步将思路打开,可以意识到资产分类的流程中应当允许资产重构——将资产进行组合、拆分等等操作并创造出新的资产。例如,可以通过信用债和利率债的组合创造CDS,它对企业的偿债能力有更好的代表性。

1. 基于时间序列的相似性

这是一种从数据出发的思路。

笔者本以为这种思路在机器统计学和机器学习领域有很多经典且广泛应用的算法,然而稍微查询后却发现方法并不多。有人指出,时间序列中蕴含的信息包括了每个位置上值的信息,以及序列形状的信息,因此较向量数据更为复杂。

一种常被提到的方法是用DTW(Dynamic Time Warping)定义时间序列之间距离,再用k-NN(k=1)算法做时间序列聚类,然而这种方法的算力消耗较大。

Python中用于时间序列机器学习的软件包tslearn中提供了三种聚类方法,可供参考,分别是:GlobalAlignmentKernelKMeans,KShape,以及TimeSeriesKMeans。

另一种思路是数据降维算法。典型的算法是PCA(主成分分析),应用这种算法的前提是允许资产重构。

网络博主Pulkit Sharma总结了12种常见的数据降维算法,分别是:

  1. Missing Value Ratio
  2. Low Variance Filter
  3. High Correlation Filter
  4. Random Forest
  5. Backward Feature Elimination
  6. Forward Feature Selection
  7. Factor Analysis
  8. Principal Component Analysis
  9. Independent Component Analysis
  10. Methods Based on Projections
  11. t-Distributed Stochastic Neighbor Embedding (t-SNE)
  12. UMAP

具体的算法解释以及Python代码可参考博客原文或者博客翻译

2. 基于资产价格的驱动因素

这是一种从逻辑出发的思路。

从逻辑出发,检查大类资产分类中权益、固收和大宗商品之间的差异。根据其定价原理,权益价格是企业未来收益的折现,债券价格是无风险的现金流加上违约、流动性等风险带来的溢价,大宗商品价格则是供求关系的均衡。由于价格决定机制的不同,可以出现“商品价格涨,股价跌”、“股价涨,债券跌”等任意组合的情况。例如在完全竞争市场中,企业生产原料价格上涨导致产品价格上涨,这种情况下商品价格上涨,但企业的利润空间被压缩因而股票价格会下跌。又如企业通过风险投资向新型商业模式转型的情况下,由于新模式的定价水平高,企业的股价有所提升,同时由于企业的现金流水平不确定性提高,企业的债券违约风险也有所上升。

然而很难有一种“界限分明的逻辑”。比如房地产行业和家电行业的股票,虽说是两个不同行业,但都受到所谓地产经济周期的驱动。随着经济环境的改变,不同类别资产之间的关系也会时而分明时而紧密地变化。

深究的话,无论是时间序列数据之间距离的度量,还是逻辑概念,都有本质上的模糊不清。不同资产分类方法得到的结果,可以是相似的,同时又微妙地不同。

按照稍微精细一些的产业逻辑或市场划分,则大宗商品和固定收益资产可以划分为以下类别:

但权益类资产的划分远没有这样简单。行业内常采用的权益资产分类标准均是基于行业的,国际上的常用标准包括SIC/NAICS和GICS,国内的常用标准包括证监会行业分类标准、Wind行业分类标准和申万行业分类等,具体情况如下:

相比较而言,笔者更倾向于使用GICS和Wind标准来划分国内外上市公司的类别。但任何分类标准都是有缺点的,这取决于使用环境。例如,从产业链的角度讲,建材与房地产开发分别属于房地产行业的上下游,但在Wind行业分类中,建材属于材料行业,而房地产开发属于房地产行业,未能直接体现出其产业关系。

笔者采用的资产分类体系及代表品种

笔者采用的资产分类体系(中国)及代表品种(括号中是其Wind代码)如下:

其中权益类证券的分类主要参考了Wind行业分类标准并进行了删减。

资产分类体系代表性的验证

在选用资产分类方法时,常面临两难的处境——一方面我们希望分类体系尽可能简洁,另一方面又希望分类指数或代表型品种能够尽可能地解释其他所有资产类别的价格变化。简洁是很容易做到的,这里主要举例说明如何衡量分类体系的“解释能力”。

对于单一回归方程,R2可在一定程度上作为解释能力的代表。我们对每项资产进行回归,并将R2的平均值作为资产分类体系(解释变量)的解释能力的取值。具体代码如下:

import pandas as pd

# 样本时间为2019-10-08到2020-01-21
# 被解释变量包含商品期货、债券利率和股票等共3719项资产
# 解释变量共49个变量
dfy = pd.read_excel("yvariables.xlsx")
dfx = pd.read_excel("xvariables.xlsx")
dfy = dfy.fillna(method='ffill')
dfx = dfx.fillna(method='ffill')
npy = dfy.drop('Date',axis=1).values
npx = dfx.drop('Date',axis=1).values

from sklearn import linear_model

leny=len(npy[0])
# 这里直接取超参为0.1
clf = linear_model.Lasso(alpha=0.1)
r2list = []
for i in range(leny):
    clf.fit(npx, npy[:,i])
    esty = clf.predict(npx)
    tss = sum((npy[:,i] - npy[:,i].mean())**2)
    if(tss==0):
        r2 = 0
    else:
        rss = sum((esty - npy[:,i])**2)
        r2 = 1 - rss/tss
    r2list.append(r2)

# 总体解释能力是体系指标对每个资产R方的平均值
print(sum(r2list)/len(r2list))

结果显示,样本时间内我们指标体系的代表性或解释能力为51.7%。

但需要注意的是,我们使用了Lasso,利用R2作为解释能力的指标并不完全合适。

R2的计算及其问题:

回归方程中,TSS(Total Sum of Squares)反映全部数据误差大小的平方和,ESS(Explained Sum of Squares)反映自变量与因变量之间的相关程度的偏差平方和,RSS(Residual Sum of Squares)是残差的平方和。具体公式如下:
\[ \begin{align} TSS=\Sigma(y_i-\bar{y})^2 \ESS=\Sigma(\hat{y_i}-\bar{y})^2 \RSS=\Sigma(\hat{y_i}-y_i)^2 \end{align} \]
R2的算式如下:
\[ R^2=1-RSS/TSS \]
显然上式小于等于1,且如果等于1,说明方程的预测值和观测值均相等。但R2大于等于0需要一定的前提条件。
\[ \begin{aligned} TSS &= \Sigma(y_i-\bar{y})^2 \&= \Sigma(y_i-\hat{y_i}+\hat{y_i}-\bar{y})^2 \&= \Sigma(e_i)^2 + 2\Sigma e_i(\hat{y_i}-\bar{y}) + \Sigma(\hat{y_i}-\bar{y})^2 \&= RSS + ESS +2\Sigma e_i(\hat{y_i}-\bar{y}) \end{aligned} \]
由于在OLS回归中,残差项求和为0,且残差项与预测值线性不相关,因此有

TSS=RSS+ESS

这在Lasso或其他一般的回归模型中基本都不成立。

原文:https://www.cnblogs.com/teaforinvestors/p/12229574.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!