skyffire hai 9 meses
pai
achega
4536b948da
Modificáronse 1 ficheiros con 7 adicións e 5 borrados
  1. 7 5
      strategy/src/predictor.rs

+ 7 - 5
strategy/src/predictor.rs

@@ -439,12 +439,16 @@ impl Predictor {
     pub fn update_spread(&mut self) {
         let depth = &self.depth_vec[1];
 
-        self.spread = depth.asks[0].price - depth.bids[0].price;
+        let ref_mid = (depth.asks[0].price + depth.bids[0].price) / Decimal::TWO;
+        self.spread = (depth.asks[0].price - depth.bids[0].price) / ref_mid;
+        self.spread.rescale(8);
+
         self.spread_ema = if self.spread_ema.is_zero() {
             self.spread
         } else {
-            self.spread_ema * dec!(0.999) + self.spread * dec!(0.001)
+            self.spread_ema * dec!(0.995) + self.spread * dec!(0.005)
         };
+        self.spread_ema.rescale(8);
     }
 
     pub async fn update_delta(&mut self) {
@@ -489,12 +493,10 @@ impl Predictor {
         let is_open_long = self.force_order_value < -self.params.open
             && (self.mid_price < self.prev_trade_price * dec!(0.999) || self.prev_trade_price.is_zero())
             && self.inventory < self.params.grid
-            && self.state == 0
             && self.bid_delta == dec!(-2);
         let is_open_short = self.force_order_value > self.params.open
             && (self.mid_price > self.prev_trade_price * dec!(1.001) || self.prev_trade_price.is_zero())
             && self.inventory > -self.params.grid
-            && self.state == 0
             && self.ask_delta == dec!(-2);
 
         if is_open_long {
@@ -597,7 +599,7 @@ impl Predictor {
 
         let sigma_square = Decimal::from(self.state);
 
-        let gamma = self.params.holding_time;
+        let gamma = self.force_order_value;
         let kappa = self.balance;
 
         let flow_ratio = Decimal::ZERO;