tardis-dev с последующим импортом в pandas.DataFrame для количественного анализа и бэктестинга HFT-стратегий.В количественном трейдинге (Quantitative Trading) качественные исторические данные — это фундамент успешной стратегии. Если для анализа дневных свечей или ставок финансирования достаточно стандартных коннекторов (подробнее об этом в статье Асинхронный сбор Funding Rate с Binance, Bybit и OKX на Python), то для высокочастотного анализа (HFT) и построения микроструктурных моделей необходим потиковый стакан L2 (Level 2 Order Book).
Провайдер Tardis.dev предоставляет доступ к тиковым историческим данным стакана с точностью до микросекунды. В этой инструкции мы разберем, как с помощью официального Python-клиента tardis-dev скачать инкрементальные обновления стакана L2 и загрузить их в pandas для дальнейшего анализа.
Исходный код
Ниже представлен готовый к использованию скрипт, который скачивает архив с инкрементальными обновлениями стакана L2 для биржи Binance Futures и загружает его в pandas.DataFrame.
import os
from tardis_dev import datasets
import pandas as pd
def download_and_load_l2_data(
exchange: str,
symbol: str,
date: str,
api_key: str,
download_dir: str = "./data"
) -> pd.DataFrame:
# 1. Скачивание данных с Tardis.dev
print(f"Запуск скачивания L2 данных для {exchange}:{symbol} за {date}...")
datasets.download(
exchange=exchange,
data_types=["incremental_book_L2"],
from_date=date,
to_date=date,
symbols=[symbol],
api_key=api_key,
download_dir=download_dir
)
# Формируем имя файла по шаблону Tardis
# Шаблон: {exchange}_incremental_book_L2_{date}_{symbol}.csv.gz
filename = f"{exchange}_incremental_book_L2_{date}_{symbol}.csv.gz"
file_path = os.path.join(download_dir, filename)
if not os.path.exists(file_path):
raise FileNotFoundError(f"Файл {file_path} не найден после скачивания.")
# 2. Загрузка в pandas DataFrame
print(f"Загрузка файла {file_path} в pandas...")
# Tardis отдает сжатые csv.gz файлы, pandas умеет читать их на лету
df = pd.read_csv(file_path)
# Преобразуем временные метки в datetime для удобства анализа
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='us')
df['local_timestamp'] = pd.to_datetime(df['local_timestamp'], unit='us')
return df
if __name__ == "__main__":
# Укажите ваш API ключ от Tardis.dev (можно использовать 'YOUR_API_KEY')
TARDIS_API_KEY = os.getenv("TARDIS_API_KEY", "YOUR_API_KEY")
try:
df_l2 = download_and_load_l2_data(
exchange="binance",
symbol="BTCUSDT",
date="2023-11-01",
api_key=TARDIS_API_KEY
)
print("\nПервые 5 строк загруженного стакана L2:")
print(df_l2.head())
print(f"\nВсего строк загружено: {len(df_l2)}")
except Exception as e:
print(f"Произошла ошибка: {e}")
Разбор параметров
exchange: Идентификатор биржи в системе Tardis (например,binance,binance-delivery,deribit,okex).data_types: Список типов данных. Для инкрементального стакана L2 используется значение["incremental_book_L2"]. Также доступныtrades,quotesи другие.from_date/to_date: Диапазон дат в форматеYYYY-MM-DD, за который необходимо выгрузить исторические данные.symbols: Список торговых пар (тикеров) в верхнем регистре, например,["BTCUSDT"].api_key: Ваш персональный API-ключ Tardis.dev. Без ключа доступен только ограниченный демонстрационный режим на исторических данных прошлых периодов.download_dir: Локальная директория, в которую будут сохранены скачанные файлы в формате.csv.gz.
Как запустить
Для успешного запуска скрипта выполните следующие шаги:
1. Установите необходимые библиотеки в вашем окружении:
pip install tardis-dev pandas 2. Получите API-ключ на сайте Tardis.dev. Если вы хотите протестировать код бесплатно, Tardis предоставляет доступ к некоторым историческим интервалам без ключа или со стандартным демо-ключом.
3. Запустите скрипт. Скачанный файл сохранится в папку ./data, после чего pandas автоматически распакует его в оперативной памяти и создаст структурированный DataFrame.
Если вы планируете использовать полученные данные для тестирования торговых роботов в симулированной среде, рекомендуем ознакомиться с нашей статьей о настройке тестовых сред: Работа с Testnet API криптобирж в Python CCXT: Настройка.
Для тех, кто помимо спотового и фьючерсного рынка интересуется опционами, полезным дополнением станет руководство по выгрузке волатильности: Как извлечь исторические данные по опционам Deribit (Implied Volatility) с Python requests.




