Esegui backtest PineScript offline, sui tuoi dati
PineForge transpila PineScript v6 in C++ nativo e lo esegue sulla tua macchina locale via Docker. Local-first, riproducibile bit per bit, gira ovunque giri Docker. Porta il tuo CSV OHLCV.
Perché offline?
Il backtest in browser è perfetto per l'iterazione sul chart. Il backtest offline è quello a cui ricorri quando il prossimo passo è mettere soldi dietro la strategia: quando ti serve un audit trail, quando la CI deve fare da gate su ogni commit, quando un risultato di due mesi fa deve riprodursi bit per bit oggi.
Eseguire i backtest offline ti dà ciò che i tester in browser non possono dare: i risultati sono riproducibile bit per bit — stesso input, stesso output, ogni volta. Pinni la versione dell'engine, fai il check-in dei risultati in un repository, fai il diff delle trade list fra commit e fai girare l'intera cosa in headless dentro la tua pipeline CI. Il CSV che dai in pasto è tuo; il binario che esegui è locale; il report che ottieni è auditabile.
La lista pratica di cosa l'offline sblocca: engine pinnati per versione così che un commit di due mesi fa produca oggi la stessa trade list; ingestion di dati custom così da testare contro le tick reconstruction del tuo exchange, i prezzi point-in-time del tuo data vendor o qualunque feed di alt-data serializzabile in OHLCV; integrazione CI così che le regressioni facciano fallire la build prima di arrivare in produzione; e portabilità multi-broker perché la logica della tua strategia non è incatenata a una piattaforma — è un file.
Se hai mai dovuto condividere un risultato di backtest con un collega e ti sei reso conto che l'unico modo per «condividere» era uno screenshot del chart — l'esecuzione offline è ciò che ti manca.
Come funziona
Tre passi. Il workflow completo dal sorgente Pine a un report di trade in JSON ti porta via meno di due minuti la prima volta e meno di trenta secondi a ogni run successivo.
Step 1 — Prendi una API key gratuita per il codegen. Iscriviti dal form di early-access qui sotto. La key ti arriva via mail subito e ha un tier gratuito generoso — sufficiente per il workflow di sviluppo di qualunque quant indipendente.
Step 2 — POST del tuo sorgente Pine all'API di codegen. L'API transpila PineScript v6 in C++ e restituisce uno shared object compilato. A runtime non gira nessun interprete Pine — l'output è codice macchina nativo.
curl -s https://api.pineforge.io/v1/codegen \
-H "Authorization: Bearer $PINEFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"source": "'"$(cat my_strategy.pine | jq -Rs .)"'"}' \
| jq -r '.artifact_url' \
| xargs curl -sL -o strategy.soStep 3 — docker run. Scarica l'immagine del runtime PineForge e monta il tuo CSV OHLCV insieme all'artefatto compilato. L'engine legge il file dati, esegue la strategia barra per barra e scrive un report JSON su stdout.
docker run --rm \ -v "$(pwd)/strategy.so":/strategy.so \ -v "$(pwd)/ohlcv.csv":/data.csv \ ghcr.io/pineforge/runtime:latest \ run /strategy.so --data /data.csv --output json
L'output JSON include una trade list completa con prezzi di entry e exit, indici di barra, position size e un blocco summary con net PnL, max drawdown, totale trade, profit factor e Sharpe ratio. Tutti i campi sono stabili fra le patch release dello stesso major — sicuro da parsare in script.
Questo è l'intero workflow. Niente GUI, nessuna ri-autenticazione di account, nessun caricamento di chart. Se sai far girare Docker, sai far girare i backtest PineForge offline.
Cosa puoi backtestare
La risposta breve: qualunque cosa tu possa serializzare come OHLCV. PineForge non è connesso a nessun fornitore di market data. I dati li porti tu; l'engine esegue la strategia.
Crypto dal tuo exchange. Scarica i trade raw da Binance, Bybit, Kraken o qualunque exchange con API REST o WebSocket. Aggrega al timeframe usato dalla tua strategia. Dai in pasto direttamente il CSV. Testa sull'esatta combinazione coppia-and-venue su cui tradderai.
Equity dal tuo data vendor. Polygon, Norgate, BarChart, Tiingo — scegli la fonte, esporta prezzi rettificati point-in-time, esegui backtest con i tuoi fill veri e il tuo universo davvero senza survivorship-bias.
Tick reconstruction. Se hai dati Level 2 e vuoi testare su barre sintetiche da 1 secondo ricostruite dai tick, puoi farlo. Genera l'OHLCV dai tuoi tick e passalo. L'engine non sa né gli importa da dove arrivano le barre.
Alt-data. Sentiment score, metriche on-chain, funding rate, skew delle opzioni — se riesci a esprimerlo come time series allineata al tuo bar index, puoi incorporarlo in Pine via colonne dati custom e testarlo offline.
La suite di riferimento da 167 strategie nella gallery è stata backtestata contro export CSV di TradingView (per la validazione di parità) e contro dataset CSV custom (per il test di regressione). 165 delle 167 raggiungono il tier canonico strict-excellent (drift di PnL ≤ 0,5% sulla finestra di confronto); le due rimanenti sono full match trade per trade al tier strong (drift fra 0,5% e 1%, ben dentro la tolleranza di riproducibilità per il sizing in produzione). Una sonda aggiuntiva — uno stress test al margine 1× — è esclusa dallo sweep di titolo; espone una non-determinismo lato broker emulator di TV che non possiamo modellare dallo stato Pine pubblico.