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
| 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 |
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.
- 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.