diff --git a/Common/Brokerages/BloombergFixBrokerageModel.cs b/Common/Brokerages/BloombergFixBrokerageModel.cs
new file mode 100644
index 000000000000..6891b4702ae5
--- /dev/null
+++ b/Common/Brokerages/BloombergFixBrokerageModel.cs
@@ -0,0 +1,98 @@
+/*
+ * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
+ * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+using System;
+using System.Collections.Generic;
+using QuantConnect.Orders;
+using QuantConnect.Securities;
+
+namespace QuantConnect.Brokerages
+{
+ ///
+ /// Provides Bloomberg FixNet HUB specific properties.
+ ///
+ public class BloombergFixBrokerageModel : DefaultBrokerageModel
+ {
+ private readonly HashSet _supportedSecurityTypes = new()
+ {
+ SecurityType.Equity,
+ SecurityType.Option,
+ SecurityType.Future,
+ };
+
+ private readonly HashSet _supportedOrderTypes = new()
+ {
+ OrderType.Market,
+ OrderType.MarketOnOpen,
+ OrderType.Limit,
+ OrderType.StopMarket,
+ OrderType.StopLimit,
+ };
+
+ ///
+ /// Constructor for Bloomberg FIX brokerage model.
+ ///
+ /// Cash or Margin
+ public BloombergFixBrokerageModel(AccountType accountType = AccountType.Margin) : base(accountType)
+ {
+ if (accountType == AccountType.Cash)
+ {
+ throw new NotSupportedException($"Bloomberg FIX brokerage can only be used with a {AccountType.Margin} account type");
+ }
+ }
+
+ ///
+ /// Returns true if the brokerage could accept this order.
+ ///
+ /// The security of the order
+ /// The order to be processed
+ /// If this function returns false, a brokerage message detailing why the order may not be submitted
+ public override bool CanSubmitOrder(Security security, Order order, out BrokerageMessageEvent message)
+ {
+ if (!_supportedSecurityTypes.Contains(security.Type))
+ {
+ message = new BrokerageMessageEvent(BrokerageMessageType.Warning, "NotSupported",
+ Messages.DefaultBrokerageModel.UnsupportedSecurityType(this, security));
+ return false;
+ }
+
+ if (!_supportedOrderTypes.Contains(order.Type))
+ {
+ message = new BrokerageMessageEvent(BrokerageMessageType.Warning, "NotSupported",
+ Messages.DefaultBrokerageModel.UnsupportedOrderType(this, order, _supportedOrderTypes));
+ return false;
+ }
+
+ if (order.AbsoluteQuantity % 1 != 0)
+ {
+ message = new BrokerageMessageEvent(BrokerageMessageType.Warning, "NotSupported",
+ $"Order Quantity must be Integer, but provided {order.AbsoluteQuantity}.");
+ return false;
+ }
+
+ return base.CanSubmitOrder(security, order, out message);
+ }
+
+ ///
+ /// Bloomberg FixNet HUB supports cancel/replace (35=G) on order quantity, price, stop price,
+ /// order type and time in force.
+ ///
+ public override bool CanUpdateOrder(Security security, Order order, UpdateOrderRequest request, out BrokerageMessageEvent message)
+ {
+ message = null;
+ return true;
+ }
+ }
+}