One seed, one market
A fixed portable PRNG (SplitMix64 seeding xoshiro256++) lives only in the Rust core, so a given seed yields the byte-for-byte identical stream on every platform and through every language binding.
Deterministic synthetic market microstructure — OHLCV, order book, trades and funding from a single seed. A GenSpec is data, not code — byte-identical across ten languages.
A generation is a GenSpec: a seed, a bar count, a start_price, a list of regimes and a microstructure block. The regimes shape the price path; the microstructure block shapes the book, trades and funding.
{
"seed": 42,
"bars": 500,
"start_price": 100.0,
"regimes": [
{ "kind": "trend", "len": 300, "drift": 0.002, "vol": 0.01 },
{ "kind": "chop", "len": 200, "drift": 0.0, "vol": 0.02 }
],
"microstructure": { "book_depth": 10, "spread_bps": 3.0, "trade_rate": 12.0 },
"funding": { "interval": 480, "base_rate": 0.0001 }
}The same synthetic market from every language — native Rust, Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java and R.
pip install wickra-synthConstruct a Synth from the JSON spec, then drive it with command(json) -> json. Every binding returns the same bytes for the same seed.
import json
from wickra_synth import Synth
spec = json.dumps({
"seed": 42,
"bars": 20,
"start_price": 100.0,
"regimes": [{"kind": "trend", "len": 20, "drift": 0.002, "vol": 0.01}],
"microstructure": {"book_depth": 5, "spread_bps": 4.0, "trade_rate": 8.0},
})
synth = Synth(spec)
out = json.loads(synth.command(json.dumps({"cmd": "generate"})))
print(len(out["candles"]), "candles from seed 42")Wickra Synth is part of the Wickra ecosystem. Its output mirrors the JSON shapes of wickra-core, so a synthetic stream drops straight into a backtest, a feature build or a live chart — the same numbers, from a reproducible seed.
Wickra Synth is a software library, not a trading system, and comes with no warranty — use at your own risk.