Jane Street / JCX Trade Connector
Features
fix-jcxConnector KeyNotes
Message Recovery
JCX does not resend lost messages after a sequence reset.
JCX does not support sequence number reset mid-session.
ResetSeqNum(141)=Y in a Logon message is not supported.
Connectivity
JCX requires secure connection with client-side certificate validation. Self-signed certificates are allowed.
Configuration steps:
-
Generate self-signed certificate:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodesNote: Provide JCX with
cert.pem. -
Merge
key.pemandcert.pemfiles to onejcx.pemcat key.pem cert.pem > jcx.pem -
Extract server side certificate
openssl s_client -showcerts -connect 162-254-96-31.jcx.janestreet.com:23450 < /dev/null | openssl x509 -outform PEM > 162-254-96-31.jcx.janestreet.com.pem -
Configure JCX section in
stunnel.conf[JCX]client = yesaccept = 33450connect = 162-254-96-31.jcx.janestreet.com:23450CAfile = 162-254-96-31.jcx.janestreet.com.pemcert = jcx.pemkey = jcx.pemverify = 0
Symbology
JCX UAT supports the following symbols:
| Cryptocurrency common name | Jane Street Identifier | Maximum quantity precision |
|---|---|---|
| Bitcoin | XBT | 8 decimal places |
| Bitcoin Cash | BCH | 8 decimal places |
| Bitcoin SV | BSV | 8 decimal places |
| Litecoin | LTC | 8 decimal places |
| Ethereum | ETH | 6 decimal places |
| Ethereum Classic | ETC | 6 decimal places |
| Dogecoin | DOGE | 0 decimal places |
The symbols available in the JCX production environment should be discussed as part of the settlement agreement.
Schedule
The UAT session runs from 01:45 to 17:00 New York time and is reset before the next session begins.
The Production system is currently available from 00:04 to 23:57, 7 days a week.
Configuration
Connector settings
| Parameter | Default Value | Description |
|---|---|---|
targetSubId | TargetSubID(57) |
Config sample
connectors {
JCX : ${template.connector.fix.jcx} {
settings : {
host = "<HOST>"
port = <PORT>
senderCompId = "<SENDER_COMP_ID>"
targetCompId = "<TARGET_COMP_ID>"
targetSubId = "<TARGET_SUB_ID>"
}
}
}