风险提示:央行等十部委发布《关于进一步防范和处置虚拟货币交易炒作风险的通知》, 请读者提高风险意识。

用多因子策略构建强大的加密资产投资组合之大类因子分析

该系列文章介绍了构建加密资产投资组合的多因子模型,包括理论基础、数据预处理和因子有效性检验。通过相关性检验和合成,筛选出对策略收益有不同解释和贡献的有效因子,构建强大的投资组合。文章还介绍了因子取舍和合成的方法,并提出了历史IC半衰加权和最大化ICIR加权的方法来计算因子权重,从而提高因子的有效性。最后,通过主成分分析和降噪方法,可以更准确地估计协方差矩阵和降低数据维度。这些方法可以帮助投资者做出更明智的投资决策。

LUCIDA & FALCON
LUCIDA & FALCON
热度 ...

原文作者:LUCIDA & FALCON

原文来源:mirror

书接上回,关于《用多因子模型构建强大的加密资产投资组合》系列文章中,我们已经发布了三篇:《理论基础篇》、《数据预处理篇》、《因子有效性检验篇》。

前三篇分别解释了多因子策略的理论与单因子测试的步骤。

一、因子相关性检验的原因:多重共线性

我们通过单因子测试部分筛选出一批有效因子,但以上因子不能直接入库。因子本身可以根据具体的经济含义进行大类划分,同类型的因子间存在较强的相关性,若不经相关性筛选直接入库,根据不同因子进行多元线性回归求预期收益率时,会出现多重共线性问题。计量经济学中,多重共线性是指回归模型中的一些或全部解释变量存在“完全”或准确的线性关系(各变量间高度相关)。

因此,有效因子筛选出后,首先需要根据大类对因子的相关性进行T检验,对于相关性较高的因子,要么舍弃显著性较低的因子,要么进行因子合成。

多重共线性的数学解释如下:

数据会存在两种情况:

数据多重共线性导致的后果:

1.完全共线性下参数估计量不存在

2.近似共线性下OLS估计量非有效

我们首先定义方差膨胀因子(variance- inflating factor, VIF)为  ,指参数估计量的方差由于出现多重共线性而膨胀,随着相关系数增加,VIF显著增加。

数据

二、步骤一:同类型因子的相关性检验

检验新求出的因子与已入库因子的相关性。通常来说,有两类数据求相关性:

1.根据所有token在回测期间的因子值求相关

2.根据所有token在回测期间的因子超额收益值求相关

我们所求的每个因子对token的收益率都有一定的贡献和解释能力。进行相关性检验**,是为了找到对策略收益有不同解释和贡献的因子,策略的最终目的是收益**。如果两个因子对收益的刻画是相同的,即使两个因子值存在很大差别也无意义。因此,我们并不是想找到因子值本身差异大的因子,而是想找到因子对收益刻画不同的因子,所以最终选择了用因子超额收益值求相关。

我们的策略是日频,所以按回测区间的日期计算因子超额收益之间的相关系数矩阵

数据编程求解与库内相关最高的前n个因子:

defget_n_max_corr(self, factors, n=1): factors_excess = self.get_excess_returns(factors) save_factor_excess = self.get_excess_return(self.factor_value, self.start_date, self.end_date)iflen(factors_excess)<1:return factor_excess,1.0,None factors_excess[self.factor_name]= factor_excess['excess_return'] factors_excess = pd.concat(factors_excess, axis=1) factors_excess.columns = factors_excess.columns.levels[0]# get corr matrix factor_corr = factors_excess.corr() factor_corr_df = factor_corr.abs().loc[self.factor_name] max_corr_score = factor_corr_df.sort_values(ascending=False).iloc[1:].head(n)return save_factor_excess, factor_corr_df, max_corr_score

三、步骤二:因子取舍、因子合成

对于相关性较高的因子集合,可以采取两种方式处理:

(1)因子取舍

根据因子本身的ICIR值、收益率、换手率、Sharpe 比率,挑选某维度下最有效的因子进行保留,删除其他因子。

(2)因子合成

对因子集合中的因子进行合成,截面上尽可能多的保留有效信息

关于【用多因子策略构建强大的加密资产投资组合之大类因子分析】的延伸阅读

  • 走近BTC:理解BitVM所需的背景知识(1)

    Delphi Digital发布了比特币二层技术研报,介绍了比特币Rollup和四大采用BitVM的项目。BitVM利用MATT思想,将复杂程序和数据存储在链下的Merkle树中,只发布Merkle Root到链上,实现比特币原生的验证欺诈证明。比特币脚本和Taproot以及预签名是实现这一方案的重要技术。P2SH交易类型中可以添加Script,比特币节点会验证公钥和公钥hash是否匹配,以及数字签名是否正确。隔离见证/SegWit升级解决了交易延展性问题,P2WSH功能与P2SH相似。Taproot可精简脚本内容,BitVM基于此构建复杂方案。下一篇文章将详细介绍Taproot、预签名等技术。

  • 重新理解Marlin:AI下半场的可验证计算L0「新基建」

    Marlin是一种可验证云计算服务,利用加密技术保证数据安全,为AI+Web3应用提供低延迟、低成本的解决方案。它基于TEE和ZKP技术,为用户提供通用化的云计算方案,并通过激励机制吸引节点为网络贡献资源。Marlin的愿景是成为AI世界的可验证通用L0,为Oracle预言机、ZK Prover系统、AI人工智能等应用场景提供节点算力和存储等网络资源服务。它可以为AI大模型训练提供安全的计算环境,并为多元化应用场景提供可验证计算中间件。在AI+Web3时代,Marlin有巨大的价值潜力,可能成为未来AI+Web3应用的关键基础设施。

假设当前有3个待处理的因子矩阵:

数据

2.1 等权加权

各因子权重相等,综合因子=各因子值加总求平均。

Eg.动量类因子,一个月收益率、两个月收益率、三个月收益率、六个月收益率、十二个月收益率,这六个因子的因子载荷各占1/6的权重,合成新的动量因子载荷,然后再重新进行标准化处理。

synthesis1 = synthesis.mean(axis=1) # 按行求均值

2.2 历史IC加权、历史ICIR、历史收益加权

用回测期的IC值(ICIR值、历史收益值)对因子进行加权。过去有很多期,每一期都有一个IC值,所以用它们的均值作为因子的权重。通常使用回测期IC的均值(算数平均值)作为权重。

数据2.3历史IC半衰加权、历史ICIR半衰加权

2.1与2.2都是计算算数平均值,回测期的每一次IC、ICIR对于因子的作用被默认为相同。

但现实中,回测期的每一期对于当期的影响程度不完全相同,存在时间上的衰减。越接近当前期的时期,影响越大,越远影响越小。在此原理,求IC权重前首先定义一个半衰权重,距离当期越近的权重值越大、越远权重越小。

半衰权重数学推导:

数据* 半衰期H:每向前推H期,权重值以指数下降的方式降低一半* T:考虑回测的期数

数据


2.4 最大化ICIR加权

通过求解方程,计算最优因子权重w使得ICIR最大化

数据协方差矩阵的估计问题:协方差矩阵用于衡量不同资产之间的关联性。统计学中常以样本协方差矩阵代替总体协方差矩阵,但在样本量不足时,样本协方差矩阵与总体协方差矩阵的差异会很大。所以有人提出了压缩估计的方法,原理是使估计协方差矩阵与实际协方差矩阵之间的均方误差最小

方式:

1.样本协方差矩阵

# 最大化ICIR加权(样本协方差) ic_cov = np.array(ic.cov()) inv_ic_cov = np.linalg.inv(ic_cov) ic_vector = np.mat(ic.mean()) w = inv_ic_cov * ic_vector.T w = w / w.sum() synthesis4 =(synthesis * pd.DataFrame(w,index=synthesis.columns)[0]).sum(axis=1)

2.Ledoit-Wolf收缩:引入一个缩小系数,将原始的协方差矩阵与单位矩阵进行混合,以减少噪音的影响。

# 最大化ICIR加权(Ledoit-Wolf压缩估计协方差)from sklearn.covariance import LedoitWolf model=LedoitWolf() model.fit(ic) ic_cov_lw = model.covariance_ inv_ic_cov = np.linalg.inv(ic_cov_lw) ic_vector = np.mat(ic.mean()) w = inv_ic_cov*ic_vector.T w = w/w.sum() synthesis4 =(synthesis * pd.DataFrame(w,index=synthesis.columns)[0]).sum(axis=1)

3.Oracle近似收缩:对Ledoit-Wolf收缩的改进,目标是通过对协方差矩阵进行调整,从而在样本大小较小的情况下更准确地估计真实的协方差矩阵。(编程实现与Ledoit-Wolf收缩同理)

2.5 主成分分析PCA

主成分分析(Principal Component Analysis,PCA)是一种用于降维和提取数据主要特征的统计方法。其目标是通过线性变换,将原始数据映射到一个新的坐标系,使得数据在新坐标系下的方差最大化。

具体而言,PCA首先找到数据中的主成分,也就是数据中方差最大的方向。然后,它找到与第一个主成分正交(无关)且具有最大方差的第二个主成分。这个过程一直重复,直到找到数据中所有的主成分。

# 主成分分析(PCA)from sklearn.decomposition import PCA model1 = PCA(n_components=1) model1.fit(f) w=model1.components_ w=w/w.sum() weighted_factor=(f*pd.DataFrame(w,columns=f.columns).iloc[0]).sum(axis=1)

免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:LUCIDA & FALCON,如有侵权请联系删除。转载或引用请注明文章出处!

标签:

分享至
https://www.chainlook.cn/toutiao/1707195009.html

下一篇:

Deribit上今日最大ETH期权大宗买入3月底2100美元的看跌期权和2600美元的看涨期权

链观CHAINLOOK消息,Deribit 亚太商务负责人 Lin Chen 在 X 平台发文表示,这两天 B […]

免责声明:
链观CHAINLOOK作为区块链技术应用与Web3行业研究的智库媒体,旨在为中国区块链专家、学者们提供最新的行业资讯信息与数据样本,用于区块链技术研究与创新。本站所发布的文章仅代表作者的个人观点,不代表链观CHAINLOOK官方立场,本站所发布的区块链行业研究报告与数据分析成果是通过人工智能算法对数据内容进行分析与归纳生成,不代表任何投资暗示与建议,链观CHAINLOOK不承担法律责任。

风险提示:
虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,链观CHAINLOOK坚决反对各类代币炒作,请读者提高风险意识,理性看待区块链技术应用及市场风险。

© 链观CHAINLOOK All Rights Reserved. 京ICP备18054193号-5