skyffire 1 рік тому
батько
коміт
c5bacc7012
1 змінених файлів з 3 додано та 19 видалено
  1. 3 19
      src/rank.rs

+ 3 - 19
src/rank.rs

@@ -1,4 +1,4 @@
-use std::cmp::{max, min};
+use std::cmp::{min};
 use std::collections::HashMap;
 use rust_decimal::{Decimal, MathematicalOps};
 use rust_decimal_macros::dec;
@@ -41,7 +41,6 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
         let mut msv_abs_total = Decimal::ZERO;
         let mut msv_abs_max = Decimal::ZERO;
         let mut effective_count = Decimal::ZERO;
-        let mut effective_msv_vec: Vec<Decimal> = vec![];
         for value in indicators.msv.iter() {
             let msv_abs_value = value[1].abs();
 
@@ -51,7 +50,6 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
 
             effective_count += Decimal::ONE;
             msv_abs_total += msv_abs_value;
-            effective_msv_vec.push(msv_abs_value);
 
             if msv_abs_value > msv_abs_max {
                 msv_abs_max = msv_abs_value
@@ -64,22 +62,8 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
             msv_abs_total / effective_count
         };
         msv_abs_avg.rescale(6);
-        // 计算方差
-        let msv_variance = if effective_count == Decimal::ZERO {
-            Decimal::ZERO
-        } else {
-            let mut total = Decimal::ZERO;
-
-            for effective_msv in effective_msv_vec {
-                total += (effective_msv - msv_abs_avg).powd(Decimal::TWO)
-            }
-
-            total / effective_count
-        };
-        // 标准差
-        let standard_deviation = msv_variance.sqrt().unwrap();
-        let mut coverted_open_base = (msv_abs_max + standard_deviation) / TWO_HUNDRED;
-        coverted_open_base = max(coverted_open_base, Decimal::ZERO);
+        // 开仓基准值
+        let mut coverted_open_base = (msv_abs_max + msv_abs_avg) / TWO_HUNDRED;
         coverted_open_base.rescale(8);
 
         // ============== epr相关数据的计算 =================