pineforge
Backtest offline

Chạy backtest PineScript offline, trên data của riêng bạn

PineForge transpile PineScript v6 sang C++ native và chạy local trên máy bạn qua Docker. Local-first, reproducible từng byte, chạy mọi nơi Docker chạy được. BYOD OHLCV CSV.

Vì sao offline?

Backtest trên browser tốt cho iterate ngay trên chart. Backtest offline là cái bạn cần khi bước tiếp theo là đặt tiền vào strategy: khi cần audit trail, khi CI phải gate mỗi commit, khi một kết quả từ hai tháng trước phải reproduce bit-by-bit hôm nay.

Chạy backtest offline cho bạn những thứ tester browser không cho được: kết quả reproducible từng byte — cùng input, cùng output, mọi lúc. Bạn pin phiên bản engine, check kết quả vào repo, diff trade list giữa các commit, và chạy toàn bộ headless trong CI pipeline. CSV bạn feed vào là của bạn; binary chạy là local; report nhận lại audit được.

Danh sách thực dụng những thứ offline mở khóa: engine pin theo phiên bản nên commit hai tháng trước hôm nay vẫn ra cùng trade list; ingest data tùy chỉnh nên bạn test được với tick reconstruction của exchange, giá point-in-time của data vendor, hay bất kỳ alt-data nào bạn serialize được sang OHLCV; tích hợp CI nên regression fail build trước khi tới production; và portability đa broker vì logic strategy không khóa vào platform — nó là một file.

Nếu từng cần share kết quả backtest với đồng nghiệp và nhận ra cách "share" duy nhất là screenshot chart — chạy offline là cái bạn đang thiếu.

Cơ chế

Ba bước. Toàn bộ workflow từ Pine source tới JSON trade report mất dưới hai phút lần đầu và dưới ba mươi giây cho mỗi lần sau.

Bước 1 — Lấy codegen API key miễn phí. Đăng ký ở form early-access bên dưới. Key gửi email ngay lập tức và có free tier rộng rãi — đủ cho workflow phát triển của một quant cá nhân.

Bước 2 — POST Pine source tới codegen API. API transpile PineScript v6 sang C++ và trả shared object đã compile. Không có Pine interpreter chạy lúc runtime — output là native machine code.

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

Bước 3 — docker run. Pull image runtime PineForge và mount OHLCV CSV cùng artifact đã compile. Engine đọc data file, execute strategy bar-by-bar, và write JSON report ra 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

JSON output gồm full trade list với entry/exit price, bar index, position size, và summary block với net PnL, max drawdown, total trades, profit factor, Sharpe ratio. Mọi field đều stable across patch release của cùng major version — parse trong script an toàn.

Đó là toàn bộ workflow. Không GUI, không re-auth account, không load chart. Chạy được Docker là chạy được PineForge backtest offline.

Backtest được trên cái gì

Trả lời ngắn: bất kỳ thứ gì bạn serialize được dạng OHLCV. PineForge không kết nối tới market data provider nào. Bạn mang data; engine chạy strategy.

Crypto từ exchange của bạn. Pull raw trade data từ Binance, Bybit, Kraken, hay exchange nào có REST/WebSocket API. Aggregate sang timeframe strategy dùng. Feed CSV trực tiếp. Test trên đúng cặp-và-venue bạn sẽ trade.

Cổ phiếu từ data vendor. Polygon, Norgate, BarChart, Tiingo — chọn nguồn, export giá điều chỉnh point-in-time, chạy backtest với fill thật và universe survivorship-bias-free thật.

Tick reconstruction. Có Level 2 data và muốn test trên bar 1-giây synthetic dựng từ tick? Được. Sinh OHLCV từ tick data và feed vào. Engine không biết và không quan tâm bar đến từ đâu.

Alt-data. Sentiment score, on-chain metric, funding rate, options skew — nếu express được thành time series align với bar index, bạn nhúng được vào Pine qua custom data column và test offline.

Bộ 167 strategy tham chiếu trong gallery được backtest với CSV xuất từ TradingView (cho parity validation) và dataset CSV tùy chỉnh (cho regression test). 165/167 đạt tier strict-excellent chuẩn (PnL drift ≤ 0.5% trên cửa sổ so sánh); hai cái còn lại khớp full trade-for-trade ở tier strong (drift 0.5%–1%, vẫn trong tolerance reproducibility cho production sizing). Một probe phụ — stress test 1× equity-margin — bị loại khỏi headline sweep; nó lộ ra non-determinism của broker emulator phía TV mà chúng tôi không model được từ Pine state công khai.

Bắt đầu