任意大型投資組合的共變異數
我正在用 Java 實現一種方法來計算投資組合的變異數、共變異數和風險價值,該方法應該可以靈活地用於投資組合中的任意數量的資產。我正在為如何計算資產的共變異數而苦苦掙扎,因為我只能找到適用於兩三組值的公式。
Java 有一個內置庫來計算兩個資產的共變異數以及計算共變異數矩陣。但是,我不確定如何找到可以包含任意數量資產的投資組合的共變異數。
我正在用 Java 實現一種方法來計算投資組合的變異數、共變異數和風險價值,該方法應該可以靈活地用於投資組合中的任意數量的資產。我正在為如何計算資產的共變異數而苦苦掙扎,因為我只能找到適用於兩三組值的公式。
你確定你能勝任這項任務嗎?您是否可以使用R(嘿,它是免費和開源的)或 Matlab(嘿,Octave是免費和開源的)或類似的東西(提示:不,不是 Excel)來製作這個原型?
否則,我什至不知道從哪裡開始,因為還有更多:
- 回報的非同步性(因為您的資產可能不會同時交易),
- 缺少觀察(導致非正定矩陣),
- 舍入誤差,
- 建模問題,
- 用於降維的因子模型,因為您不希望 N x N 用於非常大的 N。
實際上,書架上擺滿了論文和實踐者書籍。閱讀一些——十五年前,我們都閱讀了第一本 RiskMetrics(現在是 MSCI 的一部分)手冊,當時它非常新穎且具有開創性。它也有你的問題的答案。
十年前,我在 Perl 中為 200 個資產的世界做了類似的事情(不要問),並且可以這樣做。這並不意味著它應該這樣做。除了了解底層(金融計量經濟學)數學之外,您還應該了解一些 Java 數值庫。無需重新發明輪子。
看看http://en.wikipedia.org/wiki/Covariance_matrix - 特別是屬性部分。根據http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_covariance_matrix.htm#Animation_covariance%20matrix,如果你有一個矩陣 $ X $ 資產(列中的資產,行中的收益),您可以將共變異數矩陣計算為 $ \Sigma=[XX^T]/n $ , 在哪裡 $ n $ 是樣本的大小。這在 Java 中應該相當簡單,在 R 中它看起來像
Sigma <- function(X){ mu <- apply(X,1,mean) n <- ncol(X) Sigma <- X%*%t(X)/n }