Browse Source

AS基础版,领悟了持仓距离的关系

skyffire 1 year ago
parent
commit
61d660530e
1 changed files with 9 additions and 7 deletions
  1. 9 7
      strategy/src/avellaneda_stoikov.rs

+ 9 - 7
strategy/src/avellaneda_stoikov.rs

@@ -246,23 +246,25 @@ impl AvellanedaStoikov {
             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.ratio_edge = self.flow_ratio_long * self.sigma_square;
+            self.ratio_edge = 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;
+                self.ask_delta -= pos_edge;
             } else if self.inventory < Decimal::ZERO {
+                self.bid_delta -= pos_edge;
                 self.ask_delta += pos_edge;
             }
 
-            if self.ratio_edge > Decimal::ZERO {
-                self.ask_delta = self.ask_delta - self.ratio_edge.abs() * (Decimal::TWO - self.t_diff);
-                self.bid_delta = self.bid_delta + self.ratio_edge.abs() * dec!(16);
-            } else if self.ratio_edge < Decimal::ZERO {
-                self.ask_delta = self.ask_delta + self.ratio_edge.abs() * dec!(16);
-                self.bid_delta = self.bid_delta - self.ratio_edge.abs() * (Decimal::TWO - self.t_diff);
+            if self.flow_ratio_long > Decimal::ZERO {
+                self.ask_delta = self.ask_delta + self.ratio_edge;
+                self.bid_delta = self.bid_delta - self.ratio_edge;
+            } else if self.flow_ratio_long < Decimal::ZERO {
+                self.ask_delta = self.ask_delta - self.ratio_edge;
+                self.bid_delta = self.bid_delta + self.ratio_edge;
             }
 
             if self.init_delta_plus.is_zero() {