Open source software platform for trading venues

Overview

Parity

Parity is an open source software platform for trading venues. It can be used to run a financial marketplace, develop algorithmic trading agents, or research market microstructure.

Parity requires Java Runtime Environment (JRE) 8 or newer.

Download

See the latest release on GitHub.

Modules

Parity contains the following applications:

  • Parity Trading System is a server application for running a financial exchange.

  • Parity FIX Gateway is a server application that adds Financial Information Exchange (FIX) support to the trading system.

  • Parity Terminal Client is a simple console application for entering orders into the trading system.

  • Parity Stock Ticker is a simple console application that displays the best prices and latest trades in the trading system.

  • Parity Trade Reporter is a simple console application that displays all occurred trades in the trading system.

See the Wiki for additional applications.

Parity contains the following libraries:

Parity contains the following test applications:

Build

Build Parity with Maven:

mvn package

Links

For more information on Parity:

License

Copyright 2014 Parity authors.

Released under the Apache License, Version 2.0. See LICENSE.txt for details.

Comments
  • Matching engine performance tests using JMH

    Matching engine performance tests using JMH

    This adds microbenchmarks for the matching engine using JMH.

    To run it, type:

    mvn install

    and then:

    java -jar parity-perf-test/target/microbenchmarks.jar

    Signed-off-by: Pekka Enberg [email protected]

    opened by penberg 11
  • Foreign exchange instruments

    Foreign exchange instruments

    The data type for prices in PMD, PMR and POE is a 32-bit unsigned integer with a six-digit integral part and a four-digit fractional part. This accuracy is not enough for foreign exchange instruments, including Bitcoin-related instruments.

    To accommodate foreign exchange instruments, the number of digits in the fractional part should be made configurable. Furthermore, the data type for prices could be changed to a 64-bit unsigned integer.

    enhancement 
    opened by jvirtanen 8
  • Network protocols

    Network protocols

    An exchange needs an order entry protocol and a market data protocol. Most marketplaces have proprietary binary protocols.

    Following the example, we could have an order entry protocol that is simplified from NASDAQ OUCH and a market data protocol that is simplified from NASDAQ ITCH. Furthermore, we could use SoupBinTCP as a transport for the order entry protocol and MoldUDP64 as a transport for the market data protocol.

    enhancement 
    opened by jvirtanen 7
  • Incorrect price in Marketreporter.java        orderEntered.price       = price;

    Incorrect price in Marketreporter.java orderEntered.price = price;

    MarketReporter.java in orderEntered method is showing incorrect price in orderEntered.price = price;

    For a price of 100, its printing 10000 with 2 leading Zero

    However ticket is showing the correct price

    Does it require some unpack?

      System.out.println(ASCII.unpackLong(side) +  " Order: " + orderNumber + 
        		" Entered by: " + ASCII.unpackLong(username) + 
        		" for symbol " + ASCII.unpackLong(instrument) +
        		" at Price " + price + " for Quantity " + quantity);
    
    opened by anujnetwork 5
  • Package Parity programs as executables

    Package Parity programs as executables

    Use the following plugin to package Parity programs as executables:

    https://github.com/brianm/really-executable-jars-maven-plugin

    You can now, for example, start Parity System with:

    ./target/parity-system etc/devel.conf

    opened by penberg 4
  • Logging

    Logging

    Both Parity Trading System and Parity FIX Gateway should implement logging to help with setting up and debugging. The bare minimum would be to log the configuration at the startup.

    enhancement 
    opened by jvirtanen 4
  • Recorded market data replay

    Recorded market data replay

    Would be great to be able to replay recorded market data with particular speedup factor i.e. X1 - realtime, X5 - time time faster vs realtime, etc.

    Market data should interact with user orders in a correct way. The tricky part is - for example replayed order for 200shs was executed against user order partially and 100shs remaining. Then market data can show that this order was increased to 300shs but in reality we may want to assume that order would have a size of 200shs (100shs consumed by user).

    enhancement 
    opened by ghost 4
  • How to close any connection with system and client

    How to close any connection with system and client

    **What we have *** We have successfully able to connection between client and system. Below is the code from TerminalClient.java(Parity-client)

    TerminalClient.open(new InetSocketAddress(orderEntryAddress, orderEntryPort),
                    orderEntryUsername, orderEntryPassword, instruments).run();
    
    
    
    

    How can we close this connection?

    Thanks

    opened by ghost 3
  • canceledQuantity of event Cancel wrong

    canceledQuantity of event Cancel wrong

    Bug is find in function cancel in class OrderBook:

    public void cancel(long orderId, long size) {
            Order order = orders.get(orderId);
            if (order == null)
                return;
    
            long remainingQuantity = order.getRemainingQuantity();
    
            if (size >= remainingQuantity)
                return;
    
            if (size > 0) {
                order.resize(size);
            } else {
                delete(order);
    
                orders.remove(orderId);
            }
    
            listener.cancel(orderId, remainingQuantity - size, size);
        }
    

    Because remainingQuantity in Order get from Long2ObjectOpenHashMap<Order> orders difference with Order get from Long2ObjectRBTreeMap<PriceLevel> bids or Long2ObjectRBTreeMap<PriceLevel> asks. Then, value return canceledQuantity = remainingQuantity - size is wrong.

    opened by congnghia0609 3
  • Broken Pipe Exception on Parity Client

    Broken Pipe Exception on Parity Client

    I have a web application deployed on Tomcat 8.5.29. The web application communicates with the Parity system, running on the same machine using Parity Client. This works perfectly fine on a local setup but fails on the cloud. I am getting a Broken Pipe Exception from the Parity Client.

    sending data to parity server
    Uhh ohh!!.. something went wrong !!
     after removing the bad connection--- null
    java.io.IOException: Broken pipe
    	at sun.nio.ch.FileDispatcherImpl.writev0(Native Method)
    	at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51)
    	at sun.nio.ch.IOUtil.write(IOUtil.java:148)
    	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:504)
    	at java.nio.channels.SocketChannel.write(SocketChannel.java:502)
    	at com.paritytrading.nassau.soupbintcp.SoupBinTCPSession.send(SoupBinTCPSession.java:196)
    	at com.paritytrading.nassau.soupbintcp.SoupBinTCPClient.send(SoupBinTCPClient.java:118)
    	at com.paritytrading.parity.pojo.ColodaxOrderEntry.send(ColodaxOrderEntry.java:180)
    	at com.paritytrading.parity.client.command.WebEnterCommand.execute(WebEnterCommand.java:57)
    	at com.paritytrading.parity.client.command.WebEnterCommand.execute(WebEnterCommand.java:38)
    

    Is there any configuration that I am missing?

    Thanks for help in advance.

    opened by SachinSPawar 3
  • Fix pending cancel status handling in FIX gateway

    Fix pending cancel status handling in FIX gateway

    If the FIX gateway receives an Order Executed message indicating that an order has been executed fully while awaiting for an Order Canceled message indicating that the order has been canceled in part or fully, it must generate an Order Cancel Reject message with an CxlRejReason(102) value of 0 (Too late to cancel). Implement this.

    opened by jvirtanen 3
Releases(0.7.0)
  • 0.7.0(Aug 23, 2017)

    Release Notes

    • Improve Parity Matching Engine performance
    • Check quantity on order entry in Parity Trading System
    • Use direct byte buffer
    • Check price on order entry in Parity Trading System
    • Upgrade to fastutil 8.1.0
    • Remove market order support from Parity Matching Engine
    • Remove Broken Trade message from POE protocol
    • Remove Broken Trade message from PMD protocol
    • Make price and size configurable per instrument in Parity File Formats
    • Remove Seconds message from PMD protocol
    • Remove Order Deleted message from PMD protocol
    • Add Version message to PMR protocol
    • Rename Order message to Order Entered message in PMR protocol
    • Add Order Added message to PMR protocol
    • Rename Cancel message to Order Canceled message in PMR protocol
    • Clean up Trade message in PMR protocol
    • Update price and quantity to 64 bits in POE protocol
    • Update price and quantity to 64 bits in PMD protocol
    • Update price and quantity to 64 bits in PMR protocol
    • Update price and quantity representation in POE protocol
    • Update price and quantity representation in PMD protocol
    • Update price and quantity representation in PMR protocol
    • Handle market data before order entry in Parity Trading System
    • Make price and size format configurable in Parity Terminal Client
    • Make price and size format configurable in Parity FIX Gateway
    • Make price and size format configurable in Parity Trade Reporter
    • Make price and size format configurable in Parity Stock Ticker
    • Replace FOO with AAPL in example configuration files
    • Replace BAR with ETH-BTC in example configuration files
    • Replace BAZ with EUR-USD in example configuration files
    • Improve FIX gateway performance
    • Update POE protocol to version 2
    • Update PMD protocol to version 2
    • Update PMR protocol to version 2

    Maven

    The following artifacts are available in the Central Repository:

    Name | Artifact ID | Version -------------------------|----------------|-------- Parity Order Book | parity-book | 0.7.0 Parity File Formats | parity-file | 0.7.0 Parity Matching Engine | parity-match | 0.7.0 Parity Network Protocols | parity-net | 0.7.0 Parity Utilities | parity-util | 0.7.0

    The Group ID for all artifacts is com.paritytrading.parity.

    Source code(tar.gz)
    Source code(zip)
    parity-0.7.0.zip(43.84 MB)
  • 0.6.0(Jan 20, 2017)

    Release Notes

    • Make FIX acceptor address configurable in Parity FIX Gateway
    • Make order entry server address configurable in Parity Trading System
    • Provide two example configuration files for Parity Trade Reporter
    • Remove Parity Top of Book
    • Add Parity Order Book
    • Update example configuration files
    • Improve Parity Matching engine performance
    • Add configuration for TAQ file format in Parity File Formats
    • Simplify Parity Stock Ticker usage
    • Fix pending cancel status in Parity FIX Gateway
    • Make market data request server address configurable in Parity Trading System
    • Make market reporting request server address configurable in Parity Trading System
    • Remove Nassau dependency from Parity Utilities
    • Remove Config dependency from Parity Utilities
    • Improve Parity Network Protocols performance
    • Improve Parity FIX Gateway performance
    • Improve Parity Trading System performance
    • Upgrade to fastutil 7.0.13
    • Improve project structure
    • Improve documentation
    • Add portfolio script for Parity Trade Reporter
    • Upgrade to Nassau 0.13.0

    Maven

    The following artifacts are available in the Central Repository:

    | Name | Group ID | Artifact ID | Version | | --- | --- | --- | --- | | Parity Order Book | com.paritytrading.parity | parity-book | 0.6.0 | | Parity File Formats | com.paritytrading.parity | parity-file | 0.6.0 | | Parity Matching Engine | com.paritytrading.parity | parity-match | 0.6.0 | | Parity Network Protocols | com.paritytrading.parity | parity-net | 0.6.0 | | Parity Utilities | com.paritytrading.parity | parity-util | 0.6.0 |

    Source code(tar.gz)
    Source code(zip)
    parity-0.6.0.zip(41.41 MB)
  • 0.5.0(Dec 8, 2016)

    Release Notes

    • Upgrade to Philadelphia 0.4.0
    • Fix order cancellation in Parity FIX Gateway
    • Improve Parity Top of Book performance
    • Rename order accessor in Parity Top of Book
    • Provide two example configuration files for Parity Stock Ticker
    • Add BinaryFILE reader
    • Add BinaryFILE support to Parity Stock Ticker
    • Clean up Parity Matching Engine Performance Test
    • Add Parity Top of Book Performance Test
    • Upgrade to Foundation 0.2.0

    Maven

    The following artifacts are available in the Central Repository:

    | Name | Group ID | Artifact ID | Version | | --- | --- | --- | --- | | Parity File Formats | com.paritytrading.parity | parity-file | 0.5.0 | | Parity Matching Engine | com.paritytrading.parity | parity-match | 0.5.0 | | Parity Network Protocols | com.paritytrading.parity | parity-net | 0.5.0 | | Parity Top of Book | com.paritytrading.parity | parity-top | 0.5.0 | | Parity Utilities | com.paritytrading.parity | parity-util | 0.5.0 |

    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Dec 8, 2016)

    • Add FIX protocol
    • Add Parity FIX Gateway
    • Fix PMD reference implementation
    • Fix order cancellation in Parity Trading System
    • Upgrade to Nassau 0.9.0
    • Add support for order modification to Parity Top of Book
    • Move to com.paritytrading namespace
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Dec 8, 2016)

    • Improve network protocol performance
    • Upgrade to Nassau 0.6.0
    • Improve MoldUDP64 client interface
    • Fix PMR reference implementation
    • Add cancel message to PMR protocol
    • Add SoupBinTCP client
    • Add SoupBinTCP support to Parity Stock Ticker
    • Add SoupBinTCP support to Parity Trade Reporter
    • Improve market data configuration in Parity Trading System
    • Improve market reporting configuration in Parity Trading System
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Dec 8, 2016)

    • Upgrade to Java 8
    • Add PMR protocol
    • Add support for login to Parity Terminal Client
    • Add Parity Trade Reporter
    • Add support for execution with price to Parity Top of Book
    • Add support for accessing orders to Parity Top of Book
    • Add TAQ file format
    • Add support for TAQ file format to Parity Stock Ticker
    • Add support for setting multicast interface by name to Parity Stock Ticker
    • Add support for running multiple instances of Parity Stock Ticker on one host
    • Improve API documentation for Parity Matching Engine
    • Improve API documentation for Parity Network Protocols
    • Improve API documentation for Parity Top Of Book
    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Dec 8, 2016)

Owner
Parity
Open source trading infrastructure
Parity
Java-Trading-Log-Project - A Trading Log to Journal Your Trades.

Abhi's Project - Trading Log Trading Background I am very passionate about trading. I have been studying the financial markets for a few years and hav

Abhigyan Dabla 0 Jul 18, 2022
BitBase is a Client-Server based Crypto trading platform which offers live pricing, dynamic charts, user portfolio, account settings... and much more!

BitBase-Crypto-Trading-Platform BitBase is a Client-Server based Crypto trading platform which offers live pricing, dynamic charts, user portfolio, ac

null 4 Feb 11, 2022
An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or to turn an existing project into a devops project using open source software (Git, Docker, Jenkins..)

DevOpsify Description An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or t

obaydah bouifadene 14 Nov 8, 2022
Create your Java crypto trading bot in minutes. Our Spring boot starter takes care of exchange connections, accounts, orders, trades, and positions so you can focus on building your strategies.

Quick Start | Documentation | Discord | Twitter Create and run your java crypto trading bot in minutes Our Spring boot starter takes care of exchange

Cassandre 442 Jan 3, 2023
Java & Spring based cryptocurrency trading robot (RPA) that uses the public Binance API

Santini Santini is a Java & Spring based cryptocurrency trading bot that uses the public Binance API. It is run by providing it with API keys generate

Tongjian Cui 22 Apr 19, 2022
Java & Spring based cryptocurrency trading robot (RPA) that uses the public Binance API

Santini is a Java & Spring based cryptocurrency trading bot that uses the public Binance API. It is run by providing it with API keys generated at binance.com (Also provide Santini with Twitter API keys if tweet alerts are desired).

Adam·Michael 22 Apr 19, 2022
Apache Lucene and Solr open-source search software

Apache Lucene and Solr have separate repositories now! Solr has become a top-level Apache project and main line development for Lucene and Solr is hap

The Apache Software Foundation 4.3k Jan 7, 2023
GeoServer is an open source software server written in Java that allows users to share and edit geospatial data

GeoServer is an open source software server written in Java that allows users to share and edit geospatial data. Designed for interoperability, it publishes data from any major spatial data source using open standards.

GeoServer 3k Jan 1, 2023
This is an open source visualization for the C4 model for visualising software architecture.

c4viz: C4 Visualization This is an open source visualization for the C4 model for visualising software architecture. It expects input in the form of a

Peter Valdemar Mørch 40 Dec 6, 2022
Student Result Management System - This is a CLI based software where the Software is capable of maintaining and generating Student's Result at the end of a semester after the teacher's have provided the respective marks.

Student Result Management System This is a CLI based software where the Software is capable of maintaining and generating Student's Result at the end

Abir Bhattacharya 3 Aug 27, 2022
Infinispan is an open source data grid platform and highly scalable NoSQL cloud data store.

The Infinispan project Infinispan is an open source (under the Apache License, v2.0) data grid platform. For more information on Infinispan, including

Infinispan 1k Dec 31, 2022
Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

Tink A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse. Ubuntu

Google 12.9k Jan 3, 2023
Payara Server is an open source middleware platform that supports reliable and secure deployments of Java EE (Jakarta EE) and MicroProfile applications in any environment: on premise, in the cloud or hybrid.

Payara Platform Community Edition Create. Innovate. Elevate. Payara Platform Community Edition features open source server runtimes for development pr

Payara Foundation 847 Dec 27, 2022
SAMOA (Scalable Advanced Massive Online Analysis) is an open-source platform for mining big data streams.

SAMOA: Scalable Advanced Massive Online Analysis. This repository is discontinued. The development of SAMOA has moved over to the Apache Software Foun

Yahoo Archive 424 Dec 28, 2022
open-source electronics platform

Arduino is an open-source physical computing platform based on a simple I/O board and a development environment that implements the Processing/Wiring

Arduino 13.3k Jan 4, 2023
A powerful open source test automation platform for Web Apps, Mobile Apps, and APIs

A powerful open source test automation platform for Web Apps, Mobile Apps, and APIs. Build stable and reliable end-to-end tests @ DevOps speed.

Testsigma Technologies Inc 466 Dec 31, 2022
Jenkins plugin exposes functionalities for the Popcorn by Lectra open-source Jenkins platform on Kubernetes

Popcorn Jenkins Plugin This Jenkins plugin exposes functionalities for the Popcorn by Lectra open-source Jenkins platform on Kubernetes. This plugin i

Lectra 4 Apr 6, 2022
Jacksum (JAva ChecKSUM) is a free, open source, cross-platform, feature-rich, multi-threaded command line tool for calculating hash values, verifying data integrity, finding files by their fingerprints, and finding algorithms to a hash value.

Jacksum (JAva ChecKSUM) is a free, open source, cross-platform, feature-rich, multi-threaded command line tool for calculating hash values, verifying data integrity, finding files by their fingerprints, and finding algorithms to a hash value.

Johann N. Löfflmann 17 Dec 26, 2022