6
$\begingroup$

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?

$\endgroup$
  • $\begingroup$ give an example of what you mean by "repeating groups" $\endgroup$ – pyCthon Sep 20 '13 at 22:15
10
$\begingroup$

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|...
$\endgroup$
2
$\begingroup$

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

$\endgroup$
1
$\begingroup$

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.

$\endgroup$
1
$\begingroup$

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.

$\endgroup$
1
$\begingroup$

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.

$\endgroup$
1
$\begingroup$

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.
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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