Inspiration
Polymarket generates millions of trades but most people trade on gut instinct. We wanted to let anyone visually build and backtest trading strategies against real historical data; no coding required.
What it does
A drag-and-drop pipeline editor for Polymarket. Connect market data sources, comparisons, logic gates, rate limiters, and trade outputs into visual strategies. Backtest against 420M historical trades instantly. An AI assistant builds pipelines from plain
How we built it
Next.js, React Flow, Convex, Tailwind, and ClickHouse holding 420M trades + 250K market metadata rows. The backtest engine topologically sorts the pipeline graph and simulates every node at each historical timestep, tracking positions and mark-to-market
Challenges we ran into
Polymarket events contain multiple sub-markets; our backtest kept resolving the wrong token ID. Sparse historical data caused equity to falsely crash to zero until we added last-known-price carry-forward. Data freshness lag broke our signal nodes until we anchored time windows to the latest available
Accomplishments that we're proud of
Sub-second backtests over 420M rows. An AI chat that builds valid pipelines end-to-end — searching markets, wiring nodes, and auto-fixing validation errors. A backtest system that handles cross-market strategies where the signal and traded asset are different tokens.
What we learned
ClickHouse is absurdly fast. The gap between "works in tests" and "works on real data" is enormous — edge cases around multi-market events and sparse tokens dominated our debugging. Visual programming is a surprisingly powerful abstraction for trading
What's next for Redprints
Live execution — connecting validated pipelines to Polymarket's CLOB for real trading. Richer signal nodes (momentum, mean reversion, cross-market correlation). Community-shared strategy templates. And keeping the ClickHouse data pipeline live so backtests always use fresh data.
Built With
- clickhouse
- express.js
- nextjs
- react
- reactflow
- typescript
Log in or sign up for Devpost to join the conversation.