Skip to main content

mkfix

A FIX protocol testing engine for capital markets connectivity, built on mkio and mkui.

Features

  • Session Management -- Configure and run FIX sessions as initiator or acceptor, created and edited through modal dialogs. Multiple sessions on the same port with different CompIDs.
  • Message Viewer -- Live virtualized table of FIX messages in tag=value format, streaming live by default, with time-based paging, per-column filters, sorting, and clipboard copy.
  • Message Detail -- Field-by-field breakdown of the message selected in the Messages viewer, with field names and enum translations.
  • Sent Orders & Received Trades Blotters -- Live order state machine driven by ExecutionReports; fill and partial fill records. Send NewOrderSingle from the blotter's New dialog; Replace (Cancel/Replace) and Cancel working orders directly from the blotter.
  • Received Orders & Sent Trades Blotters -- The other side of the same flow: new orders and incoming cancel and cancel/replace requests all appear on the Received Orders blotter as a pending action, and a single Accept/Reject pair acts on whatever is pending (ExecutionReport New/Canceled/Replaced on accept; ExecutionReport Rejected or OrderCancelReject on reject); working orders can be filled, and sent trades can be corrected and busted from the Sent Trades blotter (FIX 4.2 ExecTransType Correct/Cancel with ExecRefID).
  • Message Replay -- Load production FIX logs and replay them into a test session with speed control, message filtering, and pause/resume.
  • IOI & Allocation Viewers -- Indications of Interest and Allocation message tracking.
  • Session Protocol -- Logon, Logout, Heartbeat, TestRequest, ResendRequest, SequenceReset, GapFill, PossDupFlag handling, and heartbeat timeout detection.

Installation

pip install mkfix

Or from source:

git clone https://github.com/markuskimius/mkfix.git
cd mkfix
pip install -e .

Usage

mkfix                        # start with defaults (port 8080, mkfix.db)
mkfix -p 9090                # override port
mkfix -d mytest              # use mytest.db
mkfix -d :memory:            # in-memory database
mkfix myconfig.toml          # custom config file

Then open http://localhost:8080 in your browser.

Quick Start

  1. Create two sessions with the New button in the Session Manager -- one initiator pointing at the other as acceptor on the same port.
  2. Start both sessions -- Logon and Heartbeat messages will stream in the Messages pane.
  3. Send an order with the New button on the Sent Orders blotter -- see it in the Messages pane and the blotter itself; click any message row to break it out field by field in the Detail pane. On the acceptor side it appears in Received Orders, where it can be accepted, rejected, or filled; fills land in Sent Trades, where they can be corrected or busted.
  4. Replay a log from Tools > Replay Control -- load a production FIX log and replay it into a test session.

Configuration

mkfix uses a TOML config file (mkfix.toml). The built-in default is used when no config is specified. Key settings:

port = 8080
host = "0.0.0.0"
db_path = "mkfix.db"

Tables, services, and static routes are also configured in the TOML file. See the built-in mkfix.toml for the full schema.

Dependencies

  • mkio >= 0.1.65 -- async microservice framework (aiohttp + aiosqlite)
  • mkui >= 0.1.54 -- Web Components UI framework

License

GPL-2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mkfix-0.7.0.tar.gz (80.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mkfix-0.7.0-py3-none-any.whl (66.6 kB view details)

Uploaded Python 3

File details

Details for the file mkfix-0.7.0.tar.gz.

File metadata

  • Download URL: mkfix-0.7.0.tar.gz
  • Upload date:
  • Size: 80.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.7

File hashes

Hashes for mkfix-0.7.0.tar.gz
Algorithm Hash digest
SHA256 bf33a299933a1797ff997b8528227641435815d1db4ce499def2b8e850f43f96
MD5 5bd327080f08b245353a6e131bb95131
BLAKE2b-256 aa10f85ac35e193870175152a771a01c4a636885eb86fc09d9dbfa3e3258b87e

See more details on using hashes here.

File details

Details for the file mkfix-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: mkfix-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 66.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.7

File hashes

Hashes for mkfix-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 29ef830a5624d60b208aaad01e1c527b7a2ebf8d136e87112717ed9145e0d4f8
MD5 9ab5fb158374f6b8c7ee50a783675e3e
BLAKE2b-256 ba73141d9b9425b2113cf051198c2e8ceb7d557e03327ed4725aad64ca0cdfa5

See more details on using hashes here.

Release history Release notifications | RSS feed

0.23.0

2 files

0.22.0

2 files

0.21.0

2 files

0.20.0

2 files

0.19.0

2 files

0.18.0

2 files

0.17.0

2 files

0.16.0

2 files

0.15.0

2 files

0.14.0

2 files

0.13.0

2 files

0.12.0

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

This release

0.7.0 This release

2 files

0.6.2

2 files

0.5.0

2 files

0.3.1

2 files

0.3.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page