|
|
@@ -249,7 +249,7 @@ impl AvellanedaStoikov {
|
|
|
}
|
|
|
|
|
|
pub fn update_sigma_square(&mut self) {
|
|
|
- self.sigma_square = self.spread_max;
|
|
|
+ self.sigma_square = self.spread_max * dec!(0.618);
|
|
|
self.sigma_square.rescale(10);
|
|
|
}
|
|
|
|
|
|
@@ -267,9 +267,8 @@ impl AvellanedaStoikov {
|
|
|
|
|
|
pub fn update_ref_price(&mut self) {
|
|
|
if !self.fair_price_vec[0].is_zero() && !self.fair_price_vec[1].is_zero() {
|
|
|
- let v0_rate = self.volume_vec[0] / (self.volume_vec[0] + self.volume_vec[1]);
|
|
|
- let v1_rate = self.volume_vec[1] / (self.volume_vec[0] + self.volume_vec[1]);
|
|
|
-
|
|
|
+ // let v0_rate = self.volume_vec[0] / (self.volume_vec[0] + self.volume_vec[1]);
|
|
|
+ // let v1_rate = self.volume_vec[1] / (self.volume_vec[0] + self.volume_vec[1]);
|
|
|
|
|
|
let sma = self.depth_vec[1].asks[0].price;
|
|
|
let smb = self.depth_vec[1].bids[0].price;
|
|
|
@@ -279,7 +278,7 @@ impl AvellanedaStoikov {
|
|
|
|
|
|
let price_diff = mp0 - mp1;
|
|
|
|
|
|
- self.ref_price = self.fair_price_vec[0] * v0_rate + self.fair_price_vec[1] * v1_rate + price_diff / Decimal::TWO;
|
|
|
+ self.ref_price = (self.fair_price_vec[0] + self.fair_price_vec[1] + price_diff) / Decimal::TWO;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -406,7 +405,7 @@ impl AvellanedaStoikov {
|
|
|
cci.predictor_state_vec.push_back(PredictorState {
|
|
|
update_time: Decimal::from_i64(Utc::now().timestamp_millis()).unwrap(),
|
|
|
|
|
|
- mid_price: self.mid_price,
|
|
|
+ mid_price: self.last_price,
|
|
|
ask_price: self.ask_price,
|
|
|
bid_price: self.bid_price,
|
|
|
last_price: self.last_price,
|