|
@@ -1,5 +1,5 @@
|
|
|
use std::collections::HashMap;
|
|
use std::collections::HashMap;
|
|
|
-use rust_decimal::{Decimal};
|
|
|
|
|
|
|
+use rust_decimal::{Decimal, MathematicalOps};
|
|
|
use rust_decimal_macros::dec;
|
|
use rust_decimal_macros::dec;
|
|
|
use serde::{Deserialize, Serialize};
|
|
use serde::{Deserialize, Serialize};
|
|
|
use serde_json::Value;
|
|
use serde_json::Value;
|
|
@@ -96,7 +96,12 @@ pub fn generate_rank_by_indicator_map(indicator_map: &MutexGuard<HashMap<String,
|
|
|
let mut frequency_score = (effective_count / Decimal::ONE_THOUSAND) * TWENTY;
|
|
let mut frequency_score = (effective_count / Decimal::ONE_THOUSAND) * TWENTY;
|
|
|
frequency_score.rescale(2);
|
|
frequency_score.rescale(2);
|
|
|
|
|
|
|
|
- let mut score = msv_score * liquidity_score * frequency_score;
|
|
|
|
|
|
|
+ let temp = msv_score * liquidity_score * frequency_score;
|
|
|
|
|
+ let mut score = if temp > Decimal::ONE {
|
|
|
|
|
+ Decimal::TEN * temp.log10()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Decimal::ZERO
|
|
|
|
|
+ };
|
|
|
score.rescale(2);
|
|
score.rescale(2);
|
|
|
|
|
|
|
|
let rank = Rank {
|
|
let rank = Rank {
|