From 2503a4ebe7021ab43921fb1b14893bae3b1226c1 Mon Sep 17 00:00:00 2001 From: Martin Molinero Date: Thu, 11 Jun 2026 11:25:59 -0300 Subject: [PATCH 1/2] Few minor fixes for OrderFillsDuringExtendedMarketHoursAnalysis --- .../Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs | 5 +++-- Engine/TransactionHandlers/BrokerageTransactionHandler.cs | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs b/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs index 44ff63206c30..bc2b57ccaf4e 100644 --- a/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs +++ b/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs @@ -53,7 +53,8 @@ public class OrderFillsDuringExtendedMarketHoursAnalysis : BaseResultsAnalysis foreach (var orderEvent in orderEvents) { - if (orderEvent.Status != OrderStatus.Filled || !algorithm.Securities.TryGetValue(orderEvent.Symbol, out var security)) + if (orderEvent.Status != OrderStatus.Filled || !algorithm.Securities.TryGetValue(orderEvent.Symbol, out var security) + || orderEvent.Message?.Contains("Liquidate from delisting", System.StringComparison.InvariantCultureIgnoreCase) == true) { continue; } @@ -74,7 +75,7 @@ public class OrderFillsDuringExtendedMarketHoursAnalysis : BaseResultsAnalysis } var potentialSolutions = result.Count > 0 ? Solutions(language) : []; - return SingleResponse(orderEvents.Count > 0 ? orderEvents[0] : null, orderEvents.Count > 1 ? orderEvents.Count : null, potentialSolutions); + return SingleResponse(result.Count > 0 ? result[0] : null, result.Count > 1 ? result.Count : null, potentialSolutions); } /// diff --git a/Engine/TransactionHandlers/BrokerageTransactionHandler.cs b/Engine/TransactionHandlers/BrokerageTransactionHandler.cs index cba84f441c21..1a9f5ce1c7f3 100644 --- a/Engine/TransactionHandlers/BrokerageTransactionHandler.cs +++ b/Engine/TransactionHandlers/BrokerageTransactionHandler.cs @@ -1556,7 +1556,8 @@ private void HandleDelistingNotification(DelistingNotificationEventArgs e) { FillPrice = security.Price, Status = OrderStatus.Filled, - FillQuantity = order.Quantity + FillQuantity = order.Quantity, + Message = tag }; // Process this order event From 6e553b8707d74ad53932c89c8cad7d51dd39395e Mon Sep 17 00:00:00 2001 From: Martin Molinero Date: Thu, 11 Jun 2026 11:49:37 -0300 Subject: [PATCH 2/2] Minor cleanup --- .../OrderFillsDuringExtendedMarketHoursAnalysis.cs | 4 +++- Engine/TransactionHandlers/BrokerageTransactionHandler.cs | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs b/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs index bc2b57ccaf4e..e835704cf3b5 100644 --- a/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs +++ b/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs @@ -13,9 +13,11 @@ * limitations under the License. * */ +using System; using System.Collections.Generic; using QuantConnect.Orders; using QuantConnect.Algorithm; +using QuantConnect.Lean.Engine.TransactionHandlers; namespace QuantConnect.Lean.Engine.Results.Analysis.Analyses { @@ -54,7 +56,7 @@ public class OrderFillsDuringExtendedMarketHoursAnalysis : BaseResultsAnalysis foreach (var orderEvent in orderEvents) { if (orderEvent.Status != OrderStatus.Filled || !algorithm.Securities.TryGetValue(orderEvent.Symbol, out var security) - || orderEvent.Message?.Contains("Liquidate from delisting", System.StringComparison.InvariantCultureIgnoreCase) == true) + || orderEvent.Message?.Contains(BrokerageTransactionHandler.LiquidateFromDelistingTag, StringComparison.InvariantCultureIgnoreCase) == true) { continue; } diff --git a/Engine/TransactionHandlers/BrokerageTransactionHandler.cs b/Engine/TransactionHandlers/BrokerageTransactionHandler.cs index 1a9f5ce1c7f3..53bf641716c7 100644 --- a/Engine/TransactionHandlers/BrokerageTransactionHandler.cs +++ b/Engine/TransactionHandlers/BrokerageTransactionHandler.cs @@ -42,6 +42,11 @@ namespace QuantConnect.Lean.Engine.TransactionHandlers /// public class BrokerageTransactionHandler : ITransactionHandler { + /// + /// The tag used for order events of liquidations triggered by a delisting + /// + public static readonly string LiquidateFromDelistingTag = "Liquidate from delisting"; + private IAlgorithm _algorithm; private QCAlgorithm _qcAlgorithmInstance; private SignalExportManager _signalExport; @@ -1545,7 +1550,7 @@ private void HandleDelistingNotification(DelistingNotificationEventArgs e) var quantity = -security.Holdings.Quantity; if (quantity != 0) { - var tag = "Liquidate from delisting"; + var tag = LiquidateFromDelistingTag; // Create our order and add it var order = new MarketOrder(security.Symbol, quantity, _algorithm.UtcTime, tag);