現代投資組合理論
逐步 PCA 算法(無需數學包檢查正確性)
如果我的建議有誤,如果有人能糾正我,我將不勝感激。
我正在使用 PCA 來:
- 找到選定資產之間的協整度量
- 找到市場中性位置的特徵向量及其投資組合(最小變異數)
不幸的是,我不確定我是否以正確的方式做這件事。這是我的算法:
- 獲取基本矩陣 N x M:N - 資產數量,M - 歷史樣本數量
- 得到簡單的共變異數矩陣:Cov = E$$ (X - E[X $$)(Y - E$$ Y $$)]
- 使用 Jacobi 旋轉法求解特徵問題:$$ example $$$$ 1 $$
- 通過模組找到最大特徵值的索引:MinVariance = Min(Abs(eigenvalue))
- 可以通過特徵值的索引在旋轉矩陣中找到特徵向量作為列
**問題是:**根據我上面提到的最初目的,我是否錯過了這個行動列表中的某些內容?
我之所以問,是因為我已經計算了選定貨幣的這些權重,但它們對我來說看起來很奇怪,因為例如,當每個人都知道它們高度相關並且大部分時間一起移動時,歐元兌美元和英鎊兌美元似乎彼此相反
http://c.mql5cdn.com/3/28/USDCHFM1.png
這是我在稱為 MQL 的 C++ 類似語言上的 PCA 實現
http://www.mql5.com/ru/forum/16512/page3#comment_732844(見附件)
關閉這個問題。
簡而言之,使用的步驟:
- 獲取矩陣 N x M 其中 N - 資產數量,M - 歷史樣本數量
- 使用對數正規化所有樣本,並意味著有回報而不是某些資產特定值
- 如果要避免波動性的影響,請獲取共變異數矩陣或相關性
- 使用 SVD 和 Jacobi 在共變異數矩陣上的旋轉求解特徵問題
- Jacobi 旋轉返回兩個矩陣 - 特徵向量和特徵值
理解結果:
- 特徵值代表投資組合價差的變異數
- 選擇最大特徵值意味著選擇整個投資組合的方向
- 選擇最小特徵值意味著選擇具有最小變異數的投資組合的周期性、雜訊或誤差分量
- 特徵向量中的每個值是投資組合中相關資產的加權係數,需要乘以該資產才能回到初始過程
- 特徵向量是由所選特徵值的索引所取的旋轉矩陣中的一列
資源 :
- PCA 的最佳分步教程是 http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf
- PCA 的最佳理論解釋是 https://georgemdallas.wordpress.com/2013/10/30/principal-component-analysis-4-dummies-eigenvectors-eigenvalues-and-dimension-reduction/
- 在 C# 中實現 http://crsouza.blogspot.com/2009/09/principal-component-analysis-in-c.html
- R http://www.statmethods.net/advstats/factor.html中的實現