Use when loading market data, working with the Parquet catalog, fetching from IBKR, converting CSV data, or diagnosing data availability issues. Covers the DataCatalogService API, catalog structure, and IBKR client configuration.
설치
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Use when loading market data, working with the Parquet catalog, fetching from IBKR, converting CSV data, or diagnosing data availability issues. Covers the DataCatalogService API, catalog structure, and IBKR client configuration.
Data Pipeline Guide
See also: docs/agent/nautilus.md (IBKR client, Parquet catalog)
from src.services.data_catalog import DataCatalogService
service = DataCatalogService() # Uses NAUTILUS_PATH env or ./data/catalog# Load from catalog, fetch from IBKR if missing (primary method)
bars = await service.fetch_or_load(
instrument_id="AAPL.NASDAQ",
start=datetime(2024, 1, 1, tzinfo=timezone.utc),
end=datetime(2024, 12, 31, tzinfo=timezone.utc),
bar_type_spec="1-MINUTE-LAST",
)
# Query bars directly from catalog (no IBKR fallback)
bars = service.query_bars(instrument_id="AAPL.NASDAQ", ...)
# Other methods
service.write_bars(bars, correlation_id="backtest-123")
avail = service.get_availability("AAPL.NASDAQ", "1-MINUTE-LAST")
gaps = service.detect_gaps("AAPL.NASDAQ", "1-MINUTE-LAST", start_date=..., end_date=...)
catalog_data = service.scan_catalog()
instrument = service.load_instrument("AAPL.NASDAQ")
Critical Gotcha: catalog.bars() Parameter
# WRONG — Using BarType objects returns ALL bar types
bars = catalog.bars(bar_types=[BarType.from_str("...")])
# CORRECT — Must be list of STRINGS
bars = catalog.bars(bar_types=["AAPL.NASDAQ-1-MINUTE-LAST-EXTERNAL"])
IBKR Client
All connection settings via environment variables through IBKRSettings.
See docs/agent/nautilus.md for full IBKR configuration details.
The client is created lazily on first access — no connection until data is actually needed from IBKR.