Accept a Forwarded Quote

Message is “Quote Response” (35=AJ)

SubscriberOpenYieldRQ
TagNameRequiredNotes
117QuoteIDRequiredQuote ID from the forwarded Quote message being accepted
694QuoteRespTypeRequired1=Hit/Lift (accept quote)·6=Pass1 (Hit/Lift) to accept, 6 (Pass) to pass. Other values are ignored.
693QuoteRespIDRequiredYour ID for this QuoteResponse (required by the FIX 4.4 data dictionary)
11ClOrdIDRequiredYour ID for the accept; the ClOrdID of the resulting limit order
54SideRequired1=Buy·2=SellOpposite side to the forwarded quote
132BidPxConditionalRequired when Side=Buy: your price, or 0 for the quote's price
134BidSizeConditionalRequired when Side=Buy: the size to accept; 0 is a pass
133OfferPxConditionalRequired when Side=Sell: your price, or 0 for the quote's price
135OfferSizeConditionalRequired when Side=Sell: the size to accept; 0 is a pass
60TransactTimeRequiredTime of acceptance
131QuoteReqIDRequiredThe QuoteReqID of the original request
Repeating Group

PartyBlock-Inbound(453 NoPartyIDs)

Party block sent by subscribers on orders, quotes, and Summon requests. Identifies the trading party and optional sub-accounts.

TagNameRequiredNotes
453NoPartyIDsCountRequiredNumber of party block entriesSet to the number of entries that follow.
The fields below repeat once per entry (count in NoPartyIDs)
448PartyIDRequired—
452PartyRoleRequiredRole of this party entry

Party Roles

RoleNameRequiredNotes
3Client IDRequiredYour assigned counterparty code (not MPID)
4Clearing FirmConditionalYour MPID shown to contra firms. Optional if OpenYield can determine it via rules; required if you have multiple MPIDs or are configured to send it.
5Investor IDOptionalAccount / sub-account code, if the subscriber is configured for sub-accounts
24Customer CodeConditionalPass-through tag; OpenYield returns this unchanged on all responses. Use for internal codes, strategy, algo, desk, portfolio, etc.
11Order Origination TraderConditionalObfuscated trader code for GUI users. OpenYield reflects it on all responses.

Optionally add a PartySubID block (802/523/803) under role 4 if the subscriber has multiple accounts at the same DTCC clearing firm (set PartySubIDType 803=10, PartySubID 523=clearing account code).

Field Group

SecurityBlock

The security being traded.

TagNameRequiredNotes
55SymbolRequiredSame value as SecurityID (48)
48SecurityIDRequiredSecurity identifier (ISIN, CUSIP, or FIGI per configuration)
22SecurityIDSourceRequired1=CUSIP·4=ISIN·A=Bloomberg Symbol (FIGI)
460ProductConditional1=Agency·3=Corporate·6=Government·11=MunicipalRequired on OpenYield responses; optional on subscriber messages.
Note

This applies to connections set up for Legacy RFQ.

Accept a forwarded quote before its ValidUntilTime (62), about 30 seconds after your request. After that, the responder's quote may have been removed from the book.

OpenYield ignores QuoteResponse (35=AJ) messages unless QuoteRespType (694) is 1 (Hit/Lift) or 6 (Pass). A Pass, or a Hit/Lift with size 0, gets no reply.

For a Hit/Lift, OpenYield places a new limit order on the marketplace, on the opposite side to the quote:

  • The size is the size on your QuoteResponse.
  • The price is your price, or the quote's price if you send 0.
  • It fills against whatever is on the book at that price or better. That can be more than one response, or none if the quotes have moved. Accepting does not lock the quote.
  • It is rejected if the security differs from the quote's or the side is not opposite to it (OrdRejReason 103=11), or if the QuoteID is unknown (103=5).
  • If your connection is set up for it, what's left is cancelled 30 seconds after your request. Otherwise it stays on the book until you cancel it.

For example, to accept the first quote from Quotes Forwarded to the Initiator (QRS20250214-SD-000000000001), send:

8=FIX.4.4 9=223 35=AJ 34=452 49=BASTION-RQ 52=20250214-21:14:57.565 56=OPENYIELD-RQ 11=XORD-000001 22=4 48=US023135CF19 54=2 55=US023135CF19 117=QRS20250214-SD-000000000001 133=96.2832 135=100 453=1 448=Bastion 452=3 693=XRES-000001 694=1 10=098

OpenYield acknowledges this as a new order (ExecType 150=0, OrdStatus 39=0) and places it on the order book:

8=FIX.4.4 9=326 35=8 34=458 49=OPENYIELD-RQ 52=20250214-21:14:57.586 56=BASTION-RQ 6=0 11=XORD-000001 14=0 17=RSP20250214-OD-000000000102 22=4 31=0 32=0 37=ORD20250214-OD-000000000028 38=100 39=0 44=0 48=US023135CF19 54=2 55=US023135CF19 118=0 136=0 150=0 151=100 157=0 159=0 236=0 381=0 453=3 448=Bastion 452=3 448=BAST 452=4 448=OYLD 452=1 10=243

Fills arrive on TR and DC, as described in Execution. The order fills at the best price on the book, up to the price you send. In this example, QRS20250214-SD-000000000002 (96.3399) was at the top of the book, so the fill is at that better price.