How FIX Repeating Groups Encode Arrays and Market Data Snapshots
Summary
FIX repeating groups encode array-like collections of related fields within a single message. A count field announces how many entries follow, and the group structure lets a recipient interpret repeated values as separate entries. For example, a message can list multiple trading sessions using a count followed by the session identifiers. The document also contrasts this format with multi-value string fields, where several values appear within one tag.
The answers explain that repeating groups are not inherently tied to a time frame or necessarily to separate orders. They can represent nested or related data, including instrument details and market depth snapshots, and can package multiple market-data updates or trade events into one message. This can avoid repeating headers and reduce the need for separate end-of-message signaling. The discussion is explanatory rather than a full specification of FIX group ordering or message-specific rules.
Key ideas
- A FIX repeating group represents an array of related entries within one message.
- A count field indicates how many group entries the recipient should expect.
- Repeating groups can carry trading sessions, instrument details, market depth, or multiple market events.
- Groups are not inherently associated with time frames; their meaning depends on the message structure.
- A multi-value string is a separate way to encode several values in one field.
Tags
Full text
# FIX- what exactly do repeating groups represent? # FIX- what exactly do repeating groups represent? I am trying to find out what is the purpose of "repeating groups" in FIX and what exactly do they represent? Are they all related to the same order and if so, why do you need repeated tags? If they aren't related to the first order wouldnt it be easier to send in a separate message? Is it just all orders at that exact time frame which are grouped together, hence the repeating groups? ## Answer by chrisaycock (score 11, accepted) https://quant.stackexchange.com/a/8955 Repeating groups are a way for FIX to represent arrays. A "number of" field prepends the repeating group to alert the recipient how many elements to expect. For example, Arca uses `TradingSessionID` (tag 336) to identify pre-open (P1), primary (P2), and post-close (P3) market hours. This group is prepended by `NoTradingSessions` (tag 386). So, I would use the following sequence in my FIX message to alert Arca that all three of their sessions are valid for this message: ``` ...|386=3|336=P1|336=P2|336=P3|... ``` As a side note, FIX also uses multiple-value strings as another representation of arrays. `ExecInst` (tag 18) is a single string that has multiple values separated by a space: ``` ...|18=1 W|... ``` ## Answer by Andrew Cheong (score 2) https://quant.stackexchange.com/a/8954 No, it doesn't have to do with time frames. It's a protocol feature designed to enable something akin to nested data, whether for more compact data transmission, or just to allow one to adhere to rules of semantic sense. Take market data requests, for example, i.e. retrieving the current market depth for a certain instrument. Not only would sending one message per order on the book inefficiently retransmit headers and other common tags, but also you'd need an additional tag (or message) to indicate an EOM (end-of-message(s)). Not to mention the latency and auditing overheads (and headaches) involved in dealing with piecemeal data delivery (as opposed to snapshots). ## Answer by Clebson Derivan (score 1) https://quant.stackexchange.com/a/8953 its a concept, you can repeat N data group of fields in a message, a x field (the repeating group) act as separator of the groups. ## Answer by Serg (score 1) https://quant.stackexchange.com/a/9030 Using repeating groups is most important in transmitting the market data. One single order may generate several market data events (datablocks). Suppose, a single large aggressor order arrives to the exchange and matched against several limit orders. This generates number of trade events, and several order book updates. It's reasonable to pack all these events into a single FIX message. ## Answer by PabTorre (score 1) https://quant.stackexchange.com/a/9033 Repeating groups are used in FIX FAST, the FIX protocol used for streaming quotes. As pointed before, they are used to relay information that fits into an array like structure, such as characteristics of the 3 trading sessions for the day, or details about an instrument, or a L2 snapshot. ## Answer by Olivier de Rivoyre (score 1) https://quant.stackexchange.com/a/19182 According to http://javarevisited.blogspot.fr/2011/02/repeating-groups-in-fix-protcol.html: - Repeating group are used to carry repeating data - It starts with a particular tag which specifies how many repeating tags are present within repeating group - A specific field identifies the beginning of a group new entry. - Any tag which doesn't belong to repeating group automatically indicates the end of the repeating group.
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.