vike
Research

vike-cli research

The plane that investigates a signal and fits a model — the step before a strategy exists — by asking the compute daemon to run a compiled study against the hist store it holds.

vike-cli research is a plane, not a single command. It groups the tools that investigate a signal and fit a model — the step before a strategy exists to backtest. backtest computes a strategy's PnL over history; research produces the model a strategy will later be built on. Today the plane has exactly one subcommand, study. It runs from wherever the CLI is invoked, but the work itself happens on the compute daemon: study asks that daemon to run a compiled study next to the hist store the daemon holds, over the same daemon address backtest resolves.

The top level names planes this way on purpose — backtest (compute a strategy over history), research (investigate a signal, fit a model), data (market history), trade (live) — and a study belongs to none of the other three: it drives a LightGBM child process per fold and produces a fitted model, not a PnL curve. research is the area; study is one unit of work inside it, compiled from <project>/user_data/research/studies/rust/<name>/ into a registry by crates/vike-user-research's build.rs.

Usage

vike-cli research <subcommand> [options]

One subcommand exists today:

vike-cli research study --study NAME --recipe FILE --from WHEN --to WHEN [--addr host:port]

--study NAME names the entry in the compiled study registry. --recipe FILE is a recipe, not a profile — study takes its own parameter-file shape, deliberately distinct from backtest's strategy profiles. --from WHEN and --to WHEN bound the range of history the study runs over. --addr host:port overrides the resolved daemon address for that one call.

vike-cli research study --study btc-momentum --recipe recipes/btc-momentum.toml --from 2026-01-01 --to 2026-06-01

Typing -h, --help, or help in the subcommand slot prints help instead of erroring — the same generic help arm every other verb uses. Leaving the subcommand off, or putting a flag where it belongs, prints the plane's usage; there is no bare vike-cli research and no default subcommand.

The daemon address

research study dials the same compute daemon backtest does, through the same address ladder. The configured_addr argument threaded into research's run is config.backtest_addr, resolved once by the CLI's composition root — the middle rung of that ladder — the ladder's own order is not re-derived here, and research.rs's own doc says so directly: resolve_addr is crate::cmd::backtest's, and this file does not repeat it. See backtest for the full ladder. run also receives keys: Option<&NodeKeys> — the daemon-auth credential — threaded straight through to study's own entry point unchanged.

No daemon serves this yet

research's own usage text says so directly:

study    ask the backend to run a compiled study over the hist store IT holds. ⚠ No backend
         serves this yet — it refuses and names `vike-backend study`, which does

On every box today, vike-cli research study reaches a compute daemon that has not mounted a study runner and refuses by name. vike-backend study and the standalone vike-study binary — a different program, and a separate decision — are what actually runs a study; this CLI does not rename or wrap either one, and every failure research study can produce names that one working invocation instead.

study flags

flagmeaning
--study NAMEthe compiled study's name in the research registry
--recipe FILEthe study's own recipe file (not a strategy profile)
--from WHENstart of the history range the study runs over
--to WHENend of the history range the study runs over
--addr host:portoverride the resolved compute-daemon address for this call

More of `study`'s grammar lives past this router

research hands every argument after study straight to study's own parser without re-parsing it. That parser's grammar is disjoint from every other verb in the CLI, and it owns three refusals of its own beyond the flags above: --store and --lightgbm, which name paths on the backend's box rather than this one, and --json, which has nothing to format yet. Their exact wording belongs to study, not to this page.

  • backtest — computes a strategy's PnL over history, once a study has produced a model; dials the same compute daemon through the same address ladder.
  • data — the market-history plane.
  • trade — the live plane; its one-shot verbs are the precedent, inside this CLI, for a sub-verb owning its own argument parser — the shape study uses here.

On this page