Quantitative trading, but free.
Chartinger is a free, open-source trading terminal for quantitative research, currently in development. It brings together market data, a scripting language for indicators and strategies, a backtester that charges you real costs, and live signal export — in one desktop application that runs on your own machine.
Free
No licence, no subscription, no seat count. The source is public and the application runs locally on your machine.
Nothing is sent anywhere. Your data, your scripts and your keys never leave the desk they sit on.
Quantitative
Write indicators and strategies in FlashLang, run them over full history, and study the result with the statistics that matter rather than a single headline number.
Multiple strategies can share one account, so you can see what they do together.
Honest
Fees, slippage, leverage and liquidation are modelled. A resting limit order fills at its own price, not at a gapped open.
Alpha, beta and a per-quarter edge report come as standard, because a curve that is quietly dying should say so.
What it does
Everything listed here is built and working. Chartinger is young, so expect rough edges — but none of it is a mock-up.
Market data
- Three venues
- Binance Spot, Binance USD-M Futures and Hyperliquid, with the symbol universe queried live from each exchange and searchable. Spot and perpetual instruments stay distinct.
- Downloads once
- Full available history per symbol and timeframe, kept in a compact local cache. Reopen a chart days later and it fetches only the candles it is missing.
- Live streaming
- Websocket feeds keep price and chart current, each candle written to the cache as it closes, with a REST fallback when a feed goes quiet.
Scripting
- FlashLang
- An EasyLanguage-style language for indicators and strategies: inputs, variables, user functions, loops, plots and subcharts, with errors reported at the line and column.
- Many studies at once
- Attach as many as you like to a chart. Each gets a chip you can hide without detaching, and a panel for its inputs, colours and individual outputs.
- Fast enough to iterate
- Incremental evaluation, rolling accumulators and memoised pure functions turn a full-history run over tens of thousands of bars into a keystroke.
Backtesting
- Spot and futures
- Maker and taker fees, slippage, leverage caps and liquidation. In futures you size by what you risk between the entry and the initial stop.
- Real order types
- Market, limit and stop orders with a working-order book and cancellation. A limit that actually rested is charged as a maker fill.
- Metrics worth reading
- Return, drawdown, Sharpe, Sortino, Calmar, expectancy — plus alpha, beta and R² against buy & hold, a buy & hold overlay on the equity curve, and a quarter-by-quarter report on whether the edge is decaying.
Going live
- Export a strategy
- A wizard packages it into a standalone runner that downloads its own warm-up history, opens a websocket and runs the strategy bar by bar.
- Sub-millisecond
- The runner does not poll: the feed thread wakes the decision loop the moment a candle lands. From a closed candle to a signal in your Python handler is 0.23 ms at the median and 0.66 ms at the 99th percentile, and it does not drift as history piles up. What is left between a candle and your order is the exchange.
- Signals, not orders
- Decisions are published over a Unix socket as JSON lines: entries, exits, stop and target moves and partial closes, each with its own trade id.
- Your keys stay yours
- The runner never places an order and holds no credentials. A listener you control does the trading; a commented Python example and a README ship with every export.
Where it stands
Chartinger is in an early phase, and says so. It is usable for research today — charts, scripting, backtesting and export all work — but it is not a finished product, the language will move, and you should read a backtest the way you would read anyone else's.
It is free, it runs locally, and it will stay that way. If something is broken or missing, the issue tracker in the repository is the place for it.