風險

任意大型投資組合的共變異數

  • March 25, 2011

我正在用 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
}

引用自:https://quant.stackexchange.com/questions/816