Overview
User Stories
Let’s divide the product in three modules
We’ve two major personas using the platform
Admin (all internal teams) Note: Below user stories are put considering only spot transactions
Pre-Trade
Trade Inquiry
Client is able to
inquire about the quotes on telegram, web interface etc. [optional] run pre-trade risk assessments: volatility, price slippage etc. see the expired quote in case market conditions change quickly provide feedback in case quote seems too high Admin is able to
fetch quotes from MM for instant fills (time window, volatility risks included) with symbol, size, side, time window etc. share the quote with the client (preferably automatic) able to set dynamic spreads basis volatility able to see deviation from major exchanges in terms of price impact - it can be a function of liquidity across major exchanges define pre-trade risks: max trade size per client, high-volatile duration, max price slippage receive alert on client liveness as soon as client is live on interface - to suggest alternate execution method kill the quotes presented to the client in case market conditions change too quickly Inner Workings
Client chooses between Instant Fill and Advanced Execution (TWAP, VWAP, Iceberg Orders) Client needs quote for the trade (instant fill) Client tells Asset, Order Size, Side, Instant Fill (Yes or No) Basis this, Admin requests for quote from Quant Desk using QD’s APIs after entering all the required values with quote ID | REST API QD acknowledges the quote | REST API response Quant desk shares the quote with expiry time with quote ID as above | WebSocket Message to CoinDCX Quote gets shared with the client with quote ID automatically over telegram (TG Bot) or web interface | CoinDCX stores the quote response in the Database and shares the quote with Client on Websocket Client accepts/rejects the quote [additionally can provide feedback - too high, too less expiry time etc.] | Client hits the API with Quote ID Market Data: We can continue to stream combined order book data - (sum of) quantity and prices - QD can stream this data KYC [We’ll do Offline]
Admin is able to
Mark Client as verified | Access control on all Pre-Trade, Trade, Post-Trade APIs until KYC is true In-Trade
Pricing
Admin is able to
fetch quotes from MM for instant fills (time window, volatility risks included) with symbol, size, side, time window etc. add spread (margin risk) to it share the quote with the client (preferably automatic) Client is able to
receive quote on web interface, telegram etc. express the interest on the pricing Inner Workings
Risks include: Settlement Risk, Slippage Risk (time window) For the sake of simplicity: We don’t model settlement risk at the beginning and carry slippage risk Slippage risk is covered by QD in the quote - hence we don’t add spread to the quotes Before sending the quote with client | CoinDCX adds the spread % on top of quote in WS API response to the client Trade Execution
Admin is able to
run advanced execution for the client place TWAP order with symbol, size, side, duration, aggression etc. place VWAP order with symbol, size, side, duration, aggression etc. place Iceberg order with symbol, total size, visible portion size etc. define maximum slippage impact, limit price and other additional parameters in the order entry Inner Workings
client/admin requests any of TWAP, VWAP, POV execution algorithms client quotes below parameters | REST API with request params percentage participation - % maximum slippage impact - if any CD stores the request params with order Id and hit the QD’s REST API for advanced execution with order Id Order and Trades Updates
Admin is able to
monitor the progress of the orders on the dashboard: Fill Percentage, progress, status etc. kill/pause the order with remarks Client is able to
monitor the progress of the orders on the web interface: Fill Percentage, progress, status etc. kill/pause the order with remarks receive notifications on web interface, chat and email regarding order-trade updates view failed order (in case it happens)and notify admin Inner Workings
CD receives the Order ID trade fills over Websocket Response from QD trade# e.g. 1/n, 2/n .. 12/12 CD saves all the trade fills in the database CD sends the trade fills for Order ID with trades IDs to client over Websocket Response WS comms can be received either on web interface or telegram Post-Trade
Orders and Trades History
Admin is able to
track all quotes, orders, trades history within admin interface for each client