|
|
@@ -266,6 +266,11 @@ impl Predictor {
|
|
|
self.close_price = self.fair_price_when_ordering;
|
|
|
}
|
|
|
|
|
|
+ // 重置fair数据,用于重新计算幅度
|
|
|
+ if prev_inventory != self.inventory {
|
|
|
+ self.fair_price_time_vec.deque.clear();
|
|
|
+ }
|
|
|
+
|
|
|
// if prev_inventory != self.inventory && self.inventory.is_zero() {
|
|
|
// self.is_regressed = false;
|
|
|
// }
|
|
|
@@ -571,10 +576,14 @@ impl Predictor {
|
|
|
|
|
|
let inventory = self.inventory;
|
|
|
|
|
|
- let last_fair_price = self.fair_price_time_vec.deque.iter().last().unwrap();
|
|
|
- let first_fair_price = self.fair_price_time_vec.deque[0];
|
|
|
+ let sigma_square = if self.fair_price_time_vec.len() > 1 {
|
|
|
+ let last_fair_price = self.fair_price_time_vec.deque.iter().last().unwrap();
|
|
|
+ let first_fair_price = self.fair_price_time_vec.deque[0];
|
|
|
+ (last_fair_price - first_fair_price) / first_fair_price
|
|
|
+ } else {
|
|
|
+ Decimal::ZERO
|
|
|
+ };
|
|
|
|
|
|
- let sigma_square = (last_fair_price - first_fair_price) / first_fair_price;
|
|
|
let gamma = self.error_rate;
|
|
|
|
|
|
let kappa = self.fair_rate_focus;
|