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

Method single_fit_loop

crates/openquant/src/ef3m.rs:251–282  ·  view source on GitHub ↗
(&mut self, epsilon_override: Option<f64>)

Source from the content-addressed store, hash-verified

249 }
250
251 pub fn single_fit_loop(&mut self, epsilon_override: Option<f64>) -> Vec<FitResultRow> {
252 if let Some(eps) = epsilon_override {
253 if eps > 0.0 {
254 self.epsilon = eps;
255 }
256 }
257 self.parameters = vec![0.0; 5];
258 self.error = self.moments.iter().map(|m| m * m).sum();
259
260 let std_dev = centered_moment(&self.moments, 2).sqrt();
261 let upper = (1.0 / self.epsilon).max(1.0) as usize;
262 let mut err_min = self.error;
263 let mut best: Option<FitResultRow> = None;
264
265 for i in 1..upper {
266 let mu_2_i = i as f64 * self.epsilon * self.factor * std_dev + self.moments[0];
267 let _ = self.fit(mu_2_i);
268 if self.error < err_min {
269 err_min = self.error;
270 best = Some(FitResultRow {
271 mu_1: self.parameters[0],
272 mu_2: self.parameters[1],
273 sigma_1: self.parameters[2],
274 sigma_2: self.parameters[3],
275 p_1: self.parameters[4],
276 error: err_min,
277 });
278 }
279 }
280
281 best.into_iter().collect()
282 }
283
284 pub fn mp_fit(&self) -> Vec<FitResultRow> {
285 let mut out = Vec::new();

Callers 3

mp_fitMethod · 0.80
ef3m_fit_m2nFunction · 0.80

Calls 2

centered_momentFunction · 0.85
fitMethod · 0.45

Tested by 1