PineForge Data documentation¶
PineForge Data connects external market and macro providers to deterministic
PineForge backtests. It owns provider transport, market discovery, normalized
records, data provenance, and the local or remote handoff to
pineforge-release.
exchange / broker / macro API
↓
Python provider adapter
↓
normalized market + bars + trades
↓
local pineforge-release or FastAPI server
↓
versioned report with data/runtime provenance
Choose a guide¶
| Goal | Guide |
|---|---|
| Install the package and run a first backtest | Getting started |
| Understand instruments, contracts, bars, trades, and macro vintages | Data model |
| Choose a provider and open its API guide | Provider catalog |
| Configure local and remote raw-Pine backtests | Backtesting |
| Deploy and operate the concurrent FastAPI service | FastAPI server |
| Implement a new exchange or broker adapter | Provider contract |
| Look up Python signatures, types, and docstrings | Python API reference |
| Publish a verified package release | Releasing |
| Prepare a contribution | Contributing |
Package boundaries¶
pineforge-datais Python-only and owns external data integration.pineforge-releaseowns Pine transpilation, C++ compilation, and the engine runtime image.pineforge-enginereceives normalized arrays and must not depend on provider SDKs or vendor-specific schemas.- Provider credentials stay on the data-fetching host. The FastAPI backtest request contains normalized data, not provider credentials.
Core guarantees¶
- timestamps use Unix milliseconds;
- normalized records retain their instrument and source provenance;
- historical bars exclude the currently forming candle when the provider can identify it;
- exact catalog resolution distinguishes spot, swaps, futures, and options;
- user-owned tabular schemas are reflected and mapped explicitly rather than requiring a PineForge-owned DDL;
- macro observations retain release and vintage timestamps to avoid revised- data lookahead;
- backtest reports identify both the resolved market and runtime versions.
The package does not promise that every provider exposes every protocol. A provider may support historical bars without live trades, or macro observations without a market catalog.