멀티 팩터 모델로 강력한 암호화 자산 포트폴리오 구축 #BigClassFactorAnalysis: 팩터 직교화에 대한 장

이 기사는 기계로 번역되었습니다
원문 표시

이전 장에 이어 "다중 요소 모델을 사용하여 강력한 암호화폐 자산 포트폴리오 구축"에 대한 일련의 기사 중 "이론적 기초" , "데이터 전처리""요인 유효성 테스트" 4개 기사를 게시했습니다. 대형 범주 요인 분석: 요인 합성" .

이전 글에서는 요인 공선성(요인 간 높은 상관 관계) 문제에 대해 자세히 설명했습니다. 큰 범주의 요인을 합성하기 전에 공선성을 제거하기 위해 요인 직교화를 수행해야 합니다.

요인 직교화를 통해 원래 요인들의 방향이 서로 직교하도록 재조정됩니다($$[\vec{f_i},\vec{f_j}]=0$$, 즉 두 벡터는 다음과 같습니다. 서로 수직임) 본질은 좌표축에서 원래 요소를 회전시키는 것입니다. 이러한 회전은 요인 간의 선형 관계나 포함된 원래 정보를 변경하지 않으며, 새 요인 간의 상관 관계는 0(내적 0은 상관 관계 0과 동일)이며, 요인의 수익 설명은 일정하게 유지됩니다.

1. 요인 직교화의 수학적 유도

다요인 단면 회귀의 관점에서 요인 직교 시스템이 확립되었습니다.

각 팩터에 대한 모든 마켓 토큰의 값은 각 섹션에서 얻을 수 있습니다. N은 해당 섹션에 있는 모든 마켓 토큰의 수를 나타내고, K는 팩터의 수를 나타냅니다. $$f^k=[f_1^k,f_2^ k,... ,f_N^k]'$$는 k번째 팩터에 대한 전체 시장 토큰의 가치를 나타내며, 각 팩터에 대해 z-점수 정규화가 수행되었습니다. 즉, $$\bar{f^ k}=0, ||f^k||=1$$.

$$F_{N\times K}=[f^1,f^2,...,f^K]$$는 단면에서 K개의 선형 독립 요인 열 벡터로 구성된 행렬이라고 가정합니다. 위의 요소는 선형 독립입니다(상관관계는 직교화 처리의 이론적 기초인 100% 또는 -100%가 아닙니다).

$$$ 인수 행렬\ F_{N\times K} =\begin{vmatrix} f_1^1 & f_1^2& \dots&f_1^K\ f_2^1 & f_2^2&\dots&f_2^K\ \vdots &\vdots &\ ddots&\vdots\ f_N^1 & f_N^2&\dots&f_N^K\ \end{vmatrix}(1) $$$

$$Fₘₙ$$를 선형 변환하면 새로운 요소 직교 행렬 $$F'ₘₙ = [fᵏ₁,fᵏ₂,...fᵏₙ]'$$이 얻어지며, 새 행렬의 열 벡터는 서로 직교합니다. 는 임의의 2입니다. 새 요인 벡터의 내적은 0, $$\forall i,j,i\not=j,[(\tilde f^i)'\tilde f^j]=0$$입니다.

$$F_{N\times K}$$에서 $$\tilde{F} {N\times K} $$로 회전하는 전이 행렬 $$S {K\times K}$$를 정의합니다.

$$$ \tilde{F} {N\times K}=F {N\times K}\cdot S_{K\times K}(2) $$$

1.1 전이 행렬 $$S_{K\times K}$$

다음은 전이 행렬 $$Sₖₖ$$을 풀기 시작합니다. 먼저 $$Fₙₖ$$의 공분산 행렬 $$∑ₖₖ$$를 계산한 다음 $$Fₙₖ$$$$Mₖₖ=(N-1 )∑ₖₖ$$, 즉

$$$ 중첩 행렬\ M_{K\times K} =\begin{vmatrix} (f^1)'(f^1)& (f^1)'(f^2)& \dots&(f^1) '(f^K)\ (f^2)'(f^1) & (f^2)'(f^2)&\dots&(f^2)'(f^K)\ \vdots &\vdots &\ddots&\vdots\ (f^K)'(f^1) & (f^K)'(f^2)&\dots&(f^K)'(f^K)\ \end{vmatrix} ( 3) $$$

회전된 $$\tilde{F}_{N\times K}$$는 직교 행렬 $$AA^T=I$$의 속성에 따라 다음과 같습니다.

$$$ \begin{정렬} (\tilde{F } {N\times K})'\tilde{F} {N\times K}&=(F_{N\times K}S_{K\times K} )'F_{N\times K}S_{K\times K}\ &=S_{K\times K}'F_{N\times K}'F_{N\times K}S_{K\times K}\ &=S_{K\times K}'M_{K\times K}S_{K\times K}\ &=I_{K\times K} \end{aligned} (4) $$$

그래서,

$$$ S_{K\times K}'S_{K\times K}=M_{K\times K}^{-1} (7) $$$

이 조건을 만족하는 $$Sₖₖ$$는 조건을 만족하는 전이행렬이다. 위 공식의 일반적인 해는 다음과 같습니다.

$$$ S_{K\times K}=M_{K\times K}^{-1/2}C_{K\times K}(8) $$$

그 중 $$C_{K\times K}$$는 직교행렬이다.

1.2 대칭행렬 $$M_{K\times K}^{-1/2}$$

$$M*{K\times K}^{-1/2}$$를 풀어 보겠습니다. $$M*{K\times K}$$는 대칭 행렬이므로 양의 정부호 행렬이 있어야 합니다. $$U_{ K\times K}$$는 다음을 충족합니다.

$$$ U_{K\times K}'M_{K\times K}U_{K\times K}=D_{K\times K}(9) $$$

안에,

$$$ D_{K\times K}=\begin{vmatrix} \lambda_1& 0& \dots&0\ 0 & \lambda_2&\dots&0\ \vdots &\vdots &\ddots&\vdots\ 0 &0&\dots&\lambda_K\ \end{ vmatrix} (10) $$$


$$U*{K\times K},D*{K \times K}$$는 각각 $$M*{K\times K}$$의 고유벡터 행렬과 고유루트 대각 행렬이고, $$U *{ K\times K}'=U_{K\times K}^{-1},\forall k,\lambda_K>0$$. 식(13)으로부터 구할 수 있다.

$$$ \begin{aligned} M_{K\times K}&=U_{K\times K}D_{K\times K}U_{K\times K}'\ M_{K\times K}^{- 1}&=U_{K\times K}D_{K\times K}^{-1}U_{K\times K}'\ M_{K\times K}^{-1/2}M_{K\ 곱하기 K}^{-1/2}&=U_{K\times K}D_{K\times K}^{-1/2}I_{K\times K}D_{K\times K}^{- 1/2}U_{K\times K}'\ \end{정렬} (11) $$$

$$M*{K\times K}^{-1/2}$$는 대칭 행렬이고 $$U*{K\times K}U*{K\times K}'=I*{K \ times K}$$, $$M_{K\times K}^{-1/2}$$의 특수 해는 위 공식을 기반으로 얻을 수 있습니다.

$$$ \begin{aligned} M_{K\times K}^{-1/2}M_{K\times K}^{-1/2}&=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}'U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}'\ M_{K \times K}^{-1/2}&=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}' \end{aligned}(12) $$$

~에

$$$ D_{K\times K}^{-1/2}=\begin{vmatrix} 1/\sqrt{\lambda_1}& 0& \dots&0\ 0 & 1/\sqrt{\lambda_2}&\dots&0\ \vdots &\vdots &\ddots&\vdots\ 0 &0&\dots&1/\sqrt{\lambda_K}\ \end{vmatrix}(13) $$$

$$M_{K\times K}^{-1/2}$$의 해를 공식 (6)에 적용하여 얻을 수 있는 전이 행렬:

$$$ \begin{aligned} \color{brown}S_{K\times K}&=M_{K\times K}^{-1/2}C_{K\times K}\ &=\color{brown }U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}'C_{K\times K} \end{aligned}(14) $$$

그 중 $$C_{K\times K}$$는 직교행렬이다.

공식 (12)에 따르면, 모든 요인 직교성은 원래 요인을 회전하기 위해 다른 직교 행렬 $$C_{K\times K}$$을 선택하는 것으로 변환될 수 있습니다.

1.3 공선성을 제거하기 위해 주로 세 가지 직교 방법이 사용됩니다.

1.3.1 슈미트 구적법

따라서 $$S*{K\times K}$$는 상부 삼각 행렬 $$C*{K\times K}=U*{K\times K}D*{K\times K}^{- 1 /2}U*{K\times K}'S*{K\times K}$$

1.3.2 정규 ​​직교성

따라서 $$S_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}$$, $$C_{K\times K}= U_{K\ K}$$배

1.3.3 대칭 직교성

따라서 $$S_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}'$$, $$C_{K\ 곱하기 K}=I_{K\times K}$$

2. 세 가지 직교 방법의 구체적인 구현

1. 슈미트 직교

선형 독립 요인 열 벡터 세트 $$f^1,f^2,...,f^K$$가 있고, 직교 벡터 그룹 $$\tilde{f}^1 세트가 점진적으로 구성될 수 있습니다. , \tilde{f}^2,...,\tilde{f}^K$$, 직교 벡터는 다음과 같습니다.

$$$ \begin{정렬} \tilde{f}^1 &= f^1\ \tilde{f}^2 &= f^2-\frac{[f^2,\tilde{f}^1] }{[\tilde{f}^1,\tilde{f}^1]}\tilde{f}^1\ \tilde{f}^3 &= f^3-\frac{[f^3,\ 물결표{f}^1]}{[\tilde{f}^1,\tilde{f}^1]}\tilde{f}^1-\frac{[f^3,\tilde{f}^2 ]}{[\tilde{f}^2,\tilde{f}^2]}\tilde{f}^2\ \dots&=\dots\ \tilde{f}^k &= f^k-\frac {[f^k,\tilde{f}^1]}{[\tilde{f}^1,\tilde{f}^1]}\tilde{f}^1-\frac{[f^k, \tilde{f}^2]}{[\tilde{f}^2,\tilde{f}^2]}\tilde{f}^2-\dots-\frac{[f^k,\tilde{ f}^{k-1}]}{[\tilde{f}^{k-1},\tilde{f}^{k-1}]}\tilde{f}^{k-1}\ \ 끝{정렬}(15) $$$

그리고 $$\tilde{f}^1,\tilde{f}^2,...,\tilde{f}^K$$를 단위화한 후:

$$$ e^k=\frac{\tilde{f}^k}{||\tilde{f}^k||},(k=1,2,\dots,k)(16) $$$

위의 과정을 거쳐 정규 직교 기저 세트를 얻습니다. $$e^1,e^2,\dots,e^K$$는 $$f^1,f^2,...,f^K$$와 동일하므로 서로 선형적으로 표현될 수 있습니다. , 즉 $$e^k$$는 $$f^1,f^2,...,f^k$$의 선형 조합이며 $$e^k=\beta_1^kf^1+가 있습니다. \beta_2^kf^ 2+...+\beta_k^kf^k$$, 따라서 전이 행렬 $$S*{K\times K}$$는 원래 행렬 $$F*{K\times K에 해당합니다. }$$는 다음과 같은 모양의 상부 삼각 행렬입니다.

$$$ S_{K\times K}=\begin{vmatrix} \beta_1^1& \beta_1^2& \dots&\beta_1^K\ 0 & \beta_2^2&\dots&\beta_2^K\ \vdots &\vdots & \ddots&\vdots\ 0 &0&\dots&\beta_K^K\ \end{vmatrix}(17) $$$

여기서 $$\beta_k^k=\frac{1}{||\tilde{f}^k||}>0$$. 공식 (17)에 기초하여 슈미트 직교에 의해 선택된 직교 행렬은 다음과 같습니다.

$$$ C_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}'S_{K\times K} (1) $$$

슈미트 직교법은 순차 직교법이므로 요소 직교성의 순서를 결정하는 것이 필요합니다. 일반적인 직교 차수에는 고정 순서(다른 섹션에 동일한 직교 순서가 적용됨)와 동적 순서(각 섹션에 동일한 직교 순서가 적용됨)가 있습니다. 섹션) 직교 순서는 특정 규칙에 따라 결정됩니다. 슈미트 직교 방법의 장점은 동일한 순서의 직교 요소 간에 명시적인 대응이 있다는 점입니다. 그러나 직교 순서에 대한 통일된 선택 기준이 없습니다. 매개변수.

 # 施密特正交化from sympy.matrices import Matrix, GramSchmidt Schmidt = GramSchmidt(f.apply(lambda x: Matrix(x),axis=0),orthonormal=True) f_Schmidt = pd.DataFrame(index=f.index,columns=f.columns) for i in range(3): f_Schmidt.iloc[:,i]=np.array(Schmidt[i]) res = f_Schmidt.astype(float)

2.정규 직교성

직교 행렬 $$C_{K\times K}=U_{K\times K}$$를 선택하면 전환 행렬은 다음과 같습니다.

$$$ S_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}'U_{K\times K}=U_{ K\times K}D_{K\times K}^{-1/2} (2) $$$

그 중 $$U*{K\times K}$$는 요인 회전에 사용되는 고유벡터 행렬이고, $$D*{K\times K}^{-1/2}$$는 대각 행렬로서 사용됩니다. 회전된 요인의 스케일링을 위한 것입니다. 여기서 회전은 차원 축소가 없는 PCA와 일치합니다.

 # 规范正交def Canonical(self): overlapping_matrix = (time_tag_data.shape[1] - 1) * np.cov(time_tag_data.astype(float)) # 获取特征值和特征向量eigenvalue, eigenvector = np.linalg.eig(overlapping_matrix) # 转换为np中的矩阵eigenvector = np.mat(eigenvector) transition_matrix = np.dot(eigenvector, np.mat(np.diag(eigenvalue ** (-0.5)))) orthogonalization = np.dot(time_tag_data.T.values, transition_matrix) orthogonalization_df = pd.DataFrame(orthogonalization.T,index = pd.MultiIndex.from_product([time_tag_data.index, [time_tag]]),columns=time_tag_data.columns) self.factor_orthogonalization_data = self.factor_orthogonalization_data.append(orthogonalization_df)

3. 대칭 직교

슈미트 직교는 여러 과거 섹션에서 동일한 직교 순서의 요인을 채택하므로 직교 요인과 원래 요인 사이에 명시적인 일치가 있는 반면, 표준 직교는 각 섹션에서 주성분을 선택하므로 방향이 일치하지 않을 수 있습니다. 직교성 전후의 요인 간의 안정적인 대응. 직교결합의 효과는 직교성 전후의 요인들 사이에 안정적인 대응관계가 있는지 여부에 크게 좌우된다는 것을 알 수 있다.

대칭 직교성은 직교 베이스 세트를 얻기 위해 원래 요인 행렬에 대한 수정을 최대한 줄입니다. 이는 직교 요인과 인과 요인 간의 유사성을 최대한 유지할 수 있습니다. 그리고 슈미트(Schmidt)의 직교 방법과 같이 직교 순서에서 더 빠른 요소를 선호하는 것을 피하세요.

직교 행렬 $$C_{K\times K}=I_{K\times K}$$를 선택하면 전환 행렬은 다음과 같습니다.

$$$ S_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}' (1) $$$

대칭 직교 속성:

  1. 슈미트 직교와 비교하여 대칭 직교는 직교 순서를 제공할 필요가 없으며 각 요소를 동일하게 처리합니다.

  2. 모든 직교 전이 행렬 중에서 대칭 직교 행렬과 원래 행렬의 유사성이 가장 크다. 즉, 직교 행렬 전후의 거리가 가장 작다.

 # 对称正交def Symmetry(factors): col_name = factors.columns D, U = np.linalg.eig(np.dot(factors.T, factors)) U = np.mat(U) d = np.diag(D**(-0.5)) S = U*d*UT #F_hat = np.dot(factors, S) F_hat = np.mat(factors)*S factors_orthogonal = pd.DataFrame(F_hat, columns=col_name, index=factors.index) return factors_orthogonal res = Symmetry(f)

루시다 & 팔콘 소개

루시다( https://www.lucida.fund/ )는 2018년 4월 암호화폐 시장에 진출한 업계 최고의 퀀트 헤지펀드입니다. 현재 관리 규모로 CTA/통계 차익거래/옵션 변동성 차익거래 및 기타 전략을 주로 거래합니다. 3천만 달러.

Falcon( https://falcon.lucida.fund/ )은 차세대 Web3 투자 인프라로, 다중 요소 모델을 기반으로 하며 사용자가 암호화폐를 "선택", "구매", "관리" 및 "판매"하도록 돕습니다. 자산. 매는 2022년 6월 루시다가 인큐베이팅.

더 많은 콘텐츠는 https://linktr.ee/lucida_and_falcon에서 확인할 수 있습니다.

이전 기사

Mirror
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
코멘트