BTC/USD — CoinStats

CoinStats exchange prices via a small Cloudflare Worker · volatility + momentum model · practice only · not financial advice
Live BTC/USD
—
Quick setup, from what the data in this page has actually shown so far:
Connecting to CoinStats…

Kalshi 15-minute market

Waiting for the first reading…
¢ (set this to what Kalshi charges you)

Strike price

Type the BRTI you can see and press Enter the moment you read it. The price adjustment updates by itself.
—
—
—
Enter a strike price to see the estimate.
closes undercloses over
—

Cross-exchange reference price

Waiting for the first read…
ExchangePrice24h volume (BTC)
A volume-weighted average price across the public exchanges that make up most of CF Benchmarks’ BRTI — the index Kalshi’s 15-minute BTC contract actually settles against (Coinbase, Kraken, Bitstamp, Gemini, Bullish, itBit). LMAX Digital is a real BRTI constituent too but has no open public API, so it is not included; this is an approximation of BRTI, not a reproduction of it. One slow or unreachable exchange is simply left out of the average rather than failing the whole read — see how many sources answered above. This feeds the “Volume confirmation” check in Trade Readiness below; the page’s own tracked price and model are unchanged.

Trade Readiness

Enter a strike to see the checklist.
Every active gate for the currently favored side, checked all at once -- not just whichever one is currently blocking a trade. A signal can pass several gates comfortably and still fail on one; this shows the whole picture before a trade fires, whether or not auto-trading is on.
Six optional checks below are always shown, either way -- checking a box here is what turns that specific one from informational into something that can actually block a trade. All off by default.
Block onCheckThreshold
Fast vs slow indicators disagree2-min change/Accelerator vs Stochastic/Bollinger/RSI/EMA/30-min
Edge over Kalshi’s ask price, after fee pts
Strike far from the last recorded close> $100
Strike near a 24h high/low or round levelwithin 0.15%
Intra-window consistency
Strike near the volume point of control
Volume confirmation (cross-exchange) rise/min

Momentum

IndicatorReadingLean
Waiting for CoinStats chart history…
Each indicator votes from −1 (down) to +1 (up). Readings that measure the same thing are grouped so they count once: RSI, Stochastic, Awesome and Accelerator are one momentum vote, the EMA-9/21 trend and 30-minute change are one vote, and the order book and taker flow are one vote. Bollinger, prior-candle momentum, the 1-minute EMA cross, the 2-minute change, the price against its hourly VWAP and the mark/index basis are one vote each, and the three volume readings (5-minute, 15-minute and signed) are one vote together, and the composite is the average of the votes. RSI and the 5-minute EMA still come from CoinStats' chart (refreshed every 2 minutes). Stochastic, the Awesome and Accelerator Oscillators, Bollinger and prior-candle momentum use real 15-minute candles from Crypto.com when its signals are on, falling back to bars built by joining three of CoinStats' 5-minute points otherwise (marked "approx.", with approximate highs and lows). The 30-minute change and a 1-minute EMA cross use real Crypto.com candles at those timeframes; the 2-minute change comes from this page's own live prices; and the order book, taker flow, volume and basis come from Crypto.com's trade and book data when ticked. It can only shift the odds a little; the size of the move needed to reach your strike still does most of the work. Abnormal volume (over 3 times the norm) widens the odds instead of pointing a direction. Momentum can enter the odds two ways: as a flat nudge of up to 8 points, or as a drift, which shifts where the price is expected to end up. A drift matters most near the strike and fades for strikes far away, which is how a real drift would behave.

Order flow (Crypto.com)

▾

Last 15 minutes

▾

Paper trading (practice only)

Balance$1,000.00
of balance on one bet
A hard cap, applied to every bet -- manual, auto, Kelly-sized or re-entries -- right before it is placed. If the requested size costs more than this share of your current balance, it is quietly reduced to fit (never increased). This is the single rail every sizing method has to pass through, independent of how the contract count was arrived at.
A bet's value is its contracts at the model's current odds for that side. Stop loss closes it once it is worth that much less than you paid, and take profit once it is worth that much more. Closing sells at the current price, with no fee or spread, after the move has held for 2 seconds on a fresh price. A contract cannot be worth more than 99¢, so a bet bought at 75¢ can gain about 32% at most, and a higher target will never trigger for it (the row says so).
Cancel on an open bet refunds what it cost, as if it had never been placed. That is different from closing, which sells at the current price. The Track record shows whether cancelling helped.
BetExpiresLeft at entryContractsOddsResult
No trades yet.
Each contract costs the model's odds for your side, in cents, and pays $1 if you are right. Over at 75% costs 75\u00a2 and gains 25\u00a2 per contract if it wins, and loses the 75\u00a2 if it does not. Prices are rounded to the cent and kept between 1\u00a2 and 99\u00a2. Bets settle a few seconds after expiry on this page's combined price. One open bet per expiry. When you type the BRTI at expiry into a bet's row, that number also becomes your strike for the next window. If you didn't bet that window, type your strike yourself. Fake money, real logic.

Auto-trading

Auto-trading is off.

Track record

Settled bets0
Correct calls0
Hit rate—
Average model odds—
Net result—
Auto-trade bets—
Stop-loss closes—
Take-profit closes—
Edited bets—
Momentum vs the betBets / hit rate
Accumulating — check back after a few bets.
Time left when the bet was placedBets / hit rateAvg odds
Accumulating — check back after a few bets.
Shares of the window are used, so this works for any expiry: 60% of a 15-minute window is 9 minutes. It shows whether bets placed later, with more of the window already played, are better calibrated than early ones.
If bets where momentum agreed keep beating the ones where it disagreed, the indicator is earning its place. If the two look alike, it is not adding much. This needs a real sample before it means anything.

Cancelled bets

▾
No cancelled bets.
BetExpiresLeft when cancelledRefundedHolding would have beenBRTI check
No cancelled bets.
Cancelled bets are refunded in full and kept out of the Track record: they do not count in the hit rate, the odds check, the time-left table, the net result or the auto-trade count. This box is only a log, so you can see whether cancelling helped.

Window history

▾
Recording the price at every 15-minute close.
Exhaustion study: after a run of windows that all moved the same way
each at least
Every 15 minutes the page saves the price at the close, how big a move is normal for that window, and the BRTI if you typed one for it. Windows it was open for come from live prices. When it was closed, the last 24 hours are filled in from CoinStats' 5-minute chart (approximate: interpolated to the close, and marked as chart data). The study only counts runs of consecutive windows from the same source, and measures each move in standard deviations of that window's own volatility. This is a gauge of how much evidence exists, not a rule yet.

Exchanges

▾
ExchangeLast tradeAgeUp to dateUse
No data yet.
Added to the combined price everywhere: the header, chart, odds and settlement. Use it when this page sits above or below the BRTI by about the same amount every time.

Averages against the BRTI

▾
This page's price, made fromAverage differenceSpreadReadings
No comparisons yet.
Recent readings. Remove any that were typed wrong.
TimeBRTI typedPage vs BRTI
No readings yet.

Save and sync

▾
Starting…
Paste this exact token into the same field on another browser or device to share this paper-trading history there. Anyone with this token can read or overwrite this history, so treat it like a password.
Bring data in from another browser without using the token: paste an export here.
Synced: your paper account, ledger, cancelled bets, BRTI readings, price adjustment, settings, and whether the session is open or closed. Not synced: whether live fetching and auto-trading are switched on (each browser keeps its own, so two devices never trade at once), the credit counter, and live prices. Closing the session on one device closes it everywhere once the other device syncs, so remember to press Start session there too. Unlike the Claude-artifact version, this standalone build does not detect conflicting changes from two devices at once -- the last one to sync wins -- so use one device at a time. Importing replaces this browser's data.

Live fetching

▾

How it works: the price is a combination of last-trade prices on the BRTI's USD exchanges that CoinStats lists. The odds assume no drift by default (you can add your own drift view, or let momentum act as a drift) and use how far Bitcoin has typically moved in 5 minutes over the last hour and the last 24 hours (whichever is larger), plus the age of the combined price, the larger of that and the last 30 minutes' moves on this page is used, widened for the news window or abnormal volume, and fat-tailed by default; then momentum adds a bounded nudge. To see how close this page is to the BRTI, type the BRTI at expiry into a settled bet's "BRTI check" box; it re-settles that bet on the BRTI and records the difference. CoinStats may not list every BRTI exchange, and these are last-trade prices, not order books.