Figure Markets Trade Connector
Features
fix-figuremarketsConnector KeyNotes
Connectivity
Figure Markets requires a secure TLS connection.
Use Stunnel as the SSL termination endpoint.
Market Orders
Market orders must be submitted with Time-In-Force IOC.
Firm, User and Account Identifiers
Figure Markets validates individual traders via SenderSubID (50) and customer accounts via Account (1) on order entry.
Contact Figure Markets to obtain these identifiers.
Schedule
The platform operates 24 hours a day with a weekly maintenance window between 21:00 and 21:30 on Sunday. The FIX session schedule runs weekly from Sunday 21:00:00 to Sunday 20:59:59.
Cancel on Disconnect
Cancel on Disconnect is an optional risk control that automatically cancels all open orders if connectivity is lost.
It is disabled by default and must be enabled per session — contact your Figure Markets representative to arrange this.
Self-Match Prevention
Self-match prevention can be enabled at the FIX session level or per order using tags SelfMatchPreventionID (7928) and SelfMatchPreventionInstruction (8000).
When enabled, two otherwise-executable orders from the same participant sharing the same SelfMatchPreventionID will not match — one is expired instead.
Which order is cancelled (resting or aggressive) is controlled by SelfMatchPreventionInstruction (8000) on the incoming order.
Post Only Orders
Figure Markets supports PostOnly orders via ExecInst(18) = 6.
Exec Instructions
| Exec Instruction | Tag 18 Value | Definition |
|---|---|---|
| ALL OR NONE | G | Require that either (a) all of the order quantity is filled immediately, or (b) none of it should trade even partially. Marking an order with this ExecInst instruction is functionally-equivalent to setting Time In Force to FOK. |
| IGNORE PRICE VALIDITY CHECKS | c | Exempt this order from absolute price limits, relative price limits, order size limits, and total notional limits. Only allowed for market-to-limit orders to sell. This flag exists to support quickly liquidating a position. |
| PARTICIPATE DON'T INITIATE | 6 | Require that the order is only accepted if it would NOT immediately match. This guarantees that the order will always be the passive side in any trades. Should not be used with MinQty (110) or with instructions requiring immediate execution: ExecInst (18) = G (All or None), or TimeInForce (59) = 3 or 4 (IOC or FOK). |
Symbology
Symbology
Figure Markets assigns a simple string identifier to each instrument traded on the platform,
used as the Symbol (55) value in all FIX messages.
The default attributeKey value is figuremkts.
Configuration
Connector settings
| Parameter | Default Value | Description |
|---|---|---|
username | Username. | |
password | Password. | |
senderSubId | SenderSubID(50). Default trader. | |
useTrader | false | Use request's Trader ID (if provided) for SenderSubID(50) |
account | Account(1). User account. | |
useAccount | false | Defines whether or not to use Account from request in FIX message |
selfMatchPreventionId | Self Match Prevention ID. | |
selfMatchPreventionInstruction | Self Match Prevention Instruction. Allowed values: CANCEL_RESTING, CANCEL_TAKING. | |
discardOnReconnect | false | Discard open order upon reconnect. |
Supported order attributes
| Key | Description |
|---|---|
| 1 | Account(1) - Account mnemonic as agreed between buy and sell sides. |
| 18 | ExecInst(18). See Exec Instructions. |
| 50 | SenderSubID(50). Trader. |
| 8000 | SelfMatchPreventionInstruction(8000). Allowed values: O - Cancel oldest (resting) order, N - Cancel newest (aggressive) order. |
| 7928 | SelfMatchPreventionID(7928). Unique identifier to be passed in the case of a self-match prevention cancellation. |
| 6127 | ConditionTriggerMethod(6127). The price used to trigger the stop order. Applicable to Stop orders only. Allowed values: 2 - Last price [Default], 5 - Settlement price. |
Config sample
connectors {
FIGUREMKTS : ${template.connector.fix.figuremarkets} {
settings {
host = "<HOST>"
port = <PORT>
attributeKey = figuremkts # default
senderCompId = "<SENDER_COMP_ID>"
targetCompId = "<TARGET_COMP_ID>"
username = "<USERNAME>"
password = "<PASSWORD>"
senderSubId = "<DEFAULT_TRADER>"
useTrader = false # default
account = "<ACCOUNT>"
useAccount = false # default
}
}
}