Skip to main content

Placing multiple quotes

Mass Quotes Limit: Mass quotes are limited to 15 double-sided quotes.Fill Limits: The maximum number of fills on a single mass quote is 2000 fills for single-leg instruments and 400 fills for combo instruments.
Duplicate quote handling: When a client sends the same quote twice (identical price, amount, and instrument), Starbase preserves the bid and ask priorities.
Quote quantity validation is all-or-nothing: If any quote entry in a MassQuoteRequest contains an invalid buyAmount or sellAmount, the entire request is rejected and a MassQuoteReject (232) is returned — no quotes in the message are processed. This differs from the JSON-RPC mass quote system, where each side is validated independently and one side may succeed while the other fails.

MassQuoteRequest (130)

Place buy and/or sell orders for up to 15 instruments in one message.
FieldNameTypeLengthDescription
1quoteIdint648Numeric client quote ID
2correlationIdint648Client-assigned ID
3mmpGroupIdint648Identifier of MMP group
4selfMatchPreventionIdint648SMPToken. This order cannot match with any other orders within the same portfolio with the same token. Applies to all quotes in the batch.
5flagsuint81See the table below
6blockLengthOfQuotesuint16244 (bytes)
7numberOfQuotesuint162Number of quotes in repeating group. Maximum is 15.
->8instrumentIdint648Numeric instrument ID
->9bidPricePrice98Limit price of buy side
->10askPricePrice98Limit price of sell side
->11bidQtyDecimal729Buy quantity. 0 to cancel existing buy orders
->12askQtyDecimal729Sell quantity. 0 to cancel existing sell orders
->13bidFlagsuint162See the table below
->14askFlagsuint162See the table below
The table below outlines the content of field 5 (massQuoteFlags) of MassQuoteRequest.
Bit number (from last to first)NameDescription
1resetMMP0=False
1=True
If an MMP freeze is active, this flag will remove the freeze before processing the rest of the message. Keep in mind there is a mandatory 1 second freeze that cannot be overruled
2Reserved for future use
3Reserved for future use
4Reserved for future use
5Reserved for future use
6Reserved for future use
7Reserved for future use
8Reserved for future use
The table below outlines the content of field 13/14 (bidFlags/askFlags) of MassQuoteRequest.
Bit number (from last to first)NameDescription
1postOnlyEnables post-only that amends the quote price to the best bid/ask if it would be immediately executable. The amended price is then validated against price limits. Mutually exclusive with postOnlyReject.
2postOnlyRejectEnables post-only that rejects the quote if it would be immediately executable. Mutually exclusive with postOnly.
3marketLimitSet limitPrice based on the top-of-book instead of the price band.
4MMPThe order will be subject to the default Market Maker Protection group
5resetMmpUnfreeze orders MMP group
6Reserved for future use
7Reserved for future use
8Reserved for future use

MassQuoteResponse (230)

Acknowledges the successful execution of a MassQuoteRequest. Quotes do not have a separate fillAmount and amount. A quote’s amount will always be what’s still available for execution. As such, in a MassQuoteResponse, the amounts of the quotes returned will already incorporate the accompanying fills. Individual quote sides that aggress may be speed bumped, indicated by buyQuoteStatus = 8 or sellQuoteStatus = 8 (Queued). Once the speed bump period expires, an unsolicited MassQuoteOrdersPlaced message is sent for the placed sides. See Speed Bumps for details.
FieldNameTypeLengthDescription
1transactTimeint648Nanoseconds since epoch. Time of entry into the order book
2execIdint648Exchange-assigned event ID
3quoteIdint648Numeric client quote ID
4correlationIdint648Client-assigned ID
5mmpGroupIdint648Identifier of MMP group
6receiveTimeint648Nanoseconds since epoch. Time of receipt of order on the gateway.
7blockLengthOfQuotesuint16276 (bytes)
8numberOfQuotesuint162Number of quotes in repeating group. Maximum is 15.
->9instrumentIdint648Numeric instrument ID
->10bidOrderIdint648Numeric exchange assigned order ID
->11askOrderIdint648Numeric exchange assigned order ID
->12bidPricePrice98Limit price of buy side (possibly different from submitted price if postOnly)
->13askPricePrice98Limit price of sell side (possibly different from submitted price if postOnly)
->14bidQtyDecimal729Quantity remaining of buy side
->15askQtyDecimal729Quantity remaining of sell side
->16bidFilledQtyDecimal729Buy quantity filled
->17askFilledQtyDecimal729Sell quantity filled
->18bidStatusint810=Inactive
1=Unmodified
2=QuantityReduced
3=Updated
4=Filled
5=CanceledByRequest
6=CanceledByMmp
7=CanceledBySelfMatch
8=Queued
->19askStatusint81Refer to buyQuoteStatus for possible values
->20bidRejectReasonint81Rejection reason code. See Rejection Reason Codes for possible values.
->21askRejectReasonint81Rejection reason code. See Rejection Reason Codes for possible values.
22blockLengthOfBidFillsuint16232 (bytes)
23numberOfBidFillsuint162Indicates the length of the following repeating group containing all immediate buy fills when the order was submitted
->24matchIdint648Transaction ID representing match
->25instrumentIdint648Numeric instrument ID
->26fillPricePrice98Price of fill
->27fillQtyDecimal729Quantity of fill
28blockLengthOfAskFillsuint16232 (bytes)
29numberOfAskFillsuint162Indicates the length of the following repeating group containing all immediate sell fills when the order was submitted
->30matchIdint648Transaction ID representing match
->31instrumentIdint648Numeric instrument ID
->32fillPricePrice98Price of fill
->33fillQuantityDecimal729Quantity of fill
34blockLengthOfLegsuint16233 (bytes)
35numberOfLegsuint162Indicates the length of the following repeating group containing all combo leg quantities and prices.
Non-zero for trades on combo instruments only.
->36matchIdint648Transaction ID representing match.
->37instrumentIdint648Numeric instrument ID.
->38legPricePrice98Price of this leg in the combo instrument
->39legQtyDecimal729Quantity of this leg in the combo instrument
->40legSideint811=BUY
-1=SELL

MassQuoteReject (232)

Reject generated in case a MassQuoteRequest is unsuccessful.
FieldNameTypeLengthDescription
1transactTimeint648Nanoseconds since epoch. Time of entry into the order book
2execIdint648Exchange-assigned event ID
3quoteIdint648Numeric client quote ID
4correlationIdint648Client-assigned ID
5mmpGroupIdint648Identifier of MMP group
6reasonint810=SystemError
1=InvalidMmpGroup
2=MmpGroupDisabled
3=MmpGroupFrozen
7=PortfolioLocked
7detailschar0-255ASCII-encoded string