# FTX

FTX historical data for **all its instruments** is available since **2019-08-01** until **2022-11-13**.

{% embed url="<https://api.tardis.dev/v1/exchanges/ftx>" %}
See FTX historical data coverage: available symbols, channels, date ranges and incidents
{% endembed %}

### Downloadable **CSV** files

Historical CSV datasets for the first day of each month are **available to download without API key**. See [downloadable CSV files documentation](https://docs.tardis.dev/downloadable-csv-files/overview).

{% hint style="info" %}
Derivative ticker datasets are available since 2020-05-13 - date since we've started collecting that data via FTX REST API ([instrument channel](#captured-real-time-channels)).
{% endhint %}

| data type             | symbol   | date       |                                                                                                      |
| --------------------- | -------- | ---------- | ---------------------------------------------------------------------------------------------------- |
| incremental\_book\_L2 | BTC-PERP | 2020-01-01 | [Download sample](https://datasets.tardis.dev/v1/ftx/incremental_book_L2/2020/01/01/BTC-PERP.csv.gz) |
| trades                | BTC-PERP | 2020-01-01 | [Download sample](https://datasets.tardis.dev/v1/ftx/trades/2020/01/01/BTC-PERP.csv.gz)              |
| derivative\_ticker    | BTC-PERP | 2020-06-01 | [Download sample](https://datasets.tardis.dev/v1/ftx/derivative_ticker/2020/06/01/BTC-PERP.csv.gz)   |

### API Access and data format

Historical data format is the same as provided by real-time FTX WebSocket API with addition of local timestamps. If you'd like to work with **normalized data format** instead (same format for each exchange) see [downloadable CSV files](https://docs.tardis.dev/downloadable-csv-files/overview) or official [client libs](https://docs.tardis.dev/api/quickstart) that can perform data normalization client-side.

{% tabs %}
{% tab title="Python" %}

```python
# pip install tardis-dev
import asyncio
from tardis_dev import Channel, replay

async def main():
    async for local_timestamp, message in replay(
        exchange="ftx",
        from_date="2022-01-01",
        to_date="2022-01-02",
        filters=[Channel(name="orderbook", symbols=["BTC-PERP"])],
        api_key="YOUR_API_KEY",
    ):
        # messages as provided by FTX real-time stream
        print(message)

asyncio.run(main())
```

See [Python client docs](https://docs.tardis.dev/python-client/quickstart).
{% endtab %}

{% tab title="Node.js" %}

```javascript
// npm install tardis-dev
import { replay } from 'tardis-dev';

const messages = replay({
  exchange: 'ftx',
  from: '2022-01-01',
  to: '2022-01-02',
  filters: [{ channel: 'orderbook', symbols: ['BTC-PERP'] }],
  apiKey: 'YOUR_API_KEY'
});

// messages as provided by FTX real-time stream
for await (const { localTimestamp, message } of messages) {
  console.log(localTimestamp, message);
}
```

See [Node.js client docs](https://docs.tardis.dev/node-client/quickstart).
{% endtab %}

{% tab title="cURL & HTTP API" %}

```bash
curl --compressed -g 'https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01&filters=[{"channel":"orderbook","symbols":["BTC-PERP"]}]&offset=0'
```

{% embed url="<https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01&filters=[{%22channel%22:%22orderbook%22,%22symbols%22:[%22BTC-PERP%22]}]&offset=0>" %}
Example API response for FTX historical market data request
{% endembed %}

See [HTTP API docs](https://docs.tardis.dev/api/http-api-reference).
{% endtab %}

{% tab title="cURL & tardis-machine" %}

```bash
curl -g 'localhost:8000/replay?options={"exchange":"ftx","filters":[{"channel":"orderbook","symbols":["BTC-PERP"]}],"from":"2022-01-01","to":"2022-01-02"}'
```

[Tardis-machine](https://docs.tardis.dev/tardis-machine/quickstart) is a locally runnable server that exposes API allowing efficiently requesting historical market data for whole time periods in contrast to [HTTP API](https://docs.tardis.dev/api/http-api-reference) that provides data only in minute by minute slices.

See [tardis-machine](https://docs.tardis.dev/tardis-machine/quickstart) docs.
{% endtab %}
{% endtabs %}

### Captured real-time channels

{% embed url="<https://docs.ftx.com/#websocket-api>" %}
See FTX WebSocket API docs providing documentation for each captured channel's format
{% endembed %}

{% hint style="info" %}
Click any channel below to see [HTTP API](https://docs.tardis.dev/api/http-api-reference#data-feeds-exchange) response with historical data recorded for it.
{% endhint %}

* [trades](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22trades%22}]) Trade executions stream
* [orderbook](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22orderbook%22,%22symbols%22:\[%22BTC-PERP%22]}]) Order book snapshots and updates stream (best 100 orders on each side)
* [ticker](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22ticker%22,%22symbols%22:\[%22BTC-PERP%22]}]) Best bid/ask and last price stream
* [instrument](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22instrument%22}]) — generated channel, available since **2020-05-13** Data fetched from REST `/futures` and `/futures/{market_name}/stats` endpoints every 3-5 seconds per derivative instrument. Messages marked with `"channel":"instrument"` and `"generated":true`; data matches REST response format.
* [markets](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22markets%22}]) — available since **2020-05-22** Market metadata and status updates stream
* [orderbookGrouped](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22orderbookGrouped%22,%22symbols%22:\[%22BTC-PERP%22]}]) — available since **2020-07-21** Grouped order book snapshots and updates stream with higher depth than orderbook channel. The `orderbook` channel provides only the best 100 orders on either side; this channel supplies grouped (collapsed) prices with `grouping` set to instrument `priceIncrement` multiplied by 10.
* [lendingRate](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22lendingRate%22}]) — generated channel Margin lending rate snapshots from authenticated REST endpoint polled about every minute
* [borrowRate](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22borrowRate%22}]) — generated channel Margin borrow rate snapshots from authenticated REST endpoint polled about every minute
* [borrowSummary](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22borrowSummary%22}]) — generated channel Margin borrow summary snapshots from authenticated REST endpoint polled about every minute
* [leveragedTokenInfo](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-01-01\&filters=\[{%22channel%22:%22leveragedTokenInfo%22}]) — generated channel Leveraged token NAV and basket snapshots from REST endpoint polled about every 10 seconds
* [busy](https://api.tardis.dev/v1/data-feeds/ftx?from=2022-06-01\&filters=\[{%22channel%22:%22busy%22}]) — generated channel Exchange busy status snapshots from REST endpoint polled at high frequency

### Market data collection details

[Market data collection infrastructure](https://docs.tardis.dev/faq/general#what-is-your-infrastructure-setup) for FTX was located in GCP asia-northeast1 region (Tokyo, Japan).

Real-time market data was captured via **multiple WebSocket connections** to `wss://ftx.com/ws`.

{% hint style="info" %}
FTX servers were located in AWS ap-northeast-1 region (Tokyo, Japan).
{% endhint %}
