Skip to content
Share
Explore

OTC Product Requirements

Overview
OTC Product Flow-Manual OTC.jpg
User Stories
Let’s divide the product in three modules
Pre-Trade
In-Trade
Post-Trade
We’ve two major personas using the platform
Admin (all internal teams)
Client
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
symbol
size
side
duration
completion - yes or no?
limit price
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
Params
orderId
tradeId
timestamp
symbol
side
original Qty
filled Qty
executed Price
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
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.