The full system

The whole machine, end to end

This is the honest, complete map — the language at the bottom, the engines that search it, and the app you drive it from. It goes into enough of the architecture to show the work is real, and stops short of the parameters that only keep working while they're private.

The stack

Five layers, one artifact carried through all of them

A single strategy is written (or evolved) at the bottom and carried upward unchanged — compiled, searched, simulated, deployed, and held to account — with nothing swapped out between stages.

01MuseScriptthe language every strategy is written in
02Indicator corpusa large, readable, forkable library of primitives
03Kestrel enginessimulate · evolve · distill — where strategies come from
04The appphone · desktop workstation · web, meshed into one
05The disciplinepre-registration, honest costs, an equally-weighted NO-GO ledger

01 · The language

MuseScript — a real language, not a macro box

Every strategy — whether you wrote it by hand or the engine evolved it — is a MuseScript program underneath. It is a real language built from scratch for markets: functions, types, classes, enums, pattern matching, templates and compile-time metaprogramming, over first-class market primitives tuned for throughput.

Compiles three ways

The same source runs three ways: a tree-walking interpreter (steppable, the one the debugger drives), emitted JavaScript (fast), and a real WebAssembly module (bare-metal). A cross-runtime gate re-checks that all three produce byte-identical results — same trades, same final equity, max delta zero — on every change. A strategy that behaves differently depending on how it was compiled is a bug we fail the build on, not a footnote.

Provably identical, or the build fails

The three-backend parity gate is not a marketing line — it is a test that runs on every change and holds max delta at exactly zero. Correctness is enforced mechanically, not asserted.

Built to be searched

For search, a strategy also lowers to a neural-style AST where each node carries its own credit, memoises partial evaluations across bars, and can claim a JIT slot on the hot path. That is what lets the evolutionary engine grade thousands of variants a second without re-running each one from cold. The canonical form stays a plain, readable program; the fast form is a working copy the engine drives.

Math kernels leave the sandbox

The pure numeric functions underneath a strategy — the indicator math — also emit to plain Python or numba-JIT, so the same kernels drop into an existing Python quant stack without a rewrite.

Readable stays canonical

Classes, enums and pattern matching keep strategies legible; the fast neural/JIT form is a derived working copy. You never lose the version a human can read and audit.

02 · The corpus

A deep indicator library — all of it readable

The indicator library is large, ported from established references, and — this is the point — none of it is a black box. Every indicator is MuseScript source you can open, read, fork, and re-wire. The list below is representative, not exhaustive.

Moving-average & trend

EMA · SMA · WMA · DEMA · TEMA · Hull · KAMA · ALMA · VWAP · linear-regression channel · median channel

MACD family

MACD · MACD histogram · zero-lag MACD · volume-weighted MACD · MACD-Fix · MACD-Ext · APO · derivative oscillator

Bands & channels

Bollinger Bands · Keltner · Donchian · Donchian-stop · squeeze detection

Fourier suite

spectral decompose / recompose · dominant-period detection · cycle projection · decycler oscillator

Fibonacci suite

retracement · extension · projection · fans · arcs · channels · time zones · confluence · Fibonacci pivots

Harmonic & pattern

Gartley · swing/pivot structure · confluence scoring

Oscillators & momentum

RSI · Stochastic · Chaikin oscillator · Elder impulse · STC · rate-of-change · money-flow

Every one, forkable

Open any indicator's MuseScript source in the app, change it, and the whole engine runs your version. Nothing here is a sealed component.

The on-ramp

Bring your Pine — and find out where it lied

Paste a TradingView Pine script and get portable MuseScript back, converted in your browser. A Pratt parser over an indentation-aware lexer builds a real Pine AST, which is lowered node-by-node to a MuseScript AST — a structural translation, not a text substitution — against a map of ~85 built-ins. Anything that can't be mapped faithfully is flagged inline with a line-cited TODO rather than translated silently.

Structural translation, audited coverage

Pine AST → MuseScript AST, node by node, against ~85 mapped built-ins. Unmapped constructs are flagged with a line-cited TODO — honest partial coverage beats coverage that's quietly wrong.

The repaint audit

The converter also runs a repaint audit: lookahead and future-peeking patterns — the ones that make a backtest look better than the strategy ever traded — are surfaced as warnings on the exact line they occur. We tell you where your strategy lied to you. That is a feature a platform whose retention depends on pretty backtests has no reason to build.
Convert a script in your browser →

03 · The engines

Kestrel — simulate, evolve, distill

Kestrel is the simulation, evolution and distillation engine. It studies the thing that produces the price — the participants and their incentives — rather than curve-fitting the printed series. The pieces below are described at the level of what they do and how they're built; the specific edge parameters are the part we keep.

Murmuration — the inward eye

A synthetic market of thousands of distinct participants moving as one emergent flock. Violent moves, calm turning to storm, crowding and retreat arise on their own — nobody scripts the events; they fall out of the agents interacting.

Lodestar — the outward eye

Reads the real tape and estimates fair value as a calibrated confidence range, not a single point guess — a probability cloud, conformally calibrated so the range means what it says.

Distill — the sanity check

Compresses whatever survives into a compact, readable rule set (a tree distiller), then re-fits it from scratch to confirm the edge was in the strategy, not the search.

The evolutionary substrate

Population search with quality-diversity (MAP-Elites) and multi-objective walk-forward selection (NSGA-II), plus speciation and novelty pressure so the search explores structure instead of collapsing onto one over-fit shape. Fitness is robustness-adjusted across windows — a strategy that only works in one regime scores like one that only works in one regime.

Honest by construction

Turnover is charged its real cost inside the loop, not after — an early bug that flattered results by under-charging turnover is exactly the kind of thing the discipline layer exists to catch, and did. The engine is built to talk you out of false edges, not into them.

04 · The app

Three runtimes, one brain

One React + Vite codebase, three runtimes: a phone-native trader (Capacitor/Android), a full desktop workstation (Electron, with a bundled local compute node), and a web surface. Signed into one account and meshed over an encrypted device link — the strategy you evolve on the couch is live on your desk before you sit down.

Strategy Studio

A full in-browser IDE: MuseScript editor, three-tier run (interp/JS/WASM), a stepping debugger, and notebook cells — edit, run, and dissect a backtest without leaving the page.

Forge

A visual trade-logic editor — draw a rule as a graph, and it is the same MuseScript underneath. Read it as a diagram or as code, whichever you think in.

Swarm

Deploy strategies as live constructs in an ensemble you can rewire at any node. The scheduler suggests books on a cadence; a human approves every order. It never places a trade on its own.

glcharts

A WebGL2 charting engine — every indicator is viewable and forkable on the chart, sourced from the same MuseScript registry the engine runs.

Multi-brokerage, read-first

Link Kraken, Robinhood, Fidelity and more to see one portfolio. Execution is a human-gated hand-off to your own linked accounts — we route nothing and take custody of nothing.

Local-first, CPU-only

Heavy compute runs on hardware you control — a bundled local node on the desktop, no GPU required, no cloud brain. The relay is a bridge between your devices, not a custodian of your edge.

05 · The discipline

The rigor underneath every claim

None of the above matters if the evidence is soft. Every claim we publish is pre-registered: hypothesis, universe, costs and fold boundaries are written down before the out-of-sample window opens, and the tape after that line stays unread until the score is locked.

Pre-registered folds

Hypothesis, universe, costs and fold boundaries fixed before evaluation. No peeking, no post-hoc tuning dressed as research.

Leak-controlled

Past and future kept strictly apart, with purge and embargo around each fold and point-in-time data — no accidental glimpse of tomorrow.

Costs that bite

Spreads, fees and impact hit every trade, past and future, so a pretty equity curve still has to pay its way.

NO-GOs logged equally

Every negative result is recorded with the same weight as a positive one. The ledger of honest NO-GOs is the asset — a vendor optimising for a good story would bury them.
See the flagship's pre-registered result →

The honest omission

What we deliberately won't tell you

You'll notice we describe architecture and rigor in detail, and never hand you the specific features, universes, or parameters that generate an edge. That is deliberate, and it's the honest choice in both directions. An edge that's published stops being an edge — anything we dumped here would be arbitraged or would adverse-select against the people who trusted it. So we show you the method is sound, subject it to pre-registered tests you can scrutinise, let it run on your own machine, and sell you the tooling and the rigor — never the alpha. A vendor who offers to hand you their signals is telling you something about how much those signals are worth.

Everything here you can check for yourself: run the engine in your browser, read every indicator's source, translate your own Pine and see the repaint flags, and hold our published numbers to their pre-registration. We'd rather earn the claim than assert it.