Scope
FIX Order Entry (OE) message flow for both products over the shared session engine.
Messages
- Outbound:
NewOrderSingle (35=D), OrderCancelRequest (35=F), OrderCancelReplaceRequest (35=G), OrderMassCancelRequest (35=q).
- Inbound:
ExecutionReport (35=8), OrderCancelReject (35=9), OrderMassCancelReport (35=r), BusinessMessageReject (35=j).
Work
- Typed order vocabulary mapping to/from FIX:
Side (54: BUY_YES/SELL_NO), OrdType (40: LIMIT), TimeInForce (59), SelfTradePreventionType (2964), ExecInst (POST_ONLY), OrderGroupID, MaxExecutionCost, AllocAccount.
- Money/qty precision:
DollarDecimal for prices, FixedPointCount for quantities. Perps: fixed-point dollars (≤6dp) + FixedPointCount (≤2dp) with UseDollars on; prediction: integer cents unless UseDollars.
NoPartyIDs/NoMiscFees/NoCollateralAmountChanges groups (depends on repeating-group support).
- Typed send helpers on
FixClient/MarginFixClient and typed inbound delivery (ExecutionReport stream / callback).
Acceptance
Golden round-trip fixtures for every OE message; state tests for order lifecycle (New → PartiallyFilled → Filled, Cancel, Replace, Reject) against the mock acceptor. ruff + mypy --strict clean.
Dependencies
Foundation #422; repeating-group support. Part of #402.
Scope
FIX Order Entry (OE) message flow for both products over the shared session engine.
Messages
NewOrderSingle(35=D),OrderCancelRequest(35=F),OrderCancelReplaceRequest(35=G),OrderMassCancelRequest(35=q).ExecutionReport(35=8),OrderCancelReject(35=9),OrderMassCancelReport(35=r),BusinessMessageReject(35=j).Work
Side(54: BUY_YES/SELL_NO),OrdType(40: LIMIT),TimeInForce(59),SelfTradePreventionType(2964),ExecInst(POST_ONLY),OrderGroupID,MaxExecutionCost,AllocAccount.DollarDecimalfor prices,FixedPointCountfor quantities. Perps: fixed-point dollars (≤6dp) +FixedPointCount(≤2dp) withUseDollarson; prediction: integer cents unlessUseDollars.NoPartyIDs/NoMiscFees/NoCollateralAmountChangesgroups (depends on repeating-group support).FixClient/MarginFixClientand typed inbound delivery (ExecutionReport stream / callback).Acceptance
Golden round-trip fixtures for every OE message; state tests for order lifecycle (New → PartiallyFilled → Filled, Cancel, Replace, Reject) against the mock acceptor.
ruff+mypy --strictclean.Dependencies
Foundation #422; repeating-group support. Part of #402.