Metadata-Version: 2.4
Name: nautilus-finzdata
Version: 0.1.0
Summary: FinzData loader for NautilusTrader: point-in-time, survivorship-free stock, ETF and futures bars into a ParquetDataCatalog.
Author-email: FinzData <info@finzdata.com>
License: MIT
Project-URL: Homepage, https://finzdata.com/nautilus
Project-URL: Documentation, https://finzdata.com/docs
Project-URL: Source, https://github.com/FinzData/nautilus-finzdata
Keywords: nautilus_trader,nautilustrader,finzdata,market-data,backtesting,futures,point-in-time,survivorship-bias
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Topic :: Office/Business :: Financial :: Investment
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: finzdata>=0.1.14
Requires-Dist: pandas>=2.0
Requires-Dist: nautilus_trader>=1.220
Dynamic: license-file

# nautilus-finzdata

FinzData's point-in-time, survivorship-free market data for NautilusTrader backtests.

## Why FinzData

A backtest only knows the stocks in its data. FinzData includes delisted stocks, point in time, so results are not inflated by survivorship bias. Every futures contract since 2007 plus continuous series.

## Coverage

16,000+ US stocks that have traded on NYSE and Nasdaq since January 2000, delisted included, point in time
231 ETFs
139 futures markets with every contract since 2007
1, 5, 15, 30-minute, hourly and daily bars

Also via the FinzData API:
GEX for single stocks, ETFs and the major indexes
COT since 1986
13F
SEC fundamentals as filed
18,000+ macro series with every vintage kept

## Install

`pip install nautilus-finzdata`

Set `FINZDATA_API_KEY`. Free key, email only, 12 months of daily data: https://finzdata.com/account?ref=nautilus
Intraday bars and full history from $19 per ticker or $29 per futures market, yours to keep: https://finzdata.com/shop?ref=nautilus

## Quick start

```python
from nautilus_finzdata import FinzDataLoader
loader = FinzDataLoader()                       # venue "FINZDATA"
loader.to_catalog("catalog", symbols=["AAPL", "SPY"], start="2025-10-27", end="2026-10-23", futures=["ES"])
```

Then load it:
```python
from nautilus_trader.persistence.catalog import ParquetDataCatalog
catalog = ParquetDataCatalog("catalog")
```

BacktestNode snippet using BacktestDataConfig(catalog_path="catalog", data_cls=Bar, bar_types=["AAPL.FINZDATA-1-DAY-LAST-EXTERNAL"]) inside BacktestRunConfig.

## Bars and instruments

Instrument ids SYMBOL.FINZDATA
Continuous futures ROOT.c.0.FINZDATA, e.g. ES.c.0.FINZDATA
Single contracts e.g. ESZ26.FINZDATA

Bar types {instrument_id}-1-DAY-LAST-EXTERNAL / -5-MINUTE- / -1-HOUR-
Intervals 1min, 5min, 15min, 30min, 1hour, 1day
Bars are stamped at their close (daily: 16:00 New York) so strategies never see a bar early.

loader.bars(...)
loader.future_bars(root, ..., contract="ESZ26")
loader.equity(...)
loader.future(...)

## Futures specs

Built-in multipliers and tick sizes for ES, MES, NQ, MNQ, YM, RTY, M2K, CL, MCL, NG, RB, HO, PL, GC, MGC, SI, HG, ZN, ZF, ZT, ZC, ZS, ZW, VX, FDAX, FESX, E6, A6, B6, J6
Others via futures_specs={...}

## Errors

FinzDataPlanError with the link when a request needs a paid plan or an API key.

MIT
FinzData is not affiliated with Nautech Systems or the NautilusTrader project.
Support info@finzdata.com
FinzData: built for AI, quants, data scientists and financial analysts who backtest. Clean data. Real insights. Real alpha.
