Scroll
pineforge
Get a free codegen key

Drop your email. We reply with your free codegen API key plus the 2-minute quickstart above. One launch email and the occasional progress note.

Hosted Studio launches Q4 2026. Self-host today via the open-source CLI.

Try it · 2 min
free tier
01Get a free codegen API key

Drop your email into the waitlist below. Your key arrives by email within seconds, ready to use against the codegen API.

02Transpile your Pine to C++
bash
curl -X POST https://codegen.pineforge.dev/transpile \
  -H "Authorization: Bearer $PINEFORGE_KEY" \
  --data-binary @strategy.pine > strategy.cpp
03Backtest against your OHLCV CSV
bash
docker run --rm \
  -v $(pwd)/strategy.cpp:/in/strategy.cpp \
  -v $(pwd)/ohlcv.csv:/in/ohlcv.csv \
  ghcr.io/fullpass-4pass/pineforge-engine:latest > report.json
158/162
strict TV parity
trade-for-trade, 162 reference strategies
49/50
vs PyneCore 46/50
three-engine bake-off; PineForge leads
~98%
strategy coverage
of what real Pine v6 scripts use; full table on /coverage
218k+
trades validated
aggregate across the 162-strategy corpus
Open core
Apache runtime · proprietary codegen
audit the runtime · free codegen API tier · run via docker
strategy.pine
PineScript v6
//@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")
Generated C++ · emitted by codegen
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");
    }
};
Trades
142
Net P&L
+$3,184.62
Sharpe
1.48
Max DD
−12.7%
ma-cross paritysupertrend parityinside-bar paritystochastic-slow paritypivot-ext parity4ema-rsi parityliquidity-sweep paritymarket-shift paritymacd-histogram paritydonchian-breakout paritymatrix-pca parityregex-filter parity
Built for

Built for solo quants first.

01 / B2C primary

Solo quant traders

  • Your data, your machine, no premium tier.
  • Optuna with any custom objective.
  • Webhooks without rate limits.
Open-source CLI today · Studio Q4 2026

Building a strategy marketplace? See seller pitch →

Running a desk or small fund? See institutional pitch →

Why PineForge

Three things TradingView’s runtime won’t give you.

01 / DETERMINISM

Same script, same data, same trades. Byte-reproducible.

02 / SPEED

Native C++. 50k bars in tens of milliseconds.

03 / OWNERSHIP

Your data, your machine, your strategy. Offline by default.

For AI assistants

Use PineForge from Claude, Cursor, or any MCP client.

Our Model Context Protocol server bridges your AI agent to the codegen API and your local Docker. Talk to your strategy in natural language. Backtest stays local — only the Pine source crosses the network.

Install (one command)OHLCV stays on your machine.
npx -y @pineforge/codegen-mcp
Tools exposed
  • ·transpile_pine — Pine v6 → C++
  • ·backtest_pine — local Docker backtest
  • ·get_quota — check your free tier usage
  • ·pull_engine_image — fetch the latest runtime
See full setup →
Where PineForge sits

One runtime that occupies a corner no one else does.

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

PineForge vs TradingView
WINS
5 / 5
PineForge vs TradingView on five axes.SPEEDPRIVACYLICENSEOSSDATA
SPEED
+3
PRIVACY
+2
LICENSE
+4
OSS
+3
DATA
+3
PineForge vs MQL5 Market
WINS
4 / 5
PineForge vs MQL5 Market on five axes.SPEEDPRIVACYLICENSEOSSDATA
SPEED
+1
PRIVACY
-1
LICENSE
+2
OSS
+3
DATA
+2
PineForge vs QuantConnect
WINS
4 / 5
PineForge vs QuantConnect on five axes.SPEEDPRIVACYLICENSEOSSDATA
SPEED
+2
PRIVACY
+3
LICENSE
+4
OSS
0
DATA
+1
1 tie
PineForge vs Backtrader
WINS
3 / 5
PineForge vs Backtrader on five axes.SPEEDPRIVACYLICENSEOSSDATA
SPEED
+4
PRIVACY
+4
LICENSE
+5
OSS
-2
DATA
0
1 tie
Differentiation scores by engine and axis
EngineNative speedSource privacyLicense controlOSS auditData freedom
PineForge5/54/55/53/55/5
TradingView2/52/51/50/52/5
MQL5 Market4/55/53/50/53/5
QuantConnect3/51/51/53/54/5
Backtrader1/50/50/55/55/5
Capabilities

Five things you can’t do on TradingView alone.

shipped
01
Bring your own data
Run any custom data — daily, intraday, alt — without TradingView's symbol restrictions.
shipped
02
Intra-bar resolution at any cadence
Walk inside the bar with sub-bar resolution. No more last-tick approximation.
building Q3 2026
03
Optuna with a custom objective
Optimize with any objective function — Sharpe, drawdown, profit factor, your own.
building Q3 2026
04
Forward-test with TradingView-shaped webhooks
Walk-forward analysis built in. Out-of-sample is the default, not an afterthought.
designed 2027
05
Strategy marketplace · sell compiled .so
Sell compiled .so. Time-bound, machine-bound, broker-bound — set by you, not by a platform.
Bring your own dataexpand
Any OHLCV CSV — your tick data, your custom feed, your alternative-asset history. Run offline, in CI, in Docker. No upload, no API key.
Intra-bar resolution at any cadenceexpand
Six distribution modes (uniform, cosine, triangle, endpoints, front/back-loaded), optionally volume-weighted. A limit at $100 inside a 95–105 bar fills at exactly $100 — TradingView’s bar magnifier without the subscription.
Optuna with a custom objectiveexpand
Sharpe, Sortino, drawdown, profit factor — or any one-line lambda you want the optimizer to chase.
def objective(report):
  return 0.6 * report.sharpe - 0.3 * report.max_dd + 0.1 * report.profit_factor
Forward-test with TradingView-shaped webhooksexpand
Drop-in replacement for TradingView alerts. Same JSON shape, same runtime as your backtest — no rate limits, no replay drift.
Strategy marketplace · sell compiled .soexpand
AES-256-GCM-encrypted shared library. Ed25519-signed, machine-bound, time-bounded licenses. Buyers tune the inputs you expose; they never see the source. Full design →
How it works

Four stages.
Zero hidden state.

01 · input
.pine source
your file
02 · parse
AST + type-check
Pine v6 spec
03 · transpile
C++ codegen
no runtime tax
04 · compile + run
Native binary
~12ms / 50k bars
05 · validate
Trade-for-trade
158/162 strict
Studio preview

One report, every number you actually trust.

ETHUSDT · 15m2025-07 → 2026-04EMA Cross · L=21
Net
+31.84%
Sharpe
1.48
Max DD
−12.7%
Win rate
52.1%
Trades
142
Profit factor
1.71
Equity curve · vs Buy & HoldPineForgeB&H
Jul '25Sep '25Nov '25Jan '26Mar '26Today
PineScript v6 coverage

~90% of the language.
~98% of what strategies actually use.

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.* — 66 stateful indicator classes66/6897%
math.* — deterministic + rollingcoresupported
str.* — format · split · regex · tostringcoresupported
strategy.* — orders · risk · accessorsfull100%
array<T> · map<K,V> · UDTvia codegensupported
matrix<T> — Eigen-backed60+ opssupported
request.security — ratio · calendar · lower-TFcoresupported
drawing & alertsout of scope
TradingView parity

We don’t ask you to trust the engine.
We diff it.

Every release is validated trade-by-trade against TradingView’s CSV exports — 162 reference strategies, full corpus open-source.

158/162
strategies at strict parity
Excellent158Strong4Weak / fail0
Three-engine bake-off · 50 strategies · same OHLCV
How PineForge stacks up against PyneCore and PineTS.
Full comparison & reproduction recipe
C++ static lib
PineForge
49 / 50
49 excellent · 1 strong · 0 weak
Python (cloud-transpiled)
PyneCore
46 / 50
46 excellent · 1 strong · 2 moderate · 1 weak
TypeScript (LuxAlgo)
PineTS
indicators only
strategy backtester is upstream roadmap
The 3-strategy gap (06-liquidity-sweep, 07-scalping-strategy, 49-partial-exit-qty-percent) is consistently in bracket / trail / partial-exit semantics, where PyneCore’s broker emulator differs from TV. See the per-strategy breakdown →
What’s coming

Backtest is the start. Live is the point.

  1. now
    shipped
    Deterministic batch backtests
    Pine v6 → C++ → trades. 158/162 strict TV parity, 81% line coverage, open-source pineforge-engine.
  2. Q3 2026
    building
    Forward-test + Optuna optimization
    Streaming feed_bar() API. Multi-window robustness scoring.
  3. Q4 2026
    next
    Hosted Studio · paper trading
    Code · Backtest · Optimize · Compare workspace. One broker bridge at launch.
  4. 2027
    later
    Live execution · marketplace
    Multi-broker fills. Encrypted strategy distribution. Audit log per order.
Frequently asked

Is this legal? How does it compare to PyneCore? What if PineForge shuts down? Eight short answers.

Read the FAQ

Be there when Studio opens.

One launch email. One occasional progress note. No upsell-marathon.