(beta: &[f64], gamma: &[f64])
| 137 | return out; |
| 138 | } |
| 139 | for i in 0..n { |
| 140 | if i + 1 < window { |
| 141 | continue; |
| 142 | } |
| 143 | let start = i + 1 - window; |
| 144 | let slice_x = &x[start..=i]; |
| 145 | let slice_y = &y[start..=i]; |
| 146 | let mean_x: f64 = slice_x.iter().sum::<f64>() / window as f64; |
| 147 | let mean_y: f64 = slice_y.iter().sum::<f64>() / window as f64; |
| 148 | let mut s = 0.0; |
| 149 | for j in 0..window { |
| 150 | s += (slice_x[j] - mean_x) * (slice_y[j] - mean_y); |
| 151 | } |
| 152 | out[i] = s / (window as f64 - 1.0); |
| 153 | } |
| 154 | out |
| 155 | } |
| 156 | |
| 157 | /// Roll's (1984) effective bid–ask spread, `2 sqrt(|cov(Δp_t, Δp_{t−1})|)`, over a rolling |
| 158 | /// window of `close` prices (AFML §19.3.2). |
| 159 | /// |
no outgoing calls
no test coverage detected