FAQ
Please review below FAQ's for any related questions you may have.
What happens if a client disconnects before markets are settled/suspended?
The client receives a full image on reconnection which overwrites all older prices. The client will need to process the market message for every market, and the market_update message for every market that matches their subscription.
When are old events purged from the feed?
Up to 2 days after the event.
What happens when my application disconnects, and reconnection is established after bets have been settled?
You will receive settlement information for that event.
Will I receive old prices when reconnecting after a broken connection?
Subscriptions are not shared between connections. In a scenario of a reconnect, you will receive a market message with all the markets available just as you do when you initialize a connection. You then must re-subscribe to the markets. Once you have re-subscribed you will receive a market_update for all the markets which match your subscriptions. Each connection is independent and does not hold memory of its previous connection.
For dead heat settlement, are you going to use fraction or decimal values for stake and payout?
We won't send fractions, we'll send decimals (like in the example), but that's the correct structure. "settlement": { "stake_returned":0.0, "payout_returned": 0.5 },
Removing a Market
Elaborating question: If you want to "remove" a market created with the following "market" message: "type": "market", "id": "golf_14754_threeball_hole~7cgolfer_ids~3d24~2c1544~2c1548~7chole_num~3d1~7cround_num~3d1", Will you send this? "type": "remove_markets", "msg": ["golf_14754_threeball_hole~7cgolfer_ids~3d24~2c1544~2c1548~7chole_num~3d1~7cround_num~3d1"] or this: "type": "remove_markets", "msg": ["golf_14754_threeball_hole"] To answer this: Every market message will have a property called ID. Let's say that this property is of type MarketID. It's a "slug", which is defined in the documentation: “A slug is defined as a string which may only contain the following characters: digits 0-9, a-z and A-Z, hyphen (-), underscore (_), period (.), and tilde (~). A slug is represented equivalently in ASCII or UTF-8 and may be used in URLs without escaping.” A market's id property is globally unique - we will never re-use them. The msg property of the remove_markets message has type List[MarketID]. Each ID we send will refer to either one or zero markets that we've sent market messages for. The zero there is because it's possible that we would send a remove_markets message for a market we hadn't sent a market message for. We don't expect this ever to actually happen in practice though. Also note that markets are part of a hierarchy. Every market has a parent event, and every event a parent competition. If we send a remove_events message, then any market which belongs to those events should also be removed by that message.
Why is the feed not populating the start_time property for a pre_play market message?
Start time for Markets is always null. That's never set. We do set the start time for events which is dependent on when the Tee Times become available.
Which Tags can I subscribe to
You can subscribe to any combination of tags (sport, competition, event, and market type), but the additive nature means that multiple subscriptions are not usually required.
Some examples:
["sp.golf"] will subscribe to all golf markets
["comp.golf_pga"] subscribes to all PGA Tour golf markets
["ev.golf_14586"] will subscribe to all markets from event ev.golf_14586
["ev.golf_14586", "mt.twoball"] will subscribe to all markets from event ev.golf_14586, and also all markets (from any event) of type mt.twoball
Should we expect to continue receiving Odds after the tournament ends?
Yes, in case of late entries for example. You should see the markets listed as "ended" which is to indicate that you should not listen to any further updates.
We have noticed that within the market_update feed, under the selection_updates the price is returned as 0/1. Is this expected? Should we suspend markets in this case?
That usually happens when a selection does not have a legitimate price for some reason. When it happens, the selection itself should either be settled or suspended
Do we only provide odds for a player making the cut?
That's correct. We don't offer odds that a player won't make the cut.
Is there a way to see which market types will be offered for a particular event?
The market reports are the best way to tell. As a rule, Mustard will create all markets which are appropriate for that event type (L1, L2 etc)
Currently after we connect, we send the following command: {"request": "init","msg": {"tags": ["sp.golf", "comp.golf_europga", "ev.golf_14759","mt.threeball_hole"]}}. We expected this to return all 3-ball markets for The Genesis Invitational however it seems we get all markets back. Can you advise if we are requesting 3 ball markets correctly?Do we only provide odds for a player making the cut?
You'll receive the union of the markets which match your subscription, not the intersection: if you subscribe to "ev.golf_7" and "mt.outright", you'll get all markets for event ID 7, and any market of type "mt.outright", rather than markets of type "mt.outright" in event 7.
Currently, it's not possible to subscribe to all markets of a particular type within a particular event.
What are the possible ways a client can subscribe to a market?
They can subscribe to any combination of tags (sport, competition, event, and market type), but the additive nature means that multiple subscriptions are not usually required.
Some examples:
["sp.golf"] will subscribe to all golf markets
["comp.golf_pga"] subscribes to all PGA Tour golf markets
["ev.golf_14586"] will subscribe to all markets from event ev.golf_14586
["ev.golf_14586", "mt.twoball"] will subscribe to all markets from event ev.golf_14586, and also all markets (from any event) of type mt.twoball
We noticed that an initial market_update returned with 3 selections, then another one with just one; changing the price for one selection - is this expected? (logs below)
2021-02-19 20:25:50.421 [main] INFO ssh_traffic:26 - {"mode":"push","type":"market_update","msg":[{"id":"golf_14759_threeball_hole~7cgolfer_ids~3d547~2c4787~2c5179~7chole_num~3d9~7cround_num~3d2","status":"active","ew_terms":null,"meta":{"group_id":11,"hole_num":9,"round_num":2,"event_id":"254"},"selection_updates":[{"display":true,"id":"g:547","meta":{"golfer_id":3397},"name":"Cameron
Tringale","note":"","order":1,"price":"13/8","reason":"","status":"active"},{"display":true,"id":"g:4787","meta":{"golfer_id":3402},"name":"Joel Dahmen","note":"","order":2,"price":"19/10","reason":"","status":"active"},{"display":true,"id":"g:5179","meta":{"golfer_id":7451},"name":"Will Zalatoris","note":"","order":0,"price":"13/8","reason":"","status":"active"}],"display":true,"related_place_markets":null}]}
2021-02-19 20:26:02.295 [main] INFO ssh_traffic:26 - {"mode":"push","type":"market_update","msg":[{"id":"golf_14759_threeball_hole~7cgolfer_ids~3d547~2c4787~2c5179~7chole_num~3d9~7cround_num~3d2","status":"active","ew_terms":null,"meta":{"group_id":11,"hole_num":9,"round_num":2,"event_id":"254"},"selection_updates":[{"id":"g:4787","price":"9/5"}],"display":true,"related_place_markets":null}]}
Yes, this is expected. As explained in https://docs.imgarena.com/mustard-systems-odds-distribution-service/-MKdexAVg8N0obU0S5dH/odds-distribution-service/feed-specification#market-status-update, the selection_updates field will only contain selections that have changed.
When will markets be sent to us?
Markets cannot be generated until static data is received i.e. tee times.
How many co-current connections can a client have over SSH?
2 connections per customer to each environment.
How can I subscribe to a subset of markets?
A subscription is a set of tags. A tag can be a sport, competition, event, market type, or market id. If multiple tags are provided, you will receive markets that match any of the provided tags. For example, "tags": ["ev.golf_1", "mt.outright"] will provide both "all markets for ev.golf_1" and "all markets of type mt.outright"
Why aren't I receiving messages for this market?
This may be because the market does not match your subscription - please note that each session can only have one subscription at time, for example, subscribing to ev.golf_2 after previously subscribing to ev.golf_1 will mean you no longer get markets from ev.golf_1.
This may also be because the market is not available for that event. If you think you should be receiving a market but aren't, please provide your session ID along with the subscription message that are you using
I got a market_update message but some selections were missing?
Only the first market_update message will necessarily contain every selection. Future messages will only contain deltas, for example if only one selection changes, the update message will only contain that selection.
What does resulting data look like? What does a dead heat look like?
There are two fields: stake_returned and payout_returned. Both will be decimals between 0.0 and 1.0 inclusive. A losing selection will have 0.0 for both stake and pay out returned. A winning selection will typically have 0.0 stake and 1.0 pay out. If two selections dead-heat, they will both get 0.5 for payout_returned. A void selection would get 1.0 stake and 0.0 pay out.
How do we result each-way markets?
Results are provided for the main market and the related place market independently. Clients are responsible for using these accordingly. This is because each-way terms can change during the lifecycle of a market. Related place markets are published as a dictionary in the market_update message, for example "related_place_markets": {"4": "golf_123_topn7cnplaces3d4"]"} means that the results for 4 places can be found in the market golf_123_topn7cnplaces3d4.
What is a "related place market"?
Some markets will offer each-way terms. Depending on the each-way settings (e.g. 4 places or 5 places), clients will need to look at more than just the main market to settle customer bets. For example, if the main outright market has each-way settings for 4 places, the related place market would be the "Top 4" market. A customer's bet on selection S would depend on that selection's result in both the main outright and the related place markets. Related place markets are published as a dictionary in the market_update message, for example "related_place_markets": {"4": "golf_123_topn7cnplaces3d4"]"} means that the results for 4 places can be found in the market golf_123_topn7cnplaces3d4.
Are the each-way terms static, or do you update them as the tournament goes on? Also, for the Alternative each way, do the each-way terms update as the tournament goes on or do they remain static for a period of time and then are removed from the offering?
‘Top Region’ markets have moving EW terms so these are updated throughout the tournament to give the correct offering for the changes in the market. The ‘Alternate EW’ markets have static EW terms which don’t change at any point during the tournament.
Last updated
Was this helpful?