> ## Documentation Index
> Fetch the complete documentation index at: https://docs.probalytics.io/llms.txt
> Use this file to discover all available pages before exploring further.

# RFQs

> Kalshi request-for-quote events: shape, coverage, and normalization rules

<Info>
  RFQs are an **early access** dataset and are not included in standard plans. To request access, email [support@probalytics.io](mailto:support@probalytics.io).
</Info>

## Shape

`rfqs` has one row per request-for-quote lifecycle event. An RFQ is a request by a Kalshi user for quotes on a market, usually a [combo market](/docs/datasets/markets#kalshi-combo-markets). Each RFQ produces a `CREATED` row and, once it is withdrawn or expires, a `DELETED` row with the same `id`.

| Field | Type | Values and meaning |
| - | - | - |
| `id` | `UUID` | Stable Probalytics RFQ ID, generated deterministically from the Kalshi RFQ ID. Shared by the `CREATED` and `DELETED` rows. |
| `platform` | `enum` | `KALSHI`. |
| `platform_id` | `string` | Kalshi RFQ ID. |
| `event_type` | `enum` | `CREATED` — RFQ opened<br />`DELETED` — RFQ removed |
| `market_id` | `UUID` | Requested market. Joins to `markets.id`. |
| `market_platform_id` | `string` | Requested market's Kalshi ticker. |
| `creator_id` | `string` | Kalshi's identifier for the requesting user. |
| `contracts` | `decimal \| null` | Requested number of contracts, when the request is sized in contracts. |
| `target_cost` | `decimal \| null` | Requested cost in USD, when the request is sized in dollars. |
| `timestamp` | `datetime` | Source time in UTC: creation time for `CREATED`, deletion time for `DELETED`. |
| `indexed_at` | `datetime` | Time Probalytics wrote this row. |

## Coverage

| Venue | Product | Rows | Coverage starts |
| - | - | -: | - |
| Kalshi | RFQs | 1,100,200,509 | 2026-10-14 |

<sub>Count as of 2026-10-18. Each RFQ contributes one `CREATED` row and, once removed, one `DELETED` row, so the row count is roughly twice the number of RFQs.</sub>

RFQs are captured live from Kalshi's communications WebSocket channel. Kalshi does not provide RFQ history, so there is no data before capture started, and RFQs created during a capture outage are not backfilled.

Only RFQ creation and deletion are recorded. Quotes submitted in response to an RFQ are not included; executed trades appear in [fills](/docs/datasets/fills).

## Normalization

| Kalshi source | Probalytics field |
| - | - |
| `id` | `platform_id`; also the input for `id` |
| `market_ticker` | `market_platform_id`; also the input for `market_id` |
| `creator_id` | `creator_id` |
| `contracts_fp` | `contracts` |
| `target_cost_dollars` | `target_cost` |
| `created_ts` | `timestamp` on `CREATED` rows |
| `deleted_ts` | `timestamp` on `DELETED` rows |

Empty size fields become `null`. Events without the timestamp for their event type are dropped.

## Querying RFQs

Pair each RFQ with its deletion to measure how long it stayed open:

```sql theme={null}
SELECT
    id,
    any(market_platform_id) AS market,
    minIf(timestamp, event_type = 'CREATED') AS created,
    minIf(timestamp, event_type = 'DELETED') AS deleted,
    dateDiff('second', created, deleted) AS open_seconds
FROM rfqs FINAL
WHERE timestamp >= now() - INTERVAL 1 DAY
GROUP BY id
HAVING countIf(event_type = 'CREATED') > 0
   AND countIf(event_type = 'DELETED') > 0
LIMIT 100;
```

Join `market_id` to `markets.id` to read the requested combo and its `legs`. An RFQ can reference a market that has not been indexed yet, so use a `LEFT JOIN` when completeness matters.

See [Tables & Schemas](/docs/sql-guide/tables#rfqs) for the ClickHouse column types.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.