The MFMarketMaker is designed similarly to MFClient in terms of style but offers a different workflow. The sections above describing connecting, dispatching, subscriptions, replay, etc. all remain true but Taker market data and trading have been replaced with market making functionality. After a successful connection to the server, there are two new subscription types required to begin market making. To receive QuoteRequest messages and start quoting, use subscribePricing(). To receive order submissions use subscribeTrading().
In the case of pricing, the maker has the option to reject individual QuoteRequests or to initiate a stream of MFQuotes for each request. The remains active and quoting may continue until either the maker sends CancelQuote or receives a MassQuoteAck indicating request expiration. If at any time a maker quote is rejected, the session will disconnect.
Trading requires an active QuoteRequest and streaming MFQuotes before the maker will receive NewOrder from a taker. The maker may choose to respond with RejectOrder or AcceptOrder, but if the response isn't timely, the venue will send OrderTimeout. In the rare case AcceptOrder is rejected, the venue will send TradeCaptureAck. MarketFactory may also send this message if an acceptance didn't reach the exchange due to disconnection. Additional details on coding and venue-specific behaviour can be found in the Javadoc and venue matrix spreadsheet respectively.
Note that Market Making is based on negative acknowledgements – responses are only on error, not on success. Additionally, there are a few restrictions specific to maker clients. |
Only one preconfigured user will have access to a single Market Maker Trading Venue connection (multiple users are not permitted) as best practice. MarketFactory applies this limitation to prevent complications and errors, as a result of high message volumes from multiple liquidity providers on a single session.
Additionally, there are currently no risk checks, offline reports, or dropcopies when using Whisperer for Market Making.