Tiếp nối chương trước, chúng tôi đã xuất bản bốn bài trong sê-ri bài về "Xây dựng danh mục đầu tư tài sản crypto mạnh mẽ bằng cách sử dụng mô hình đa yếu tố": "Cơ sở lý thuyết cơ bản" , "Tiền xử lý dữ liệu" và "Kiểm tra tính hợp lệ của yếu tố" , " Phân tích nhân tố loại lớn: Tổng hợp nhân tố" .
Ở bài trước chúng tôi đã giải thích chi tiết vấn đề cộng tuyến nhân tố (tương quan cao giữa các nhân tố). Trước khi tổng hợp các loại nhân tố lớn, cần phải thực hiện trực giao nhân tố để loại trừ hiện tượng cộng tuyến.
Thông qua trực giao thừa số, hướng của các thừa số ban đầu được điều chỉnh lại sao cho chúng trực giao với nhau ($$[\vec{f_i},\vec{f_j}]=0$$, nghĩa là hai vectơ là vuông góc với nhau) Bản chất là phép quay các thừa số gốc trên các trục tọa độ. Vòng quay này không làm thay đổi mối quan hệ tuyến tính giữa các yếu tố cũng như thông tin ban đầu được chứa và mối tương quan giữa các yếu tố mới bằng 0 (sản phẩm bên trong bằng 0 tương đương với tương quan bằng 0) và cách giải thích về lợi nhuận của yếu tố này không đổi.
1. Đạo hàm toán học của trực giao nhân tử
Từ góc độ hồi quy cắt ngang đa yếu tố, một hệ thống trực giao nhân tố được thiết lập.
Trên mỗi phần, chúng ta có thể nhận được giá trị của toàn bộ mã thông báo thị trường trên mỗi yếu tố. N đại diện cho số lượng tất cả mã thông báo thị trường trên phần đó, K đại diện cho số lượng yếu tố, $$f^k=[f_1^k,f_2^ k,... ,f_N^k]'$$ đại diện cho giá trị của toàn bộ mã thông báo thị trường theo hệ số thứ k và mỗi hệ số đã được chuẩn hóa điểm z, nghĩa là $$\bar{f^k} =0 , ||f^k||=1$$.
$$F_{N\times K}=[f^1,f^2,...,f^K]$$ là ma trận gồm K vectơ cột nhân tố độc lập tuyến tính trên mặt cắt ngang. các yếu tố trên độc lập tuyến tính (Mối tương quan không phải là 100% hoặc -100%, cơ sở lý thuyết của xử lý trực giao).
$$$ Ma trận thừa số\ 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) $$$
Bằng cách biến đổi tuyến tính $$Fₘₙ$$, người ta thu được một ma trận trực giao nhân tử mới $$F'ₘₙ = [fᵏ₁,fᵏ₂,...fᵏₙ]'$$. Các vectơ cột của ma trận mới trực giao với nhau. là, bất kỳ hai Tích bên trong của vectơ nhân tử mới bằng 0, $$\forall i,j,i\not=j,[(\tilde f^i)'\tilde f^j]=0$$.
Xác định ma trận chuyển tiếp $$S {K\times K}$$ quay từ $$F_{N\times K}$$ đến $$\tilde{F} {N\times K} $$
$$$ \tilde{F} {N\times K}=F {N\times K}\cdot S_{K\times K}(2) $$$
1.1 Ma trận chuyển tiếp $$S_{K\times K}$$
Phần sau đây bắt đầu giải ma trận chuyển tiếp $$Sₖₖ$$ Đầu tiên, tính ma trận hiệp phương sai $$∑ₖₖ$$ của $$ Fₙₖ $$, sau đó là ma trận chồng chéo $$Fₙₖ$$ $$Mₖₖ=(N-1 )∑ₖₖ$ $, tức là
$$$ Ma trận chồng chéo\ 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}$$ bị xoay là ma trận trực giao Theo tính chất của ma trận trực giao $$AA^T=I$$ thì có.
$$$ \begin{aligned} (\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) $$$
Vì thế,
$$$ S_{K\times K}'S_{K\times K}=M_{K\times K}^{-1} (7) $$$
$$Sₖₖ$$ thỏa mãn điều kiện này là ma trận chuyển tiếp đáp ứng các điều kiện. Giải tổng quát của phương trình trên là:
$$$ S_{K\times K}=M_{K\times K}^{-1/2}C_{K\times K}(8) $$$
Trong đó$$C_{K\times K}$$ là ma trận trực giao bất kỳ
1.2 Ma trận đối xứng $$M_{K\times K}^{-1/2}$$
Hãy bắt đầu giải $$M*{K\times K}^{-1/2}$$, vì $$M*{K\times K}$$ là ma trận đối xứng nên phải có ma trận xác định dương $$U_{ K\times K}$$ thỏa mãn:
$$$ U_{K\times K}'M_{K\times K}U_{K\times K}=D_{K\times K}(9) $$$
TRONG ĐÓ,
$$$ 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}$$ lần lượt là ma trận vectơ riêng và ma trận đường chéo gốc riêng của $$M*{K\times K}$$ và $$U *{ K\times K}'=U_{K\times K}^{-1},\forall k,\lambda_K>0$$. Nó có thể thu được từ công thức (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\ lần 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{aligned} (11) $$$
Vì $$M*{K\times K}^{-1/2}$$ là ma trận đối xứng và $$U*{K\times K}U*{K\times K}'=I*{K \ time K}$$, có thể thu được nghiệm đặc biệt của $$M_{K\times K}^{-1/2}$$ dựa trên công thức trên:
$$$ \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) $$$
TRONG ĐÓ
$$$ 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) $$$
Ma trận chuyển tiếp có thể thu được bằng cách đưa nghiệm của $$M_{K\times K}^{-1/2}$$ vào công thức (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) $$$
Trong đó$$C_{K\times K}$$ là ma trận trực giao bất kỳ.
Theo công thức (12), tính trực giao của bất kỳ nhân tử nào cũng có thể được chuyển thành việc chọn các ma trận trực giao khác nhau $$C_{K\times K}$$ để xoay các thừa số ban đầu.
1.3 Ba phương pháp trực giao chủ yếu được sử dụng để loại trừ hiện tượng cộng tuyến
1.3.1 Cầu phương Schmidt
Do đó, $$S*{K\times K}$$ là ma trận tam giác trên, $$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 Tính trực giao kinh điển
Do đó, $$S_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}$$, $$C_{K\times K}= U_{K\ lần K}$$
1.3.3 Tính trực giao đối xứng
Do đó, $$S_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}'$$, $$C_{K\ lần K}=I_{K\times K}$$
2. Cụ thể thực hiện ba phương pháp trực giao
1. Schmidt trực giao
Có một tập hợp các vectơ cột nhân tố độc lập tuyến tính $$f^1,f^2,...,f^K$$ và một tập hợp các nhóm vectơ trực giao $$\tilde{f}^1 có thể được xây dựng dần dần , \tilde{f}^2,...,\tilde{f}^K$$, vectơ trực giao là:
$$$ \begin{aligned} \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,\ dấu ngã{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}\ \ kết thúc{căn chỉnh}(15) $$$
Và sau khi hợp nhất $$\tilde{f}^1,\tilde{f}^2,...,\tilde{f}^K$$:
$$$ e^k=\frac{\tilde{f}^k}{||\tilde{f}^k||},(k=1,2,\dots,k)(16) $$$
Sau quá trình xử lý trên, thu được một tập hợp cơ sở trực chuẩn. Vì $$e^1,e^2,\dots,e^K$$ tương đương với $$f^1,f^2,...,f^K$$, chúng có thể được biểu diễn tuyến tính với nhau , tức là $$e^k$$ là tổ hợp tuyến tính của $$f^1,f^2,...,f^k$$, có $$e^k=\beta_1^kf^1+ \beta_2^kf^ 2+...+\beta_k^kf^k$$ nên ma trận chuyển tiếp $$S*{K\times K}$$ tương ứng với ma trận gốc $$F*{K\times K }$$ là ma trận tam giác trên, có dạng:
$$$ 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) $$$
Trong đó$$\beta_k^k=\frac{1}{||\tilde{f}^k||}>0$$. Dựa vào công thức (17), ma trận trực giao bất kỳ được Schmidt trực giao chọn là:
$$$ C_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}'S_{K\times K} (1) $$$
Trực giao Schmidt là một phương pháp trực giao tuần tự nên cần xác định thứ tự trực giao của nhân tử. Thứ tự trực giao thông thường bao gồm thứ tự cố định (cùng một thứ tự trực giao được lấy trên các phần khác nhau) và thứ tự động (thứ tự trực giao giống nhau được lấy trên mỗi phần). phần) Thứ tự trực giao được xác định theo các quy tắc nhất định). Ưu điểm của phương pháp trực giao Schmidt là có sự tương ứng rõ ràng giữa các yếu tố trực giao trong cùng một thứ tự. Tuy nhiên, không có tiêu chuẩn lựa chọn thống nhất cho thứ tự trực giao có thể bị ảnh hưởng bởi tiêu chuẩn thứ tự trực giao và thời gian cửa sổ. thông số. .
# 施密特正交化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. Tính trực giao thông thường
Chọn ma trận trực giao $$C_{K\times K}=U_{K\times K}$$ thì ma trận chuyển tiếp là:
$$$ 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) $$$
Trong đó,$$U*{K\times K}$$ là ma trận vectơ riêng, được sử dụng để xoay nhân tử, $$D*{K\times K}^{-1/2}$$ là ma trận đường chéo, được sử dụng để chia tỷ lệ các yếu tố xoay. Vòng quay ở đây phù hợp với PCA mà không giảm kích thước.
# 规范正交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. Trực giao đối xứng
Do trực giao Schmidt áp dụng cùng thứ tự trực giao của các thừa số trên một số phần trước, nên có sự tương ứng rõ ràng giữa các thừa số trực giao và các thừa số ban đầu, trong khi trực giao chính tắc chọn các thành phần chính trên mỗi phần. Các hướng có thể không nhất quán, dẫn đến không có. sự tương ứng ổn định giữa các yếu tố trước và sau trực giao. Có thể thấy, tác động của tổ hợp trực giao phụ thuộc phần lớn vào việc có sự tương ứng ổn định giữa các yếu tố trước và sau trực giao hay không.
Tính trực giao đối xứng làm giảm các sửa đổi đối với ma trận nhân tố ban đầu càng nhiều càng tốt để thu được một tập hợp các cơ sở trực giao. Điều này có thể duy trì sự tương đồng giữa các yếu tố trực giao và các yếu tố nguyên nhân ở mức độ lớn nhất. Và tránh ưu tiên các yếu tố sớm hơn theo thứ tự trực giao như phương pháp trực giao của Schmidt.
Chọn ma trận trực giao $$C_{K\times K}=I_{K\times K}$$ thì ma trận chuyển tiếp là:
$$$ S_{K\times K}=U_{K\times K}D_{K\times K}^{-1/2}U_{K\times K}' (1) $$$
Tính chất trực giao đối xứng:
So với trực giao Schmidt, trực giao đối xứng không cần cung cấp thứ tự trực giao và ứng xử từng yếu tố như nhau.
Trong số tất cả các ma trận chuyển tiếp trực giao, độ tương đồng giữa ma trận trực giao đối xứng và ma trận gốc là lớn nhất, tức là khoảng cách giữa các ma trận trực giao trước và sau là nhỏ nhất.
# 对称正交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)
Giới thiệu về LUCIDA & FALCON
Lucida ( https://www.lucida.fund/ ) là một Quỹ phòng hộ định lượng hàng đầu trong ngành đã tham gia vào thị trường Tiền điện tử vào tháng 4 năm 2018. Quỹ này chủ yếu giao dịch CTA/arbitrage thống kê/arbitrage biến động tùy chọn và các chiến lược khác, với quy mô quản lý hiện tại trị giá 30 triệu USD.
Falcon ( https://falcon.lucida.fund/ ) là cơ sở hạ tầng đầu tư Web3 thế hệ mới dựa trên mô hình đa yếu tố và giúp người dùng "chọn", "mua", "quản lý" và "bán"crypto. tài sản. Falcon nuôi dưỡng vào tháng 6 năm 2022.
Nhiều nội dung hơn có thể được tìm thấy tại https://linktr.ee/lucida_and_falcon
Các bài viết trước
Sử dụng chiến lược đa yếu tố để xây dựng danh mục tài sản crypto mạnh mẽ# Xử lý trước dữ liệu #
Xây dựng danh mục tài sản crypto mạnh mẽ bằng chiến lược đa yếu tố#Cơ bản lý thuyết#
Chính xác thì điều gì đang thúc đẩy thị trường bò của Crytpo? Đây có phải là một nâng cấp công nghệ?
Phát triển làm động lực: Hiểu tác động đến hiệu suất giá mã thông báo?
Liệu "đội ngũ đang làm gì đó" có thực sự liên quan đến giá tiền tệ?
Tóm tắt 5 triệu hàng dữ liệu: Điều tra đợt tăng giá 3 năm của thị trường tiền điện tử @LUCIDA
LUCIDA: Sử dụng mô hình đa yếu tố để chọn đường đi và tiền tệ
LUCIDA × SnapFingers DAO: Ba năm thị trường bò, danh sách toàn diện của 21 chuỗi công khai hàng đầu
LUCIDA × OKLink: Giá trị của dữ liệu trên Chuỗi đối với đầu tư thị trường thứ cấp