IndicaView
IndicaView is a hosted backtesting environment for crypto strategies. It runs in your browser: a workspace with a TradingView-style chart and a live-editable Pine editor, a parameter optimizer that searches hundreds of configurations in parallel Web Workers, and a Python command-line track for sweeps, hyperparameter search and prop-firm challenge simulation.
There is nothing to install and nothing to self-host — IndicaView is a hosted service you open in a browser. Usage will be metered in credits, but no plan, price or credit cost has been decided yet. No broker is ever contacted, and signing in is optional: it manages a profile — see Authentication.
Screenshot pending
awaiting screenshots/workspace-overview.png in public/
Start here
| If you want to… | Go to | Time |
|---|---|---|
| Learn the product from nothing | Tutorial | ~15 min |
| See one worked example, start to decision | Workflow | ~20 min |
| Develop it on your own machine | Getting started | A few min |
| Understand the search algorithms | The Optimizer | Reference |
| Know what it does not prove | Limitations | 5 min |
| See what changed recently | Updates | 5 min |
What it does
| Capability | Where it runs | Engine |
|---|---|---|
| Charting, indicators, Pine editing | Browser, static page | Vela + Vela PineTS |
| Interactive backtest | Browser | Vela PineTS |
| Parameter optimization | Browser, Web Worker pool | Brute, Grid, Random, SA, TPE, GA |
| Run analysis | Browser | Reads persisted runs; starts no workers |
| Dataset sweeps | Python CLI | pinets-cli subprocess |
| Hyperparameter search | Python CLI | Optuna TPE sampler over pinets-cli |
| Prop-firm evaluation | Python CLI | LuxAlgo Monte Carlo engine |
All three tracks read the same .pine source files from app/strategies/, so a strategy
does not need re-authoring to move between them.
The one idea that matters
The product does one thing repeatedly, at three levels of ambition.
| Level | What happens | Cost |
|---|---|---|
| Backtest | One script, one set of parameters, one result | Seconds |
| Optimize | The same script across hundreds of parameter sets, in parallel | Minutes |
| Analyse | Read the finished run: what the best result was, and whether it is real | Seconds |
Why the optimizer exists at all
A single backtest answers “did this work?”, which is a question with a very high false positive rate. Run a thousand parameter sets and you will find an impressive-looking maximum even for a strategy with no edge whatsoever — that is arithmetic, not insight.
The optimizer is therefore not primarily a way to find the best parameters. It is a way to find a region of parameter space that is reliably better than the rest. A broad cluster of good results is evidence. A single spike is noise.
The distinction runs through the whole product: the Analysis surface, the result table, and the workflow are all built to judge the distribution rather than the maximum. See Workflow stages 5 and 6.
How this documentation is written
Pages read in two passes. A page states something plainly first; wherever that statement hides a mechanism, a collapsible region immediately underneath carries the detail — the exact expression, the real default value, the file it lives in, and where the implementation diverges from the textbook description.
You will see two things repeatedly:
- A collapsible region — expand it for the mechanism behind a statement.
- A flagged box — a short constraint or warning you should not skip.
Nothing is hidden behind the disclosure that is not genuinely detail. If a claim matters to your decision, it is in the first pass.
What it does not do
| Not this | Why |
|---|---|
| Not a trading account | No broker or exchange is ever contacted |
| Not connected to a broker | Nothing places, signs or submits an order |
| Not proof of an edge | A backtest run establishes neither parity nor profitability |
| Not a parity guarantee | Pine semantics here are a transpiler’s interpretation |
| Not a portfolio tool | Multi-asset aggregation is deferred |
| Not a thing you install | IndicaView is hosted: there is no local install and nothing to self-host |
How it is put together
Assembled, not hand-rolled. Charting comes from Vela, Pine execution from Vela PineTS,
sweeps from pinets-cli, and challenge simulation from the LuxAlgo Monte Carlo engine. The
project contributes the workspace, the optimizer, the analysis surface and the orchestration —
not a homegrown charting or simulation engine.
Hosted, and deliberately thin on the server. The browser application is a static page served by IndicaView. All computation happens in the page or in Web Workers it spawns, so there is no application backend to deploy, secure or scale — but there is also nothing for you to install or run yourself.
What that buys, and what it costs
Buys: nothing to install, nothing to self-host, no local setup to keep working, and state that stays in your browser.
Costs: the bar cache and every saved run live in your browser’s own storage, so clearing site data destroys them — see Storage & persistence. There is no sync between browsers, and a second machine starts empty.
The one service involved is optional. Supabase sign-in manages a profile and does nothing else; guests keep the entire workspace. It is also where a credit balance will live once usage metering is switched on. See Authentication.
Verified before it lands. No .pine file is delivered without a clean run against a pinned
dataset, and no optimizer change lands without a seeded regression that reproduces previously
recorded trial values exactly.
Honest about limits. Where a documented setting turns out not to be wired up, this site says so and points at the code. See Environment variables and Limitations.
The invariants, and why they exist
Four rules are treated as non-negotiable, and each exists because breaking it is easy and the breakage is silent:
- No strategy ships unverified. A clean run against a pinned dataset, or it is a draft.
- Strategy-mode scripts must declare their costs. Omitting them uses engine defaults, which are optimistic — the easiest way to turn a loser into a winner.
- Runs must be deterministic. Without reproducibility, a regression that still “passes” proves nothing.
- No AGPL source in the tree. Enforced mechanically, not by discipline.
Full statements, with the reasoning behind each, in Architecture decisions.
The shape of the site
| Section | What is in it |
|---|---|
| Start here | Tutorial, workflow, getting started, quickstart, authentication |
| The Optimizer | Overview, the seven algorithms, the search space, execution |
| Architecture | Real vs synthetic fills, strategies, analysis |
| Reference | Endpoints, CLI, storage, environment, architecture decisions |
| Project | Recent updates, limitations, development, troubleshooting |
Where to go next
If you have never used it: Tutorial. It is written to be sufficient on its own.
If you want to judge whether a result is real: Workflow — the loop, the gates, and a worked example that honestly ends in “no edge found”.
If you want to understand the flagship feature: Algorithms.
This site documents the post-Phase-F application. The repository’s own
README.md and docs/architecture.md describe an earlier phase and
disagree with the code in several places — including an invariant that turns out never to
have been implemented. Where they conflict, the code and this site are correct. See
Updates for the specific discrepancies.