Skip to content

[FIX] Repeating-group support in the typed message framework #423

Description

@TexasCoding

Scope

Extend the typed FIX message framework (kalshi/fix/messages/base.py) and the codec to support repeating groups, which the foundation deliberately deferred (scalar fields only). Prerequisite for Order Entry, Market Settlement, and RFQ message families.

Work

  • FixMessage base: declare and (de)serialize repeating groups in order, driven by the NoXxx count field + ordered member fields.
  • Codec/RawMessage: ordered group extraction from the flat tag list (groups are order-sensitive and can nest).
  • Groups needed across phases: NoPartyIDs (453), NoMiscFees (136), NoCollateralAmountChanges (1703), NoMultivariateSelectedLegs (20181), NoMarketSettlementPartyIDs (20108, nested).

Acceptance

  • Golden round-trip fixtures for each group (encode → bytes → decode → model equality), including a nested group.
  • ruff + mypy --strict clean; tests in tests/fix/.

Dependencies

Builds on the foundation (#422). Part of #402.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions