pineforge
Origem

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:

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.