|
|
@@ -249,11 +249,11 @@ impl AvellanedaStoikov {
|
|
|
self.ask_delta += pos_edge;
|
|
|
self.bid_delta += pos_edge * dec!(0.1);
|
|
|
}
|
|
|
- if self.ratio_edge < Decimal::ZERO {
|
|
|
- self.bid_delta += self.ratio_edge.abs()
|
|
|
- } else if self.ratio_edge > Decimal::ZERO {
|
|
|
- self.ask_delta += self.ratio_edge.abs()
|
|
|
- }
|
|
|
+ // if self.ratio_edge < Decimal::ZERO {
|
|
|
+ // self.bid_delta += self.ratio_edge.abs()
|
|
|
+ // } else if self.ratio_edge > Decimal::ZERO {
|
|
|
+ // self.ask_delta += self.ratio_edge.abs()
|
|
|
+ // }
|
|
|
|
|
|
if self.init_delta_plus.is_zero() {
|
|
|
self.init_delta_plus = (self.bid_delta + self.ask_delta) / Decimal::TWO
|
|
|
@@ -274,17 +274,10 @@ impl AvellanedaStoikov {
|
|
|
}
|
|
|
|
|
|
pub fn update_flow_ratio(&mut self) {
|
|
|
- // self.flow_ratio = if self.trade_vec.len() < 100 {
|
|
|
- // Decimal::ZERO
|
|
|
- // } else {
|
|
|
- // let now = (self.flow_in_value - self.flow_out_value) / (self.flow_out_value + self.flow_in_value);
|
|
|
- //
|
|
|
- // self.flow_ratio * dec!(0.8) + now * dec!(0.2)
|
|
|
- // };
|
|
|
- //
|
|
|
- // self.flow_ratio.rescale(6);
|
|
|
+ let now = (self.flow_in_value - self.flow_out_value) / (self.flow_out_value + self.flow_in_value);
|
|
|
|
|
|
- self.flow_ratio = Decimal::ZERO;
|
|
|
+ self.flow_ratio = self.flow_ratio * dec!(0.5) + now * dec!(0.5);
|
|
|
+ self.flow_ratio.rescale(6);
|
|
|
}
|
|
|
|
|
|
pub fn check_ready(&mut self) {
|
|
|
@@ -363,7 +356,7 @@ impl AvellanedaStoikov {
|
|
|
optimal_bid_price: self.optimal_bid_price,
|
|
|
|
|
|
inventory: self.inventory,
|
|
|
- sigma_square: self.sigma_square,
|
|
|
+ sigma_square: self.flow_ratio,
|
|
|
gamma: self.gamma,
|
|
|
kappa: self.kappa,
|
|
|
|