Skip to main content

Library to interact with FIX servers

Project description

# slowbreak

Library to connect to FIX servers. We use this to connect to ROFEX and BYMA markets in Argentina, and it should work on any FIX 5.1-sp2 servers. It works with python 2.7 and python 3.5+ (tested with python 3.6)

See the slowbreak/test directory for examples on how to use it.

Developed by Aureliano Calvo for Eco Valores S.A.

Distributed under MIT license (see LICENSE file for details)

## Why is this named as slowbreak?

Less is named after more. We choosen this name as a reference to QuickFix, as we intend to fix several shortcomings we found when trying to use it in python.

## Guiding principles

### Pure python

We will try to keep as pure-python as possible with this library. In the case we find we need to have a non-pure python implementation for performance reasons, we will provide both the python implementation and the native one.

### FIX messages are lists of (number, value) pairs

FIX messages are just a list of pairs (number, value). The value is just a string. In this library we do not attempt to:

  1. Give names to tag numbers.

  2. Know the actual type of a field.

Why? Because they vary between implementations. We try to find the waist of the protocol. We believe that all the implementations treat messages as a list of pairs. This allows us to have really generic code in a lot of parts and avoid the XML fiasco that happens when you need a small change of types or names in QuickFix.

### Certificate authorities are insecure

While we support connecting via SSL to servers, we intentionally not use the PKI infrastructure. Why? Because when you trust 100 CAs if anyone of those betrays you then you are screwed. And algorithmic trading handles tons of cash. So there is a lot of incentive to do unproper things. Instead we propose to use the hash of the server certificate as a way to identify it, using a mechanism similar to the one used in ssh.

### All messages are equivalent

We do no distinction between administrative messages and application messages. Any application may handle any message. This allows us to have the session handling as just another FIX application.

### FIX applications are stacked like network protocols

This gives us the posibility to have different aspects of the algorithmic trading separated. We have the SessionApp, which is usually the base of the stack in production, that handles sequence numbers, logons, heartbeats, etc. On top of that you may implement something that controls that the orders you put in the market are not too big, also as an FixApplication. And on top of that you can implement the logic of your trading strategy.

### We do not tell you how to trade

As we develop the library, we will be adding more functionallity. For instance, we intend to provide:

  1. Utilities to write your own FIX servers

  2. Applications to limit the position of your algorithm

  3. Applications to limit the rate of messages sent to the server

What we will not provide is production-ready strategies for algorithmic trading.

### Testing is important

That’s why we provide from the start the ability to unit test your strategies, without connecting to any market.

Project details


Download files

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

Source Distribution

slowbreak-0.0.2.tar.gz (28.9 kB view details)

Uploaded Source

Built Distributions

slowbreak-0.0.2-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

slowbreak-0.0.2-py2-none-any.whl (32.4 kB view details)

Uploaded Python 2

File details

Details for the file slowbreak-0.0.2.tar.gz.

File metadata

  • Download URL: slowbreak-0.0.2.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.27.0 CPython/3.6.6

File hashes

Hashes for slowbreak-0.0.2.tar.gz
Algorithm Hash digest
SHA256 42a1a42321d92acc29ccbeeebf1786a18a64e7f0d5b2f8d2b45cd1fb83c3fd9f
MD5 c0283877a30fc3aa465a27453a5f4594
BLAKE2b-256 dd3ecc462998a3c49dc1494b6c4059f74da544c5c48b8cf955f124df95bed928

See more details on using hashes here.

File details

Details for the file slowbreak-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: slowbreak-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 32.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.27.0 CPython/3.6.6

File hashes

Hashes for slowbreak-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8ee183f3ee2aeaa2c70021351d67d662dd3babf6778aa9da5800101e2e3499da
MD5 afba77a31a9ccb88da8412d14f598243
BLAKE2b-256 b1707f15d5ece0bffcc59c4f58bde9ef519860b5d5ec3671223662a21d6af8c1

See more details on using hashes here.

File details

Details for the file slowbreak-0.0.2-py2-none-any.whl.

File metadata

  • Download URL: slowbreak-0.0.2-py2-none-any.whl
  • Upload date:
  • Size: 32.4 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.27.0 CPython/3.6.6

File hashes

Hashes for slowbreak-0.0.2-py2-none-any.whl
Algorithm Hash digest
SHA256 cb594e6834aa3a8d7725edb3df7f393b97ce3471e1cb6e12bfb30cd2deb595d8
MD5 f6497dc2ee4e4d95cd952ec11baf60c8
BLAKE2b-256 9c1806f31e9d191ba1a0c9e0cc01ee0e84c909616c16e5a8ba81b7b99c124268

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page