MCPcopy Create free account
hub / github.com/Open-Quant/openquant / covariance

Function covariance

crates/openquant/tests/hcaa.rs:34–51  ·  view source on GitHub ↗
(returns: &DMatrix<f64>)

Source from the content-addressed store, hash-verified

32}
33
34fn covariance(returns: &DMatrix<f64>) -> DMatrix<f64> {
35 let rows = returns.nrows();
36 let cols = returns.ncols();
37 let means: Vec<f64> = (0..cols).map(|c| returns.column(c).sum() / rows as f64).collect();
38 let mut cov = DMatrix::zeros(cols, cols);
39 for i in 0..cols {
40 for j in i..cols {
41 let mut s = 0.0;
42 for r in 0..rows {
43 s += (returns[(r, i)] - means[i]) * (returns[(r, j)] - means[j]);
44 }
45 s /= (rows - 1) as f64;
46 cov[(i, j)] = s;
47 cov[(j, i)] = s;
48 }
49 }
50 cov
51}
52
53fn assert_basic_weights(weights: &[f64], n_assets: usize) {
54 assert_eq!(weights.len(), n_assets);

Calls

no outgoing calls

Tested by

no test coverage detected