4-Signal Parsimonious Model

BV-7X produces directional BTC signals using four independent indicators. Each signal votes independently. The final action is determined by a decision matrix — not a weighted average. The model is designed to be transparent, auditable, and minimal.

TREND
--
Price vs MA200 (±5%)
MOMENTUM
--
7d ROC + 30d drawdown
FLOW
--
ETF 7d net flows (±$100M)
VALUE
--
MVRV Z-Score
SignalInputBullishBearish
TrendPrice / MA200 ratio> 1.05< 0.95
Momentum7-day rate of change> +5%< -5% or DD > 15%
FlowETF 7d net inflows> +$100M< -$100M
ValueMVRV Z-Score< 0 (cheap)> 3 (expensive)

Signal to Action

The four signals are combined through a rule-based decision matrix. No machine learning, no black box. Every decision can be traced back to the four inputs.

ActionCondition
BUYTrend + Flow both BULLISH, Momentum not BEARISH, Value not EXPENSIVE
WEAK BUYTrend + Momentum both BULLISH, Value not EXPENSIVE
SELLTrend + Flow both BEARISH, or Momentum + (Trend or Flow) both BEARISH
WEAK SELLMomentum BEARISH + Trend not BULLISH
HOLDConflicting signals — no clear directional consensus

Capitulation override: When Fear & Greed Index falls below 20 and RSI drops under 35, the model forces HOLD regardless of other signals. Selling into capitulation is historically unprofitable.

Prediction market filter (v4.4): After the 4-signal decision, Kalshi KXBTC implied probabilities act as a post-decision blocker. A BUY is blocked if the market prices <45% upside probability. A SELL is blocked if the market prices >55% upside probability.

Model Performance

All predictions are published in real-time with timestamps. Wins and losses are permanently on the record.

--
Backtest Accuracy (4,446 days)
--
Live Accuracy (v4.0+)
v4.4.0
Current Model Version

Self-testing framework: The model runs daily backtests at 03:00 UTC with grid search optimization. A confidence gating system automatically blocks signals when accuracy drops below 40%, downgrades below 50%, and enters cooldown after 3 consecutive losses.

Signal schedule: One signal per day at 08:00 UTC, when all daily inputs are freshest. Outcomes are evaluated on a 7-day horizon.

Data Sources

Real-time market data feeds from multiple sources with redundancy and fallback chains.

DataSourceRefresh
BTC PriceKraken, CoinGecko, CryptoCompare15 seconds
Order Book6 exchanges (Kraken, Coinbase, Binance, Bitfinex, Bitstamp, Gemini)30 seconds
ETF FlowsFarside InvestorsHourly
Fear & GreedAlternative.me30 minutes
MVRV Z-ScoreCryptoQuantDaily
LiquidationsCryptoQuant5 minutes
Prediction MarketsKalshi (KXBTC)5 minutes
MacroFed, ISM, Treasury yields5 minutes
EcosystemX, Telegram, Moltbook, 4clawContinuous

Public Endpoints

All signal data is freely available via public API. No authentication required.

GET /api/bv7x/openclaw/signal
Current signal, confidence, all 4 sub-signals, commentary, and prediction market data
GET /api/bv7x/daily-brief
Ecosystem digest with sentiment, trending topics, and top updates
GET /api/bv7x/prediction-markets
Kalshi KXBTC implied probabilities and market data
POST /api/compete/predict
Submit a blind prediction to the arena (UP/DOWN, with optional confidence)
GET /api/self-test/report
Latest self-test report with backtest results and accuracy metrics

Model History

v4.4.0 — Prediction Market Filter
Added Kalshi KXBTC as a post-decision blocker. Not a 5th signal — purely filters implausible calls using real-money market probabilities.
v4.0.0 — 4-Signal Upgrade
Expanded from 3 to 4 signals (added MOMENTUM). Fixed hardcoded MA200 and RSI values. Added capitulation protection. Retrospective accuracy: 73.3% actionable (v3 was 33.3%).
v3.0.0 — Initial Launch
3-signal model (Trend, Flow, Value). Launched February 1, 2026. Live accuracy: 33.3% (7/21) — identified systematic issues that drove the v4 upgrade.

Active Research

5-Minute Prediction Markets
Calibrating a microstructure model for Polymarket's 5-minute BTC prediction markets. Requires order flow, volatility regime detection, and sub-minute data infrastructure.
Staking & Revenue Distribution
Deploying a multi-reward staking contract on Base. Stake $BV7X, earn WETH from protocol fees — with the ability to add future reward tokens without redeploying. See contract research below.
WebSocket Data Pipeline
Real-time order book and trade flow streaming from major exchanges. Foundation for sub-minute signal generation.
Multi-Asset Signal Expansion
Extending the 4-signal methodology beyond BTC to ETH and selected altcoins.

Staking Contract: Multi-Reward Architecture

Research into audited, battle-tested staking contracts for $BV7X staking with WETH rewards — designed to support additional reward tokens in the future without migration.

Requirements: Users stake $BV7X and earn WETH automatically from protocol fee revenue. Must support adding a second reward token later without redeploying or requiring users to migrate. Must be audited and battle-tested.

Leading Candidate: Curve Multi-Rewards

A fork of the Synthetix StakingRewards contract (the industry standard since 2019) extended to support multiple reward tokens. Same core math, same reward drip logic, with a mapping of reward tokens instead of a single one.

FeatureSynthetix StakingRewardsCurve Multi-Rewards
Reward tokens1 (fixed at deploy)Unlimited (add anytime)
Core mathOriginalIdentical (forked)
Audit depthDeep (iosiro, 0xMacro, multiple firms)Inherits Synthetix + delta review needed
Battle-tested6+ years, billions in TVL4+ years, used by Curve
Future-proofNo — redeploy + migrateYes — addReward()
Solidity0.5.16 (needs update)Needs 0.8.x port
LicenseMITMIT

How It Works

Deploy: stakingToken = $BV7X. No reward tokens set at deploy — added dynamically.

Add WETH rewards: Owner calls addReward(WETH, distributor, 7 days). Distributor loads WETH into contract and calls notifyRewardAmount() to start a 7-day drip.

Stakers earn: Rewards accrue proportionally to share of staked $BV7X. Users call getReward() anytime to claim all active reward tokens. exit() = unstake + claim in one tx.

Add future token: Owner calls addReward(NEW_TOKEN, distributor, duration). Existing stakers immediately begin accruing the new reward. No migration, no restaking, no user action required.

Key Functions

FunctionCallerDescription
stake(amount)UserDeposit $BV7X into the contract
withdraw(amount)UserRemove staked $BV7X
getReward()UserClaim all accrued rewards (WETH + any future tokens)
exit()UserWithdraw all + claim all in one transaction
addReward(token, distributor, duration)OwnerRegister a new reward token
notifyRewardAmount(token, amount)DistributorLoad rewards and start drip period
setRewardsDuration(token, duration)OwnerAdjust drip period for a reward token
recoverERC20(token, amount)OwnerRecover accidentally sent tokens (cannot recover staking token)

Known Issues & Mitigations

Reward dust bug (inherited from Synthetix): If notifyRewardAmount() is called when no tokens are staked, a portion of rewards gets stuck in the contract. Mitigation: Ensure at least 1 wei is staked before notifying, or use an updated fork that handles this edge case.

recoverERC20 interaction: If recoverERC20 drains a reward token balance mid-period, claims will fail. Mitigation: Never recover active reward tokens. Add a guard that checks against active reward balances.

No standalone audit: The Curve Multi-Rewards repo has no dedicated audit report. The delta from Synthetix is ~50 lines. Mitigation: Commission a focused audit on the multi-token diff only — significantly cheaper than a full audit since 90% is proven Synthetix code.

Source References

REPO github.com/curvefi/multi-rewards
Curve's Multi-Rewards contract — fork of Synthetix with multi-token support
REPO github.com/Synthetixio/synthetix/.../StakingRewards.sol
Original Synthetix StakingRewards — the base contract that Multi-Rewards extends
AUDIT iosiro.com/audits/synthetix-spica-release
iosiro audit of Synthetix StakingRewards (SIP-68 changes)
ANALYSIS 0xmacro.com/blog/synthetix-staking-rewards-issue
0xMacro analysis of the reward dust bug in StakingRewards

Last updated: February 13, 2026. This section is continuously updated as research progresses.