Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
give an example of what you mean by "repeating groups" – pyCthon Sep 20 '13 at 22:15
(Comment originally posted in my answer; apologies if it sounded condescending or demeaning in any way; I did not mean this.) This question may be more appropriate to ask at Money.SE or SO, as it has to do with the FIX protocol, which I believe is common knowledge in the financial industry, but I don't believe has much to do with the field of quantitative finance, as it has more to do with the techn(olog)ical side of data exchange. As @chrisaycock points out though (and I've verified) Money.SE doesn't seem to talk much about FIX, so I'm wrong about that. (Still vouching for SO though!) – Andrew Cheong Sep 21 '13 at 10:37
up vote 7 down vote accepted

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:


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|...
share|improve this answer
+1 - I should have taken the extra step to provide specific examples as you did. – Andrew Cheong Sep 21 '13 at 10:40

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).

share|improve this answer
Please don't tell other users what you think is in scope when you readily admit you don't know anything about this field. I can't imagine anyone on Money.SE would even know what FIX is. – chrisaycock Sep 21 '13 at 6:06
@chrisaycock - I apologize. I didn't mean to sound condescending via italics, if that's what caused offense. I only meant to separate the formatting of an aside from my answer. If there's some other way I've caused offense, please let me know; otherwise I'm a bit surprised by what I interpret to be hostility. Indeed my initial posts didn't belong on this site. I quickly learned the community was far more exclusive than I had realized; thus since then I've almost completely refrained from posting. I'd continued to read questions, answers, and comments from a distance though, and I guess in this – Andrew Cheong Sep 21 '13 at 10:26
case I thought I had enough sense as to what was relevant and what was not. (Specifically, I recalled a previous question that was very technology-oriented, and a moderator replied to the effect of, "This is a job for database administrators; not quants.") Myself being a programmer at a trading software vendor, and having written my company's FIX 4.2/4.3 processor from scratch, I thought I could answer this. Perhaps I was mistaken; I trust your judgment about Money.SE not having the expertise. Over the years I'd seen at least a few questions about FIX on Stack Overflow, and my impression from – Andrew Cheong Sep 21 '13 at 10:27
the software side of the industry was that FIX was basic knowledge, so I (incorrectly) assumed it'd be as commonplace a thing at Money.SE. – Andrew Cheong Sep 21 '13 at 10:27

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.