New Quote

Message is “Quote” (35=S)

SubscriberOpenYieldTRRQ
TagNameRequiredNotes
131QuoteReqIDOptionalRFO session only: the QuoteReqID being responded to
117QuoteIDRequiredUnique quote ID; same ID used for updates and cancels
537QuoteTypeOptional0=Indicative (Order Book Summon)·1=Tradeable (Firm RFO)
301QuoteResponseLevelOptional2=Acknowledge All
54SideRequired1=Buy·2=Sell
132BidPxRequiredPrice when Side=Buy; zero otherwise
133OfferPxRequiredPrice when Side=Sell; zero otherwise
645MktBidPxOptionalDealer only: tiered bid price
646MktOfferPxOptionalDealer only: tiered offer price
134BidSizeRequiredQuantity in bonds when Side=Buy; zero otherwise
135OfferSizeRequiredQuantity in bonds when Side=Sell; zero otherwise
60TransactTimeRequiredTime the quote was submitted
Repeating Group

PartyBlock-Inbound(453 NoPartyIDs)

Party block sent by subscribers on orders, quotes, and RFO 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).

Repeating Group

QuoteQualifiersGroup(735 NoQuoteQualifiers)

Optional qualifier block on Quote messages indicating AllOrNone condition.

TagNameRequiredNotes
735NoQuoteQualifiersCountOptionalNumber of quote qualifier entriesSet to the number of entries that follow. Not sent when the group has no entries.
The fields below repeat once per entry (count in NoQuoteQualifiers)
695QuoteQualifierOptionalA=AllOrNone
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.
Repeating GroupOptional

StipulationsBlock(232 NoStipulations)

Optional Minima constraints on a resting order or quote. When present, restricts the quantities a taker may fill against this maker order. Encoded as a FIX stipulations repeating group.

TagNameRequiredNotes
232NoStipulationsCountOptionalNumber of Minima stipulations in the repeating groupSet to the number of entries that follow. Not sent when the group has no entries.
The fields below repeat once per entry (count in NoStipulations)
233StipulationTypeRequiredMINQTY=Minimum Quantity·MININCR=Minimum Increment·MINDNOM=Minimum Balance Remaining (MINDNOM; OpenYield usage)MINQTY, MININCR, or MINDNOM
234StipulationValueRequiredNumeric value for the stipulation
Note

OpenYield does not (yet) support two-sided quotes. Send two quotes to make a two-sided market. We use the Side (54) field to decide whether to use the Bid* or Offer* fields.

OpenYield acknowledges all quote messages. All quotes are good-till-cancel for the trading day: they rest until filled or canceled, and are canceled at end of day or on disconnect.

Minima: Optionally include a Stipulations block (232/233/234) to set minimum-trade constraints on the resting quote. See Minima for the full rule set and encoding details.

For example, the following places a bid (FLAME-00003) for 60 bonds of USZ00000ZZ1X at 100.12, and a matching offer (FLAME-00004) for 60 at 101.42. MktBidPx (645) and MktOfferPx (646) carry the optional Professional (dealer-facing) prices:

8=FIX.4.4 9=233 35=S 34=113 49=FLAMESTREET-TR 52=20231031-15:25:03.696 56=OPENYIELD-TR 22=4 48=USZ00000ZZ1X 54=1 55=USZ00000ZZ1X 60=20231031-15:25:03 117=FLAME-00003 132=100.12 134=60 301=2 453=2 448=FlameStreet 452=3 448=APCC 452=4 537=1 645=99.37 10=081
8=FIX.4.4 9=234 35=S 34=114 49=FLAMESTREET-TR 52=20231031-15:25:03.696 56=OPENYIELD-TR 22=4 48=USZ00000ZZ1X 54=2 55=USZ00000ZZ1X 60=20231031-15:25:03 117=FLAME-00004 133=101.42 135=60 301=2 453=2 448=FlameStreet 452=3 448=APCC 452=4 537=1 646=102.17 10=123

Message is “Quote Status Report” (35=AI)

QuoteStatus (297) = 0— Accepted
OpenYieldSubscriberTRRQ
TagNameRequiredNotes
117QuoteIDRequiredSubscriber's QuoteID
693QuoteRespIDRequiredOpenYield's identifier for this response
54SideRequired1=Buy·2=SellMatches quote
132BidPxRequiredPrice if Side=Buy, matches quote
133OfferPxRequiredPrice if Side=Sell, matches quote
645MktBidPxOptionalDealer tiered price if Side=Buy
646MktOfferPxOptionalDealer tiered price if Side=Sell
134BidSizeRequiredQuantity if Side=Buy, matches quote
135OfferSizeRequiredQuantity if Side=Sell, matches quote
297QuoteStatusRequired0=Accepted·1=Canceled for Symbol·5=Rejected
Repeating Group

PartyBlock-Execution(453 NoPartyIDs)

Party block returned by OpenYield on non-fill execution reports.

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 IDRequiredMatches order
4Clearing FirmOptionalMatches order
5Investor IDOptionalMatches order
24Customer CodeOptionalMatches order
11Order Origination TraderOptionalMatches order
1Executing FirmRequiredOpenYield MPID
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.
Repeating GroupOptional

StipulationsBlock(232 NoStipulations)

Optional Minima constraints on a resting order or quote. When present, restricts the quantities a taker may fill against this maker order. Encoded as a FIX stipulations repeating group.

TagNameRequiredNotes
232NoStipulationsCountOptionalNumber of Minima stipulations in the repeating groupSet to the number of entries that follow. Not sent when the group has no entries.
The fields below repeat once per entry (count in NoStipulations)
233StipulationTypeRequiredMINQTY=Minimum Quantity·MININCR=Minimum Increment·MINDNOM=Minimum Balance Remaining (MINDNOM; OpenYield usage)MINQTY, MININCR, or MINDNOM
234StipulationValueRequiredNumeric value for the stipulation

If a quote is accepted (new or updated), OpenYield sends back a QuoteStatusReport (35=AI) message with QuoteStatus set to Accepted (297=0).

For example, in response to quote FLAME-00003 (and its matching Offer):

8=FIX.4.4 9=180 35=AI 34=531 49=OPENYIELD-TR 52=20231031-15:25:03.705 56=FLAMESTREET-TR 22=4 48=USZ00000ZZ1X 54=1 55=USZ00000ZZ1X 117=FLAME-00003 132=100.12 134=60 297=0 693=RSP20231031-000000327 10=144
8=FIX.4.4 9=180 35=AI 34=532 49=OPENYIELD-TR 52=20231031-15:25:03.706 56=FLAMESTREET-TR 22=4 48=USZ00000ZZ1X 54=2 55=USZ00000ZZ1X 117=FLAME-00004 133=101.42 135=60 297=0 693=RSP20231031-000000328 10=155