Selaa lähdekoodia

as原始距离测试,先观察,不一定有用。

skyffire 1 vuosi sitten
vanhempi
commit
5bc5e606ac
1 muutettua tiedostoa jossa 27 lisäystä ja 17 poistoa
  1. 27 17
      strategy/src/avellaneda_stoikov.rs

+ 27 - 17
strategy/src/avellaneda_stoikov.rs

@@ -235,7 +235,7 @@ impl AvellanedaStoikov {
     }
 
     pub fn update_sigma_square(&mut self) {
-        self.sigma_square = self.spread_max * dec!(0.5);
+        self.sigma_square = self.spread_max * dec!(1.2);
         self.sigma_square.rescale(10);
     }
 
@@ -275,29 +275,39 @@ impl AvellanedaStoikov {
 
     pub fn update_delta(&mut self) {
         if self.gamma != Decimal::ZERO {
-            let pos_edge = self.gamma * self.sigma_square * self.inventory.abs().powd(dec!(2)) * self.t_diff;
+            // let pos_edge = self.gamma * self.sigma_square * self.inventory.abs().powd(dec!(2)) * self.t_diff;
 
-            self.base_delta = self.gamma * self.sigma_square * self.t_diff / Decimal::TWO + (Decimal::ONE / self.gamma) * (Decimal::ONE + self.gamma / self.kappa).ln();
+            self.base_delta = self.sigma_square;
             self.ratio_edge = self.flow_ratio_mfi * self.sigma_square;
 
             self.bid_delta = self.base_delta;
             self.ask_delta = self.base_delta;
 
-            if self.inventory > Decimal::ZERO {
-                self.bid_delta += pos_edge;
-            } else if self.inventory < Decimal::ZERO {
-                self.ask_delta += pos_edge;
-            }
-
-            if self.ratio_edge > Decimal::ZERO {
-                self.ask_delta -= self.ratio_edge.abs() * (Decimal::TWO - self.t_diff);
-                self.bid_delta += self.sigma_square.abs() * dec!(5);
-            } else if self.ratio_edge < Decimal::ZERO {
-                self.ask_delta += self.sigma_square.abs() * dec!(5);
-                self.bid_delta -= self.ratio_edge.abs() * (Decimal::TWO - self.t_diff);
+            // if self.inventory > Decimal::ZERO {
+            //     self.bid_delta += pos_edge;
+            // } else if self.inventory < Decimal::ZERO {
+            //     self.ask_delta += pos_edge;
+            // }
+
+            if (self.ratio_edge > Decimal::ZERO) || (self.money_flow_index > dec!(60) && self.inventory > Decimal::ZERO) {
+                if self.inventory > Decimal::ZERO {
+                    self.ask_delta = Decimal::ZERO;
+                    self.bid_delta += self.sigma_square.abs() * dec!(10);
+                } else {
+                    self.ask_delta = self.base_delta;
+                    self.bid_delta += self.sigma_square.abs() * dec!(10);
+                }
+            } else if (self.ratio_edge < Decimal::ZERO) || (self.money_flow_index < dec!(40) && self.inventory < Decimal::ZERO) {
+                if self.inventory < Decimal::ZERO {
+                    self.ask_delta += self.sigma_square.abs() * dec!(10);
+                    self.bid_delta = Decimal::ZERO;
+                } else {
+                    self.ask_delta += self.sigma_square.abs() * dec!(10);
+                    self.bid_delta = self.base_delta;
+                }
             } else if self.ratio_edge == Decimal::ZERO {
-                self.ask_delta += self.sigma_square.abs() * dec!(5);
-                self.bid_delta += self.sigma_square.abs() * dec!(5);
+                self.ask_delta += self.base_delta.abs() * dec!(10);
+                self.bid_delta += self.base_delta.abs() * dec!(10);
             }
         }
     }