Crash early-warning seismograph
Folds open interest, funding, order-book and liquidation events into severity-scored alerts across thousands of perp symbols โ the market state price-only tools never see.
A crash early-warning seismograph for perpetual futures: OI delta, funding flip, book imbalance, liquidation clusters and OI/price divergence, in ten languages. Deterministic, byte-identical.
A RadarSpec is a list of weighted signals, an optional severity threshold, and a top-N limit. Each signal names a kind and its numeric params.
{
"signals": [
{ "kind": "oi_delta", "params": [2.0, 0.1], "weight": 1.0 },
{ "kind": "funding_flip", "params": [0.0005], "weight": 2.0 },
{ "kind": "book_imbalance", "params": [1.0], "weight": 1.0 },
{ "kind": "liq_cluster", "params": [5.0, 30.0], "weight": 1.5 },
{ "kind": "oi_price_divergence", "params": [2.0, 0.1], "weight": 3.0 }
],
"threshold": 0.2,
"limit": 3
}The report keeps every symbol at or above threshold and returns the top limit sorted by severity โ each RadarAlert carrying the per-signal factor map that produced it.
The same radar 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-radarConstruct a Radar from the JSON spec, then drive it with command(json) -> json. Every binding returns the same bytes.
import json
from wickra_radar import Radar
spec = json.dumps({
"symbols": ["AAA"],
"signals": [{"kind": "funding_flip", "params": [0.0005], "weight": 2.0}],
"threshold": 0.0,
})
radar = Radar(spec)
response = radar.command(json.dumps({"cmd": "scan", "events": events}))
report = json.loads(response)
for alert in report["alerts"]:
print(alert["symbol"], alert["severity"])Wickra Radar is part of the Wickra ecosystem. Its signals consume the same typed microstructure feeds โ open interest, funding, order-book, liquidations โ that wickra-core and the backtester use, so a live alert and a backtest see identical numbers.
Wickra Radar is a software library, not a trading system, and comes with no warranty โ use at your own risk.