(returns: &[f64], entries_per_year: f64, risk_free_rate: f64)
| 170 | } |
| 171 | |
| 172 | pub fn sharpe_ratio(returns: &[f64], entries_per_year: f64, risk_free_rate: f64) -> f64 { |
| 173 | let mean = returns.iter().sum::<f64>() / returns.len() as f64; |
| 174 | let var = |
| 175 | returns.iter().map(|r| (r - mean).powi(2)).sum::<f64>() / (returns.len() as f64 - 1.0); |
| 176 | let std = var.sqrt(); |
| 177 | ((mean - risk_free_rate) / std) * entries_per_year.sqrt() |
| 178 | } |
| 179 | |
| 180 | pub fn information_ratio(returns: &[f64], benchmark: f64, entries_per_year: f64) -> f64 { |
| 181 | let excess: Vec<f64> = returns.iter().map(|r| r - benchmark).collect(); |
no test coverage detected