Vì sao chúng tôi build PineForge.
Ba ngả đường không chọn. Hai năm đuổi theo hai case parity strong-tier. Một thesis: PineScript xứng đáng có một runtime thực sự.
Vì sao reproducibility offline
TradingView là nơi đa số strategy Pine sống, và có lý do — iterate ngay trên chart, community khổng lồ, share dễ. Cái nó không ship: runtime offline. Bạn không pin được phiên bản engine, không chạy backtest trong CI được, không reproduce trade list bit-by-bit trên máy khác được.
Để lướt ý tưởng trên chart thì những thứ đó không quan trọng. Để build strategy bạn đặt tiền thật vào thì tất cả đều quan trọng. Khoảng cách giữa "tôi thấy con số trong browser" và "tôi có audit trail" là cái chúng tôi đặt mục tiêu khép lại — mà vẫn ở lại với ngôn ngữ Pine.
Vì sao không contribute cho PyneCore
PyneCore là engine PineScript open-source tham vọng nhất. Chúng tôi tự dùng nó như second-opinion oracle. Đã cân nhắc upstream mọi thứ chúng tôi build. Hai lý do không làm:
- Mô hình runtime. PyneCore interpret Pine trong Python. PineForge transpile Pine sang C++ rồi compile thành `.so`. Tốc độ khác, tradeoff parity khác, distribution story khác. Không ai sai — nhưng không thể bolt cái này vào cái kia mà không viết lại cả hai.
- Distribution. `.so` đã compile cho phép seller ship strategy tới buyer mà không lộ source. Đó là thesis marketplace (thiết kế cho 2027). Không nằm trong roadmap của PyneCore và cũng không nên — sản phẩm khác.
Chúng tôi coi PyneCore là second source. Mỗi release PineForge đều chạy parity sweep với cả PyneCore và TradingView. Tỉ lệ excellent của họ đủ cao để khi hai engine bất đồng, gần như chắc chắn một bên có bug — thường là phía chúng tôi.
Vì sao không extend Backtrader
Backtrader là workhorse của Python algo trading. Vững, nhiều người yêu, và sai shape cho job này. Nó là backtesting framework Python-native tình cờ support custom strategy class. Pine là ngôn ngữ khác với semantic khác — không fake được lookahead `request.security()`, intra-bar order processing, hay exit group `oca_name` bằng cách viết thêm Python.
Và lại nữa: strategy Backtrader là Python source, distribute dạng Python source. Marketplace binary đã compile cần bước transpile sinh ra artifact deploy được. Surface của Backtrader không expose điều đó.
Cuộc đuổi 165/167
Chúng tôi bắt đầu với 9 strategy và 76% strict parity. Hai năm sau: 167 strategy, 165 strict. Khoảng cách từ 76 lên 98.8% không build bằng cách viết thêm codegen — mà bằng cách đuổi divergence ở chữ số thập phân thứ tư, từng cái một, mỗi cái mất nhiều tuần.
Đa số những tuần đó dành cho việc match đúng định nghĩa của TradingView cho các từ như "exit", "fill", "trail" — Pine documentation mô tả API; semantic chính xác của order processing chỉ hiện ra khi diff trade list bar-by-bar. Chúng tôi làm vậy, cứ hỏi tại sao bên mình và bên reference khác nhau, và san phẳng từng khác biệt một.
Hai case strong-tier là phần thú vị — corner case mất nhiều công đào nhất và vẫn còn trong roadmap để khép. Chúng tôi coi đó là research, không phải xấu hổ.
Sắp tới có gì
Q3 2026: Optuna integration ship. Tối ưu strategy bất kỳ với hàm mục tiêu một dòng — Sharpe, drawdown, profit factor, lambda Python của bạn. Walk-forward analysis built-in, out-of-sample là default chứ không phải afterthought.
Q4 2026: Hosted Studio launch. Project workspace, backtest, optimize, compare, paper-trade — tất cả trong browser, tất cả chạy trên cùng `.so` mà bạn chạy local qua CLI hôm nay. Wave-1 access cho early-access waitlist trước.
2027: Marketplace mở. Seller publish binary `.so` đã compile với license bound do seller định: thời gian, máy, broker, symbol, range input. Buyer chạy trên data của họ, không bao giờ thấy source. Cùng delivery model đã work với MQL5 — chỉ khác strategy viết bằng Pine, runtime audit được, license revoke được.
1% mà không tay nào viết được
Mọi parity engine chúng tôi từng đọc về đều bị build và bỏ giữa chừng bởi người chán ở mức 90%. 10% cuối là việc lặp đi lặp lại, tốn công, không hào nhoáng — phải do người thực sự hứng thú với việc giải thích vì sao hai trade list lệch nhau 0.0001% làm.
Đó là team. Đó là kỷ luật. Đó là điều khiến runtime đáng để bạn đặt tiền vào.