Tokenised equities (bStocks) on BNB Chain trade continuously, 24/7. Their underlying references — NYSE and Nasdaq-listed stocks — only trade during exchange hours (~9:30 am–4 pm ET, Monday–Friday). Over a weekend, the on-chain price of a bStock can drift away from the last known reference price.
Hypothesis: This drift is transient. When NYSE/Nasdaq re-opens on Monday, the on-chain price mean-reverts to the reference anchor. A sufficiently large drift during market closure is therefore a statistically motivated mean-reversion signal.
This strategy does not predict direction in the conventional sense — it bets on gravitational pull back toward a known fundamental reference point (the reference stock's closing price).
| Symbol | Underlying Reference |
|---|---|
| NVDAB | NVIDIA Corp (NVDA) |
| TSLAB | Tesla Inc (TSLA) |
| CRCLB | Circle Internet Group (CRCL) |
| MUB | Micron Technology (MU) |
| SNDKB | SanDisk Corp (SNDK) |
Token contracts are on BNB Chain (BEP-20). Prices are sourced from CMC Skill Hub
(MCP tool) for agent-context invocations, and from the CMC REST API
(/v1/cryptocurrency/quotes/latest) for VPS cron automation.
The agent snapshots current prices via CMC Skill Hub on a recurring basis (every 30–60
minutes, cron-driven on Contabo VPS). Each snapshot is appended to
data/weekend_snapshots.json:
The first snapshot in the file is the anchor (t0).
All drift calculations are relative to this anchor.
Where:
price_t0 = price of the token in the first snapshot (the anchor)
price_t = price of the token in the most recent snapshot
drift_t = signed fractional value; positive = price moved up from anchor
Drift is expressed as a percentage in all outputs. Basis-point representation
(drift_bps = round(drift_pct × 10 000)) is used for on-chain storage.
| Condition | Signal | Direction logic |
|---|---|---|
| |drift| > 1.5% | LONG or SHORT | Direction is opposite to drift sign (reversion bet): drift up → SHORT; drift down → LONG |
| |drift| < 0.3% | CONVERGED | Price has returned to anchor; exit or skip |
| 0.3% ≤ |drift| ≤ 1.5% | FLAT | Insufficient edge; no position |
Thresholds are hard-coded in drift_engine.py and must not be changed
without explicit sign-off.
Confidence is a 0–100 integer included in every signal output.
| Signal | Confidence calculation |
|---|---|
| LONG / SHORT | 60 at threshold (1.5%), scales linearly to 85 at 3× threshold (4.5%), capped at 85 |
| FLAT | Fixed 50 (no directional edge) |
| CONVERGED | Fixed 90 (strong mean-reversion completion evidence) |
This is not a statistical p-value — it is an ordinal confidence band for on-chain
logging and human-readable output. The registry contract stores it as an integer
0–100 in the confidence field of logSignal.
Every signal emitted by the system must include this reasoning block, verbatim:
The logId emitted by BQuantSignalRegistry.logSignal() on BSC
testnet links the on-chain event to this off-chain block. The reasoning text is
intentionally kept off-chain to minimise gas and because the README/demo carries
the narrative; the chain proves what was logged.
Contract: registry/BQuantSignalRegistry.sol
Network: BSC Testnet (chain ID 97)
Address: 0xFFCC472c47cf0a8168545a8318832950f7C6F453
Deploy tx: 0x2979…7203 ↗
Entry point: logSignal(token, signal, driftBps, confidence)
Event emitted: SignalLogged(logId, token, signal, driftBps, confidence, timestamp)
driftBps is the drift expressed in basis points (integer),
e.g. drift_pct × 10 000. On-chain signal enum: FLAT=0, LONG=1, SHORT=2.
CONVERGED maps to FLAT for gas efficiency.
Agent identity registered via bnbagent ERC-8004 SDK: agentId = 1470, registration tx: 0x7d24…c16f ↗.
Loading…