(returns: &[f64])
| 74 | } |
| 75 | |
| 76 | pub fn bets_concentration(returns: &[f64]) -> Option<f64> { |
| 77 | if returns.len() <= 2 { |
| 78 | return None; |
| 79 | } |
| 80 | let sum: f64 = returns.iter().sum(); |
| 81 | if sum == 0.0 { |
| 82 | return None; |
| 83 | } |
| 84 | let weights: Vec<f64> = returns.iter().map(|r| r / sum).collect(); |
| 85 | let hhi: f64 = weights.iter().map(|w| w * w).sum(); |
| 86 | let n = returns.len() as f64; |
| 87 | let adj = (hhi - 1.0 / n) / (1.0 - 1.0 / n); |
| 88 | Some(adj) |
| 89 | } |
| 90 | |
| 91 | pub fn all_bets_concentration( |
| 92 | returns: &[(NaiveDateTime, f64)], |
no test coverage detected