diff --git a/hftbacktest/src/backtest/proc/l3_local.rs b/hftbacktest/src/backtest/proc/l3_local.rs index c9afcac6c..460acdd6b 100644 --- a/hftbacktest/src/backtest/proc/l3_local.rs +++ b/hftbacktest/src/backtest/proc/l3_local.rs @@ -278,8 +278,8 @@ where wait_resp_order_received = true; } - // Processes receiving order response. - if order.status == Status::Filled { + // Processes receiving order response (full and partial fills). + if order.status == Status::Filled || order.status == Status::PartiallyFilled { self.state.apply_fill(&order); } // Applies the received order response to the local orders. diff --git a/hftbacktest/src/backtest/proc/local.rs b/hftbacktest/src/backtest/proc/local.rs index adc48e25e..2c6436859 100644 --- a/hftbacktest/src/backtest/proc/local.rs +++ b/hftbacktest/src/backtest/proc/local.rs @@ -98,8 +98,8 @@ where wait_resp_order_received = true; } - // Processes receiving order response. - if order.status == Status::Filled { + // Processes receiving order response (full and partial fills). + if order.status == Status::Filled || order.status == Status::PartiallyFilled { self.state.apply_fill(&order); } // Applies the received order response to the local orders. diff --git a/hftbacktest/src/backtest/proc/partialfillexchange.rs b/hftbacktest/src/backtest/proc/partialfillexchange.rs index 53bca76ca..f8b18c6b6 100644 --- a/hftbacktest/src/backtest/proc/partialfillexchange.rs +++ b/hftbacktest/src/backtest/proc/partialfillexchange.rs @@ -152,7 +152,7 @@ where // q_ahead is negative since is_filled is true and its value represents the // executable quantity of this order after execution in the queue ahead of this // order. - let exec_qty = if filled_qty > order.leaves_qty { + let exec_qty = if filled_qty >= order.leaves_qty { self.filled_orders.push(order.order_id); order.leaves_qty } else { @@ -192,7 +192,7 @@ where // q_ahead is negative since is_filled is true and its value represents the // executable quantity of this order after execution in the queue ahead of this // order. - let exec_qty = if filled_qty > order.leaves_qty { + let exec_qty = if filled_qty >= order.leaves_qty { self.filled_orders.push(order.order_id); order.leaves_qty } else {