Request For Quote (RFQ)
Creating and Finalizing a Request for Quote (RFQ)
This section outlines the typical workflow for creating and finalizing a Request for Quote (RFQ) using Checker's Orchestration Platform API.
The steps include creating an RFQ, responding with quotes, and finalizing the RFQ.
This process involves both our client and the Liquidity Providers (LPs).
Step 1: Client Creates an RFQ
To create an RFQ, the client sends a POST request to the /api/v1/request-for-quotes endpoint with the following fields:
Request Body Example
{
"instrumentPair": "BTC-USD",
"quantity": 2.0,
"side": "BUY",
"providers": [
"LP1",
"LP2"
]
}Field Descriptions
- instrumentPair: The trading pair for the RFQ (e.g., "BTC-USD").
- quantity: The quantity requested for the given instrument pair.
- side: The side of the request (either "BUY" or "SELL").
- providers: A list of liquidity providers to whom the RFQ is sent.
Step 2: Liquidity Providers Respond with Quotes
Once the RFQ is created, LPs are notified outside of this workflow. LPs then respond to the RFQ by sending a POST request to the /api/v1/quotes endpoint with their quotes.
Request Body Example
{
"requestForQuoteId": "12345",
"price": 50000.00,
"instrumentPair": "BTC-USD",
"benchmarkName": "BTC Benchmark",
"quantity": 2.0,
"expiry": "2024-06-30T23:59:59Z"
}Field Descriptions
- requestForQuoteId: The ID of the RFQ.
- price: The quoted price for the given instrument pair.
- instrumentPair: The trading pair for the quote.
- benchmarkName: The name of the benchmark used for the quote.
- quantity: The quantity for the given instrument pair.
- expiry: The expiry date and time of the quote.
Step 3: Client Monitors the RFQ
The client monitors the status of the RFQ and the quotes received by sending a GET request to the /api/v1/request-for-quotes/{requestForQuoteId} endpoint.
Response Example
{
"requestForQuoteId": "12345",
"instrumentPair": "BTC-USD",
"quantity": 2.0,
"side": "BUY",
"status": "OPEN",
"providers": [
"LP1",
"LP2"
],
"quotes": [
{
"quoteId": "quote123",
"requestForQuoteId": "12345",
"price": 50000.00,
"instrumentPair": "BTC-USD",
"benchmarkName": "BTC Benchmark",
"quantity": 2.0,
"expiry": "2024-06-30T23:59:59Z",
"provider": "LP1",
"status": "PENDING"
},
{
"quoteId": "quote124",
"requestForQuoteId": "12345",
"price": 50500.00,
"instrumentPair": "BTC-USD",
"benchmarkName": "BTC Benchmark",
"quantity": 2.0,
"expiry": "2024-06-30T23:59:59Z",
"provider": "LP2",
"status": "PENDING"
}]
}Step 4: Client Finalizes a Quote
The client selects a quote by sending a POST request to the /api/v1/request-for-quotes/{requestForQuoteId}/finalize endpoint with the ID of the winning quote.
Request Body Example
{ "winningQuoteId": "quote123" } Step 5: Liquidity Providers Check Quote Status
LPs can check if their quote has been accepted by sending a GET request to the /api/v1/quotes/{quoteId} endpoint.
Response Example
{
"quoteId": "quote123",
"requestForQuoteId": "12345",
"price": 50000.00,
"instrumentPair": "BTC-USD",
"benchmarkName": "BTC Benchmark",
"quantity": 2.0,
"expiry": "2024-06-30T23:59:59Z",
"provider": "LP1",
"status": "ACCEPTED"
}This workflow ensures the client can create an RFQ, receive and monitor quotes from LPs, and finalize the RFQ by selecting the best quote. It also allows LPs to track the status of their quotes throughout the process.
Updated 4 months ago
