Part of the Wickra ecosystem — for R. install.packages("wickraverify", repos = "https://wickra-lib.r-universe.dev") — over the C ABI via .Call, prebuilt library fetched on install.
Recompute a claimed backtest report with the deterministic Wickra engine and
confirm or refute it, from R over the Wickra C ABI hub (.Call). A doctored
claimed_report cannot pass, because verification recomputes rather than
trusting the supplied numbers.
From r-universe:
install.packages("wickraverify", repos = "https://wickra-lib.r-universe.dev")
The package's configure downloads the prebuilt C ABI library for this exact
version from the GitHub release and bundles it, so an ordinary install needs
nothing but a C toolchain (Rtools on Windows) for the thin .Call glue layer. To
build against a local checkout instead, point it at the header and library with
the environment variables below.
The package compiles a small C shim against the wickra-verify C ABI. Point it at the C ABI header and shared library via environment variables:
cargo build -p wickra-verify-c # build the native C ABI library
export WKVERIFY_INC=/path/to/bindings/c/include
export WKVERIFY_LIB=/path/to/target/release
R CMD INSTALL bindings/r
At run time the loader must find the shared library
(LD_LIBRARY_PATH / DYLD_LIBRARY_PATH, or PATH on Windows).
Everything goes through a verifier handle driven by JSON commands — the same command protocol every Wickra binding shares.
library(wickraverify)
verifier <- wkverify_new()
claim <- paste0(
'{"strategy":', strategy_spec, ',', # a wickra-backtest StrategySpec
'"dataset_ref":{"kind":"inline","data":', data, '},',
'"claimed_report":', report, '}' # the report being checked (untrusted)
)
verdict <- wkverify_command(verifier, paste0('{"cmd":"verify","claim":', claim, '}'))
cat(verdict) # the full Verdict as JSON
cmd |
Payload | Response |
|---|---|---|
verify |
{claim, data?} |
the full Verdict
|
explain |
{verdict} |
{ok:true,text:...} |
canonicalize |
{value} |
{ok:true,canonical:...} |
version |
— | {version:...,engine_version:...} |
For files-kind claims, supply the candle data under a top-level data key;
inline claims carry their data already.
Domain errors (a bad claim, an unknown command) come back in-band as
{ok:false,error:...}; only null/UTF-8/panic conditions raise an R error.
Every binding forwards to the same data-driven Rust core, so what this one adds is
the call overhead of R's native .Call interface over the C ABI, not a different result. The core's throughput is
measured by the repository's benchmark suite and the nightly bench.yml run; the
numbers, the machine and how to reproduce them are in the repository
BENCHMARKS.md.
The full guide, the spec reference and the API documentation live in the main repository and the documentation site:
examples/r/
Wickra Verify ships native bindings for Python, Node.js, WASM and Rust, plus a C ABI hub that any
C-capable language (C, C++, C#, Go, Java, R) links against — all forwarding to the
same data-driven, unsafe-forbidden Rust core.
Found a security issue? Please don't open a public issue. Report it privately
via the repository's Security tab ("Report a vulnerability") or email
support@wickra.org with a subject line starting [wickra security]. Full
policy: https://github.com/wickra-lib/wickra-verify/blob/main/SECURITY.md.
wickra-verify is research and engineering tooling, not financial advice. A
verdict attests only that a claimed report is (or is not) the deterministic
result of a given strategy over given data — it makes no claim about the quality,
profitability or future performance of any strategy, nor about whether the data
itself is genuine. Trading carries risk; you are responsible for your own
decisions. wickra-verify is free software you run yourself: no hosted service,
no data collection, no warranty.
Licensed under either of Apache-2.0 or MIT at your option.