Backtest locally today — Docker only, no key, free for personal trading. Drop your email to get early access to hosted Studio and Optuna optimization. One launch email and the occasional progress note.
Hosted Studio launches Q4 2026. The local runtime is free for personal trading today.
No install, no key, no signup. The PineForge runtime is one container image — transpile and backtest both run inside it, offline.
docker run --rm --network=none \ -e PINEFORGE_TRANSPILE_ONLY=1 \ -v "$(pwd)/strategy.pine":/in/strategy.pine:ro \ ghcr.io/pineforge-4pass/pineforge-engine:latest > strategy.cpp
docker run --rm --network=none \ -v "$(pwd)/strategy.cpp":/in/strategy.cpp:ro \ -v "$(pwd)/ohlcv.csv":/in/ohlcv.csv:ro \ ghcr.io/pineforge-4pass/pineforge-engine:latest > report.json
//@version=6 strategy("EMA Cross", overlay=true, initial_capital=10000) length = input.int(14, "Length") sig = ta.ema(close, length) if ta.crossover(sig, sig[1]) strategy.entry("long", strategy.long) if ta.crossunder(sig, sig[1]) strategy.close("long")
class GeneratedStrategy : public BacktestEngine { ta::EMA _ta_ema_1{14}; Series<double> _s_sig{500}; void on_bar(const Bar& bar) override { int length = get_input_int("Length", 14); double sig = _ta_ema_1.compute(bar.close); _s_sig.push(sig); if (sig > _s_sig[1] && _s_sig[1] <= _s_sig[2]) strategy_entry("long", true); if (sig < _s_sig[1] && _s_sig[1] >= _s_sig[2]) strategy_close("long"); } };
Building a strategy marketplace? See seller pitch →
Running a desk or small fund? See institutional pitch →
Our Model Context Protocol server runs as one container — your AI agent transpiles Pine to C++ and backtests on your data, all inside it. Talk to your strategy in natural language. No API key; your code and data never leave your machine.
docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-codegen-mcp:latest
Five axes that matter to a quant who wants to ship a strategy as a product. PineForge is built around all five.
Axes chosen to test PineForge's thesis. Scored from public docs and benchmarks. Methodology →
| Engine | Native speed | Source privacy | License control | OSS audit | Data freedom |
|---|---|---|---|---|---|
| PineForge | 5/5 | 4/5 | 5/5 | 3/5 | 5/5 |
| TradingView | 2/5 | 2/5 | 1/5 | 0/5 | 2/5 |
| MQL5 Market | 4/5 | 5/5 | 3/5 | 0/5 | 3/5 |
| QuantConnect | 3/5 | 1/5 | 1/5 | 3/5 | 4/5 |
| Backtrader | 1/5 | 0/5 | 0/5 | 5/5 | 5/5 |
def objective(report): return 0.6 * report.sharpe - 0.3 * report.max_dd + 0.1 * report.profit_factor
Drawing primitives, alerts, and live-tick semantics are out of scope by design — PineForge runs offline. Everything that determines a trade is in.
Full function-by-function coverage| ta.* — 59 functions + 8 series + pivot helper (67 classes) | 68/68 | 100% |
| math.* — deterministic + rolling | core | supported |
| str.* — format · split · regex · tostring | core | supported |
| strategy.* — orders · accessors · risk gates | full | 100% |
| array⟨T⟩ · map⟨K,V⟩ · UDT | via codegen | supported |
| matrix⟨T⟩ — Eigen-backed | 50+ ops | supported |
| request.security — ratio · calendar · lower-TF | core | supported |
| drawing & alerts | — | out of scope |
Every release is validated trade-by-trade against TradingView’s CSV exports — 246 reference strategies, full corpus open-source. 245 strict, 1 documented TV-side anomaly, zero engine bugs.
06-liquidity-sweep, 07-scalping-strategy, 49-partial-exit-qty-percent. See the per-strategy breakdown →feed_bar() API. Multi-window robustness scoring.Is this legal? How does it compare to PyneCore? What if PineForge shuts down? Eight short answers.
One launch email. One occasional progress note. No upsell-marathon.