Simple Python connector for both RIT APIs:
- Client REST API (local, API key)
- DMA REST API (remote, basic auth)
pip install -e .import RIT_python_connector as rit
rit.connect(un="me", ps="123", case="Liquidity Risk Case")
book = rit.get_book("GTX", format="list")
print(book[:3])You can use multiple argument names for connect, for example:
- username:
username,user,u,un,trader,trader_id - password:
password,pass,pw,ps,passwd - mode:
local/clientordma/server
import RIT_python_connector as rit
rit.connect(
mode="local",
api_key="YOUR_API_KEY",
base_url="http://localhost:9999", # default
)import RIT_python_connector as rit
rit.connect(
mode="dma",
username="trader123",
password="secret",
case="Liquidity Risk Case", # auto-resolves practice DMA port
)The connector can auto-map known practice cases to DMA ports, including:
- Liquidity Risk Case ->
16510 - Volatility Trading Case ->
16530 - Merger Arbitrage Case ->
16550 - Algorithmic Market Making Case (server 1/2/3) ->
16565/16575/16585
You can still pass base_url= explicitly when needed.
RIT_USERNAME="YOUR_USER" \
RIT_PASSWORD="YOUR_PASS" \
RIT_CASE="Liquidity Risk Case" \
python3.12 examples/simple_usage.pyOptional env vars for the example:
RIT_TICKER(default: first available ticker)RIT_POLL_INTERVAL(default:0.8)RIT_POLL_ITERATIONS(default:20)
Most getters accept format= and support:
"json"/"dict"/"raw""list"/"array""string"/"str"/"text"
Example:
rit.get_book("GTX", format="json")
rit.get_book("GTX", format="list")
rit.get_book("GTX", format="string")import RIT_python_connector as rit
rit.connect(un="me", ps="123", case="Liquidity Risk Case")
updates = rit.poll_order_book(
ticker="GTX",
every=0.2,
iterations=10,
format="json",
)
print(f"Got {len(updates)} book snapshots")import time
import RIT_python_connector as rit
@rit.on_order_book_update(ticker="GTX", every_n_updates=1, interval=0.1)
def on_gtx_book(book):
print("GTX book update", len(book.get("bid", [])), len(book.get("ask", [])))
@rit.on_news_update(every_n_updates=1, interval=0.5)
def on_news(news_items):
if news_items:
print("News update", news_items[-1]["headline"])
rit.connect(un="me", ps="123", case="Liquidity Risk Case")
rit.start_listeners() # optional, connect() starts listeners by default
time.sleep(5)
rit.stop_listeners()
rit.disconnect()Implemented wrappers for all endpoints in both client rest api.yaml and dma rest api.yaml:
/case,/trader,/limits,/news/assets,/assets/history/securities,/securities/book,/securities/history,/securities/tas/orders,/orders/{id}/tenders,/tenders/{id}/leases,/leases/{id}/commands/cancel
- This library uses async HTTP internally (via
httpx.AsyncClient) and runs it behind simple sync APIs. connect(...)can auto-discover defaults fromprivod-johnny/credswhen available.- For raw custom calls, use:
rit.request("GET", "/securities", params={"ticker": "GTX"})