Por que construímos PineForge.
Três caminhos não tomados. Dois anos perseguindo dois casos de paridade tier forte. Uma tese: PineScript merece um runtime de verdade.
Por que reprodutibilidade offline
TradingView é onde a maioria das estratégias Pine vive, e por bons motivos — iteração instantânea no gráfico, comunidade enorme, compartilhamento social. O que ele não entrega é um runtime offline: você não consegue pinar a versão do engine, não consegue rodar backtest no CI, não consegue reproduzir uma trade-list bit a bit em outra máquina.
Pra navegar ideias no gráfico, nada disso importa. Pra construir uma estratégia em que você vai botar dinheiro de verdade, tudo importa. O abismo entre "vejo um número no browser" e "tenho um audit trail" é o que a gente se propôs a fechar — sem deixar a linguagem Pine pra trás.
Por que não contribuir pro PyneCore
PyneCore é o engine PineScript open-source mais ambicioso. A gente mesmo usa como oráculo de segunda opinião. Consideramos contribuir com tudo que construímos pra upstream. Dois motivos pra não fazer:
- Modelo de runtime. PyneCore interpreta Pine em Python. PineForge transpila Pine pra C++ e compila num `.so`. Velocidades diferentes, tradeoffs de paridade diferentes, histórias de distribuição diferentes. Nenhum está errado — mas você não conecta um no outro sem reescrever os dois.
- Distribuição. Um `.so` compilado deixa vendedores entregarem estratégias pra compradores sem expor o código. Essa é a tese do marketplace (desenhado pra 2027). Não está no roadmap do PyneCore e não deveria estar — produto diferente.
Tratamos o PyneCore como segunda fonte. Cada release do PineForge roda a sweep de paridade contra PyneCore e TradingView. A taxa deles no tier excelente é alta o suficiente pra que discordâncias entre os dois engines sejam quase sempre um deles com bug — em geral o nosso.
Por que não estender o Backtrader
Backtrader é o cavalo de batalha do algo trading em Python. Sólido, querido, e o formato errado pra esse trabalho. É um framework de backtest nativo Python que por acaso suporta classes de estratégia customizadas. Pine é uma linguagem diferente com semântica diferente — não dá pra fingir lookahead de `request.security()`, processamento intra-bar de ordens ou grupos de saída `oca_name` escrevendo mais Python.
E de novo: uma estratégia Backtrader é source Python, distribuível como source Python. O marketplace de binário compilado exige um passo de transpile que produz um artefato deployable. A superfície do Backtrader não expõe isso.
A perseguição até 165/167
Começamos com 9 estratégias e 76% de paridade estrita. Dois anos depois: 167 estratégias, 165 estritas. O salto de 76 pra 98,8% não veio de escrever mais codegen — veio de perseguir divergências na quarta casa decimal, uma de cada vez, semanas em cada.
A maior parte dessas semanas foi gasta entendendo as definições específicas do TradingView pra palavras tipo "exit", "fill", "trail" — a doc do Pine descreve a API; a semântica exata do processamento de ordens só fica visível quando você faz diff de trade-list barra a barra. A gente fez isso, ficou perguntando por que o nosso e a referência discordavam, e ajustou as diferenças uma a uma.
Os dois casos no tier forte são os interessantes — corner cases que deram o trabalho mais fundo e seguem no roadmap pra fechar. Tratamos como pesquisa, não como vergonha.
O que vem
Q3 2026: Integração com Optuna entrega. Otimize qualquer estratégia em qualquer função objetivo de uma linha — Sharpe, drawdown, profit factor, sua própria lambda Python. Walk-forward built-in, out-of-sample como padrão, não afterthought.
Q4 2026: Studio hospedado lança. Workspace de projeto, backtest, otimização, comparação, paper-trade — tudo no browser, tudo rodando no mesmo `.so` que você rodaria local pela CLI hoje. Acesso wave-1 vai pra waitlist de early-access primeiro.
2027: Marketplace abre. Vendedores publicam binários `.so` compilados com limites de licença que eles mesmos definem: tempo, máquina, broker, símbolo, faixas de input. Compradores rodam nos próprios dados, nunca veem o source. Mesmo modelo de entrega que funcionou pro MQL5 — só que as estratégias são em Pine, o runtime é auditável e as licenças são revogáveis.
O 1% que não dá pra escrever na mão
Cada engine de paridade que a gente já leu sobre foi construído e abandonado por alguém que enjoou em 90%. Os últimos 10% são trabalho repetitivo, alto esforço, baixo glamour — tem que ser feito por pessoas que de verdade se animam em explicar por que duas trade-lists discordam em 0,0001%.
Esse é o time. Essa é a disciplina. É isso que faz o runtime valer a pena rodar com o seu dinheiro.