|
|
@@ -23,7 +23,7 @@ pub struct Rank {
|
|
|
}
|
|
|
|
|
|
const TWENTY: Decimal = dec!(20);
|
|
|
-// const SIXTY: Decimal = dec!(60);
|
|
|
+const SIXTY: Decimal = dec!(60);
|
|
|
const TWO_HUNDRED: Decimal = dec!(200);
|
|
|
// const TEN_THOUSAND: Decimal = dec!(10000);
|
|
|
|
|
|
@@ -81,18 +81,18 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
|
|
|
|
|
|
// msv_score计算规则
|
|
|
let mut msv_score = if msv_abs_total > Decimal::ZERO {
|
|
|
- effective_count * (epr_total / msv_abs_total) * msv_abs_max
|
|
|
+ (epr_total / msv_abs_total) * SIXTY
|
|
|
} else {
|
|
|
Decimal::ZERO
|
|
|
};
|
|
|
msv_score.rescale(2);
|
|
|
|
|
|
// liquidity_score
|
|
|
- let mut liquidity_score = (liquidity_avg / Decimal::ONE_THOUSAND) * TWENTY * msv_abs_max;
|
|
|
+ let mut liquidity_score = (liquidity_avg / Decimal::ONE_THOUSAND) * TWENTY;
|
|
|
liquidity_score.rescale(2);
|
|
|
|
|
|
// frequency_score计算规则
|
|
|
- let mut frequency_score = (effective_count / Decimal::ONE_HUNDRED) * TWENTY * msv_abs_max;
|
|
|
+ let mut frequency_score = (effective_count / Decimal::ONE_HUNDRED) * TWENTY;
|
|
|
frequency_score.rescale(2);
|
|
|
|
|
|
let mut score = msv_score * liquidity_score * frequency_score;
|