ソースを参照

修復開平倉邏輯。

skyfffire 1 年間 前
コミット
3fa185282c
1 ファイル変更15 行追加15 行削除
  1. 15 15
      strategy/src/avellaneda_stoikov.rs

+ 15 - 15
strategy/src/avellaneda_stoikov.rs

@@ -268,7 +268,7 @@ 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(Decimal::TWO) * self.t_diff / Decimal::TWO;
+            let pos_edge = self.gamma * self.sigma_square * self.inventory.abs().powd(Decimal::TWO) * self.t_diff;
 
             self.base_delta = self.sigma_square;
 
@@ -282,26 +282,26 @@ impl AvellanedaStoikov {
             }
 
             if self.flow_ratio < Decimal::ZERO {
-                if self.flow_ratio_change > dec!(0.01) {
-                    self.bid_delta += self.base_delta * dec!(10);
-                    self.ask_delta -= self.base_delta * dec!(10);
+                if self.flow_ratio_change > dec!(0.01) || self.inventory > Decimal::ZERO {
+                    self.ask_delta -= self.base_delta * dec!(2);
+                    self.bid_delta += self.base_delta * dec!(2);
                 } else if self.flow_ratio_change < dec!(-0.01) && self.inventory < Decimal::ZERO {
-                    self.bid_delta -= self.base_delta * dec!(3);
-                    self.ask_delta += self.base_delta * dec!(3);
+                    self.ask_delta += self.base_delta * dec!(2);
+                    self.bid_delta -= self.base_delta * dec!(2);
                 } else {
-                    self.bid_delta += self.base_delta * dec!(5);
-                    self.ask_delta += self.base_delta * dec!(5);
+                    self.ask_delta += self.base_delta * dec!(2);
+                    self.bid_delta += self.base_delta * dec!(2);
                 }
             } else if self.flow_ratio > Decimal::ZERO {
                 if self.flow_ratio_change > dec!(0.01) && self.inventory > Decimal::ZERO {
-                    self.bid_delta -= self.base_delta * dec!(3);
-                    self.ask_delta += self.base_delta * dec!(3);
-                } else if self.flow_ratio_change < dec!(-0.01) {
-                    self.bid_delta += self.base_delta * dec!(10);
-                    self.ask_delta -= self.base_delta * dec!(10);
+                    self.ask_delta -= self.base_delta * dec!(2);
+                    self.bid_delta += self.base_delta * dec!(2);
+                } else if self.flow_ratio_change < dec!(-0.01) || self.inventory < Decimal::ZERO {
+                    self.ask_delta += self.base_delta * dec!(2);
+                    self.bid_delta -= self.base_delta * dec!(2);
                 } else {
-                    self.bid_delta += self.base_delta * dec!(5);
-                    self.ask_delta += self.base_delta * dec!(5);
+                    self.ask_delta += self.base_delta * dec!(2);
+                    self.bid_delta += self.base_delta * dec!(2);
                 }
             }