|
|
@@ -203,16 +203,16 @@ impl AvellanedaStoikov {
|
|
|
let mid = (a1.price + b1.price) / Decimal::TWO;
|
|
|
|
|
|
let i_upper = (a1.value - b1.value) / (a1.value + b1.value);
|
|
|
- // let s_upper = (a1.price - b1.price) / mid;
|
|
|
- // let f_t = Decimal::ZERO;
|
|
|
- // let s = (s_upper + f_t) / Decimal::TWO;
|
|
|
- //
|
|
|
- // let a_upper_t = dec!(0.6);
|
|
|
- // let c_t = dec!(0);
|
|
|
- // let theta = a_upper_t * s + c_t;
|
|
|
- // let fair_price = mid + theta * (i_upper * (i_upper.powd(Decimal::TWO) + Decimal::ONE)) / Decimal::TWO;
|
|
|
+ let s_upper = (a1.price - b1.price) / mid;
|
|
|
+ let f_t = Decimal::ZERO;
|
|
|
+ let s = (s_upper + f_t) / Decimal::TWO;
|
|
|
|
|
|
- let fair_price = mid + (a1.price - b1.price) * i_upper / Decimal::TWO;
|
|
|
+ let a_upper_t = dec!(0.6);
|
|
|
+ let c_t = self.spread_max;
|
|
|
+ let theta = a_upper_t * s + c_t;
|
|
|
+ let fair_price = mid + theta * (i_upper * (i_upper.powd(Decimal::TWO) + Decimal::ONE)) / Decimal::TWO;
|
|
|
+
|
|
|
+ // let fair_price = mid + (a1.price - b1.price) * i_upper / Decimal::TWO;
|
|
|
|
|
|
self.fair_price_vec[index] = fair_price;
|
|
|
self.volume_vec[index] = a1.size + b1.size;
|
|
|
@@ -330,13 +330,19 @@ impl AvellanedaStoikov {
|
|
|
self.bid_delta = self.base_delta;
|
|
|
self.ask_delta = self.base_delta;
|
|
|
|
|
|
- if self.inventory > Decimal::ZERO && self.flow_ratio > Decimal::ZERO {
|
|
|
- self.ask_delta = self.base_delta * dec!(0.8);
|
|
|
- // self.ask_delta = Decimal::NEGATIVE_ONE;
|
|
|
- } else if self.inventory < Decimal::ZERO && self.flow_ratio < Decimal::ZERO {
|
|
|
- self.bid_delta = self.base_delta * dec!(0.8);
|
|
|
- // self.bid_delta = Decimal::NEGATIVE_ONE;
|
|
|
- }
|
|
|
+ // if self.inventory > Decimal::ZERO && self.flow_ratio > Decimal::ZERO {
|
|
|
+ // self.ask_delta = self.base_delta * dec!(0.8);
|
|
|
+ // // self.ask_delta = Decimal::NEGATIVE_ONE;
|
|
|
+ // }
|
|
|
+ // else if self.money_flow_index == Decimal::ZERO {
|
|
|
+ // self.bid_delta = self.base_delta * dec!(0.8);
|
|
|
+ // // self.bid_delta = Decimal::NEGATIVE_ONE;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // else if self.inventory < Decimal::ZERO && self.flow_ratio < Decimal::ZERO {
|
|
|
+ // self.bid_delta = self.base_delta * dec!(0.8);
|
|
|
+ // // self.bid_delta = Decimal::NEGATIVE_ONE;
|
|
|
+ // }
|
|
|
}
|
|
|
}
|
|
|
|