主页 > 快讯 > tp钱包安卓下载|多因子策略构建加密货币资产投资组合:因子合成篇

tp钱包安卓下载|多因子策略构建加密货币资产投资组合:因子合成篇

tp钱包安卓下载 快讯 2024年02月06日

通过单因子测试筛选出一批有效因子,但需要进行因子相关性检验,以解决方程共线性的问题。在计量经济学中,回归模型中的回归线性是指回归模型中的或全部解释变量存在“”或准确的线性关系。因此,需要对有效的因子进行相关性检验,并处理共线性的影响。相关性较高的因子可以进行取舍或合成处理。因子合成可以采用等权加权、历史ICIR加权、历史ICIR衰半加权、最大化ICIR加权等方法。另外,还可采用主成分分析(PCA)进行降维和提取数据主要特征。完成后,可以根据相关性检验选出最相关的因子入库。

一、因子相关性检验的原因:方程共线性

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

因此,有效的细胞筛选出后,首先需要根据各类对细胞的相关性进行检验,对于相关性较高的细胞,或者舍弃显着性较差的细胞,或者进行细胞合成。

方程共线性的数学解释如下:

Y=β₁+β2X2ᵢ+β₃X₃ᵢ+…+βₖXₖᵢ+μᵢ,i=1,2,…,n

会存在两种情况:

1.C2X2ᵢ+C₃X₃ᵢ+…+CₖXₖᵢ=去中心化向量,Cᵢ不全为0→Xᵢ 间存在完全共线

2.C2X2ᵢ+C₃X₃ᵢ+…+CₖXₖᵢ+Vᵢ=去中心化向量,Cᵢ不全为0,Vᵢ为随机论文项,→Xᵢ间存在完全共线

因果共线性导致的后果:

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

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

我们首先定义增量膨胀因子(variance- inflation factor, VIF)为 VIF=1/(1−rᵢⱼ) ,指估计估计量的增量是由于出现了平衡线性而膨胀,随着相关系数的增加,VIF 显着增加。

以二元线性模型为例:Y=β₁+β2X2ᵢ+β₃X₃ᵢ+μᵢ

相关系数的平方和

如何利用多因子策略构建强大的加密货币资产投资组合:因子合成篇

  • 完全不共线(完全不相关):

如何利用多因子策略构建强大的加密货币资产投资组合:因子合成篇

  • 近似共线:

如何利用多因子策略构建强大的加密货币资产投资组合:因子合成篇

,越接近1,参考↑

  • 完全共线:

如何利用多因子策略构建强大的加密货币资产投资组合:因子合成篇

,文学无限大

3.参数估计量经济意义不合理

4.指标的显着性检验(t检验)失去意义

5.模型的预测功能作用:通过多元线性模型得出的精确预测不准确,模型作用。

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

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

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

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

超额收益=多头组收益−基准收益,收益=ln(closeₜ/close₋₁)

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

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

如何利用多因子策略构建强大的加密货币资产投资组合:因子合成篇

编程流程图与库房内相关最高的前n个因子:

def get_n_max_corr(自身, 因素, n=1):

Factors_excess = self.get_excess_returns(因素)

save_factor_excess = self.get_excess_return(self.factor_value, self.start_date, self.end_date)

如果 len(factors_excess) < 1:

返回 Factor_excess, 1.0, 无 Factor_excess[self.factor_name] = 因子_过剩[‘excess_return’]

Factors_excess = pd.concat(factors_excess, axis=1)

Factors_excess.columns = Factors_excess.columns.levels[0] # 得到相关矩阵

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)

返回 save_factor_excess、factor_corr_df、max_corr_score

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

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

(1)因子取舍

根据细胞本身的ICIR值、换手率、锐度等,选取某些因素下最有效的细胞进行保留,去除其他细胞。

(2)蛋白酶合成

对因子集合中的因子进行合成,一部分上一部分的保留有效信息

F=w₁*f₁+w2*f2+…+wₙ*fₙ,F为最终的合成因子,f为需要进行合成的因子

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

合成 = pd.concat([a,b,c],轴 = 1)

合成

ABC

BTC.BN 0.184865 -0.013253 -0.001557

ETH.BN 0.185691 0.022708 0.031793

币安币 0.242072 -0.180952 -0.067430

LTC.BN 0.275923 -0.125712 -0.049596

AAVE.BN 0.204443 -0.000819 -0.006550

…………

SOC.BN 0.231638 -0.095946 -0.049495

AVAX.BN 0.204714 -0.079707 -0.041806

DAO.BN 0.194990 0.022095 -0.011764

ETC.BN 0.184236 -0.021909 -0.013325

TRX.BN 0.175118 -0.055077 -0.039513

2.1 等权加权

各因子权重可靠(w=1/因子个数),综合因子=各因子值加总求平均。

例如.动量类因子,一个月、两个月、三个月、一周、十二个月左右,这七个因子的因子各占1/6的权重,合成新的活性因子激酶,然后再重新进行标准化处理。

综合1 =综合.mean(axis=1)#按行求均值

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

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

# 权重归一化(后文中的肌肤保湿方式也基本都需要进行权重归一化)

w_IC = ic.mean() / ic.mean().sum()

w_ICIR = icir.mean() / icir.mean().sum()

w_Ret = Return.mean() / Return.mean().sum()

综合2 =(综合* w_IC).sum(轴= 1)

综合2 =(综合* w_ICIR).sum(轴= 1)

合成2 = (合成 * w_Ret).sum(轴=1)

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

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

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

半衰权重数学推导:如何利用多因子策略构建强大的加密货币资产投资组合:因子合成篇

*半衰期H:每次预测H期考虑,权重值以指数下跌的方式降低一半* T:回测的期数

#半衰权重

定义衰减(H,T):

t = np.arange(T+1)[1:]

wt = 2**((tT-1)/H) #半衰权重

Decay = wt/wt.sum() #归一化

返回衰减

#IC历史半衰加权

w_bs = Decay(6,12) # 假设T=12,H=6

ic_bs = ic.mul(w_bs,轴=0)

w = ic_bs.mean()/ic.mean().sum()

合成3 = (合成 * w).sum(轴=1)

#历史ICIR衰半加权

#历史ICIR衰半加权在历史IC半衰加权的基础上,除以IC值的标准差。

w_bs = bs(6,12)

ic_bs = ic.mul(w_bs,轴=0)

ir_bs = ic_bs.mean()/ic.std()

w = ir_bs.mean()/ir_bs.mean().sum()

合成3 = (合成 * w).sum(轴=1)

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()

fusion4 = (synthesis * pd.DataFrame(w,index=synthesis.columns)[0]).sum(轴=1)

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

# 最大化ICIR加权(Ledoit-Wolf估计压缩协方差)

从 sklearn.covariance 导入 LedoitWolf

模型=LedoitWolf()

模型.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()

fusion4 = (synthesis * pd.DataFrame(w,index=synthesis.columns)[0]).sum(轴=1)

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

2.5 主成分分析PCA

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

具体来说,PCA首先找到数据中的主成分,粗糙数据中的弓箭最大的方向。然后,它找到与第一个主成分独立(无关)且具有最大弓箭的第二个主成分。这个过程一直重复,直到找到数据中所有的主要成分。

# 主成分分析(PCA)

从 sklearn.decomposition 导入 PCA

模型 1 = PCA(n_components=1)

模型1.fit(f)

w=model1.components_

w=w/w.sum()

加权因子=(f*pd.DataFrame(w,columns=f.columns).iloc[0]).sum(轴=1)

标签: tp钱包安卓下载