FIX Engine as initiator and acceptor at the same time for the same counterpart

Hi guys, I have been told that the standard functioning of FIX engine that via configuration if one counterpart may access the same service (e.g. trading) either as initiator or as acceptor.
It looks weird to me, because if the FIX engine is offering a session as a service, to me is clear that it shall be an acceptor and not an initiator.
Of course I know that it is possible to create multiple sessions as initiator and as acceptor at the same time. The question is for one single counterpart wanting to switch from initiator to acceptor depending on the their needs.
Does the specification state somewhere what I’ve been told? Is it the practice?
Thanks in advance
Anna

Good day Anna,
some banks have a problem to allow tcp inbound connect requests and only permit outbound connection establishment.
Normally initiator (tcp connect request+appl-login) is the buy side and acceptor the sell side.
This may change due to the fact described above where a sell side in a bank would connect the buy side as an initiator. Not uncommon also for back office sessions where drop copies AE messages or allocation reports are received in the bank. Session initiator would be the sell side in the bank.
This is practice. Don’t know what standard tells us but for instance Quickfix implmentation is capable of doing the manoevres decribed above. Confguring both directions seperately is possible but is a bit confusing in the log where sell side and buy side companyIDs are only swapped.

regards
Uli

Thanks Uli,
your reply is satisfactory, because you implied that when a client starts working as an initiator and wants to continue as an acceptor from one point in the future his request cannot be: “This is FIX standard, you know”.
Anna

Hi Anna,

the standard does not put any rules on which side should be initiator and which one acceptor.
But as @111s said it is sometimes more a matter of configuration (e.g. firewalls) or monitoring (e.g. do we need to alert for a “connection refused” event or do we need to wait up to some point until the counterparty connects to us and then generate an alarm).
It is more or less common practice that a service provider is in the role of an acceptor, whereas the client is the initiator. It is also more or less common practice that the service provider “dictates” the rules under which the FIX connection is established. I only came across one broker which acted as initiator (but changed it to acceptor after some years :wink: )

Cheers,
Chris.

1 Like

Generally for trading workflows the firm that sends orders is the initiator and the firm that receives orders is the acceptor.
Buyside (initiator) to sell-side (acceptor)
Sell-side (initiator) to exchange (acceptor)

But this is not set in stone and sometimes there are firewall/legal/compliance or other issues that mean the system must work differently.

@annacochetti as @christophjohn and @john.greenan1 said, the FIX Session Layer standard does not “dictate” this (never has). As pointed out in @john.greenan1’s response that is the typical pattern we (those of us who have been doing this for 20+ yrs) see.

There is the initiator and acceptor of the FIX session and direction of the workflow. They are 2 separate concepts.

One party initiates the FIX connection. Typically a TCP socket, the other party accepts the TCP socket connection, once the socket is connected, the initiator sends a logon message which starts the message flow.

On a FIX connection that has been established, workflow can go in either direction. Such as the buy side sending orders to the sell side and receiving acknowledgements and executions back. Or it could be the sell side sending IOIs to the buy side. There are countless different workflows. The workflows and the direction that are supported on a connection are determined by prior “agreement” between the counterparties connecting.