pyfixmsg is a library for parsing, manipulating and serialising FIX messages, primarily geared towards testing. See the example.


  • provide a rich API to compare and manipulate messages.
  • (mostly) Message type agnostic,
  • (mostly) value types agnostic
  • pluggable : load specification XML files, custom specifications or build your own Specification class for repeating groups definitions and message types, define your own codec for custom serialisation or deserialisation quirks.


  • None for the core library.
  • Optional lxml for faster parsing of xml specification files.
  • Optional pytest to run the tests.
  • Optional spec files from quickfix to get started with standard FIX specifications.

Core classes

  • FixMessage. Inherits from dict. The workhorse class. By default comes with a codec that will parse standard-looking FIX, but without support repeating groups.
  • RepeatingGroup. defines repeating groups of a FixMessage.
  • Codec defines how to parse a buffer into a FixMessage, and how to serialise it back
  • FixSpec defines the FIX specification to follow. Only required for support of repeating group. Defined from Quickfix’s spec XML files.

How to run the tests

py.test --spec=/var/tmp/FIX50.xml will launch the tests against the spec file in /var/tmp. You will need to load the spec files from quickfix to get the tests to work.

The spec files are not included in this distribution.


This is only a FIX message library. It doesn’t include a FIX session management system or an order management core, or anything similar. It is purely message parsing-manipulation-serialisation. It is however easy to integrate into an order management or a exchange/broker simulator, etc.