Everything on this page is generated from the same registries the dashboard
renders from. It is not a hand-written summary that can drift out of date: the readings, claim
classes, completeness expectations and per-source method notes are read at build time from
their canonical homes.
WHAT KIND OF CLAIM
| observed | Measured by us from the system that owns the number (exchange API, chain RPC). Wrong only if that source is wrong or we parsed it wrong. |
| reported | Asserted by a named third party and relayed here with attribution. We are not vouching for it. Check the linked source. |
| derived | Computed by us from the inputs above by a stated rule. Reproducible from them, and no stronger than the weakest input. |
| interpreted | Our reading, not a measurement. Argue with it. It never appears without the measured or reported basis it was drawn from. |
SOURCE RELIABILITY TIERS
| Tier | Kind | Definition | Examples |
|---|
| T1 | Primary, machine-read | Read directly by us from the system that owns the fact, with no human or aggregator in between. If this is wrong, either the system is wrong or our parser is. | Exchange order books and tickers; chain RPC for token supply; our own endpoint probes. |
| T1 | Primary document | The instrument itself, published by the body with authority over it. Authoritative for WHAT THE RULE SAYS. Not evidence about market behaviour. | POJK / PBI / UU texts; OJK and Bappebti circulars; official gazette entries. |
| T2 | Official statistic | A regulator's or agency's own aggregate. Authoritative in scope and definition, but published on a lag and built from what licensees reported to them, not from the market. | OJK monthly investor and transaction figures. |
| T3 | Third-party aggregator | A commercial data provider's figure. Convenient, wide coverage, and opaque: their inclusion rules and wash filtering are not ours and are not fully published. | CoinGecko exchange volumes; DefiLlama; Chainalysis index. |
| T3 | Venue self-reported | A venue's claim about itself. Kept because excluding it would leave a hole, labelled because the incentive to inflate is structural, not hypothetical. | Exchange-published 24h volume where no independent measurement exists. |
| T4 | Captured channel message | A message from a monitored public channel. Evidence that something was SAID, at a time, by an account. Never evidence that it is true. | Telegram announcements and member messages behind RISK INTEL and NEWS PULSE. |
| T4 | Our field read | Our own judgement from operating in this market. Genuinely useful and genuinely unverifiable; it is labelled interpreted everywhere it appears. | Distribution reality; entry-structure commentary; the impact path on catalysts. |
DO NOT INFER
Do not infer that a venue is insolvent from an absent proof-of-reserves page.
CUSTODY DISCLOSURE measures DISCLOSURE PRACTICE from outside. Zero of six venues publish a verifiable page; that is a fact about publishing, and reserve proof would not be solvency proof even if they did.
Do not infer market size from our volume total.
INDO CEX VOLUME aggregates the venues we can measure, mixing direct APIs with aggregator figures, and the credible core deliberately excludes wash-suspect rows. The OJK monthly figure beneath it is the regulator's own count and the two are not the same measurement.
Do not infer that a venue is safe or unsafe from the venue scorecard.
It reports per-dimension measurements and refuses a composite score. Averaging measured with unmeasured dimensions would rank venues by what is observable.
Do not infer a fill price from the slippage bands.
Depth is what the VISIBLE ladder implies. Venues apply market-order protection and price bands and would reject a large order rather than fill it at the far end of a thin book. Read a large-band figure as book thinness.
Do not infer causation from the anomaly panel or the archive series.
Both are threshold and correlation surfaces. A coincidence of a regulatory date and a volume move is a coincidence until someone does the work.
Do not infer that a risk-intel row is a confirmed incident.
They are DETECTIONS, labelled venue-said or member-said, each linked to its source message. A notice repeated 62 times is one notice, and the panel says so.
Do not infer Indonesian builder activity from the builder-signal count.
The sensor is nine global English-language BD channels. Zero of 164 postings mention Indonesia, which measures our channel list, not the market.
Do not infer total cost from COST OF ACCESS or IDR CORRIDOR.
Both publish a FLOOR from components with a verified source. Fees, IDR rails, network withdrawal and time-to-cash-out are excluded and named. The real number is higher, never lower.
Do not infer that Indonesia will follow a jurisdiction shown beside it.
GLOBAL REG places published positions next to each other. Useful for direction, not for prediction.
Do not infer user counts from the adoption figures.
OJK counts registrations at licensed exchanges and Chainalysis ranks estimated on-chain activity. Different things, neither is people, and one person may hold several registrations.
BLIND SPOTS
| Area | What we cannot see | Why | Status |
|---|
| Indonesian crypto media | No Indonesian outlet is in our capture pool. | Zero of 115 monitored Telegram channels are Indonesian; the local outlets publish mainly to Instagram, which has no open feed. | Partly closed: Indonesian coverage now comes from 10 PRIMARY regulator sources rather than media reposts, which is arguably better. IG transport is PARKED. |
| Trading fees | No venue fee is published on this dashboard. | No Indonesian venue exposes a fee endpoint. The marketing sites are JS shells and the help centres that carry the numbers sit behind Cloudflare. Measured across five venues, three layers deep. | OPEN by design. Filling it is a manual read-and-record pass, one venue at a time, each number with its source URL and check date. There is no scraper. |
| Indonesian hiring | Local job activity is invisible to us. | Our job sensor is nine global BD and partnerships channels assembled for a different purpose. An Indonesian venue hiring locally can never appear in it. | OPEN. Needs local sources, not better parsing. |
| Retail flow | We see venue-level aggregates, never user behaviour. | Deliberate. On-chain work is restricted to known public entity addresses, counts and set cardinalities only. No address is ever recorded and a test asserts the payload contains no 40-hex string. | CLOSED by policy, permanently. No profiling of individuals, no inferring nationality from wallets. |
| Off-exchange and OTC | OTC desks and P2P are not measured at all. | No public data source exists for them. Their absence means our volume figures understate real Indonesian crypto activity by an unknown amount. | OPEN, and likely permanent. |
| History before 2026-07-25 | The time series starts when the archive did. | Until 2026-07-25 every payload was overwritten every 30 minutes and the one real series was a rolling 7-day window that deleted its own tail. That data is gone and cannot be recovered. | CLOSED going forward. The archive is append-only from 2026-07-25. |
PER-DATASET METHOD
Indonesian CEX 24h volumeobserved
Per-venue 24h traded volume in IDR. source_type distinguishes a venue's own API from an aggregator's figure; in_credible_core marks rows surviving the wash filter.
What it showsWhat Indonesians actually traded in the last 24h, live from exchange APIs, with the OJK monthly figure drawn underneath as the regulator's own count. Read the gap between them, not either alone.
Basisexchange APIs for live volume; the OJK monthly figure beneath it is the regulator's own claim.
MethodDirect keyless exchange API where verified (Indodax, Luno-ID, Bittime). CoinGecko raw exchange-reported 24h volume (BTC->IDR) for Indo-domiciled exchanges whose direct endpoint is key-gated or geo-blocked. App-only + no-volume-API players excluded.
Excluded- Pintu Pro (keyless api.pintu.co.id has price, no 24h-volume field)
- Bitwyre (documented /public API dead, host serves a web app)
- Ajaib Kripto (Cloudflare WAF 403 even w/ browser headers on BOTH the web app AND the documented API host api.ajaib.co.id; the /coin/internal/v1/price endpoint also needs ECDSA-signed auth + Ajaib exposes NO public 24h-volume endpoint. Adding = CF-bypass + API keys + request-signing for price-ONLY/no-volume. Checked 2026-07-13, not worth it)
- Upbit ID (Komdigi/Biznet DNS-blocked, still nebeng global/KR infra; shown via CG)
- Pluang / Nanovest / Triv (app-only, no public API)
Notes- Indodax self-reports Rp260B vs CoinGecko Rp222B (self-report vs aggregator gap).
- Direct-endpoint audit 2026-07-12: Bittime wired DIRECT (openapi.bittime.com, keyless). Tokocrypto market-data is key-gated (code:3701), Bitwyre /public API is dead (404/web-app), Pintu keyless API has price but no volume field -> CoinGecko/excluded. Upbit-ID is Komdigi-blocked at the ISP (Biznet RPZ DNS-sinkhole of id-api.upbit.com -> HTTP 000; a Jakarta/Biznet IP TRIGGERS the block, does not fix it); a DoH bypass returns live data (verified 2026-07-13) but Upbit is kept on CoinGecko per operator call. Ajaib has its own anti-scrape WAF (HTTP 403 even with full browser headers). 2026-07-13: BTSE Indonesia wired DIRECT via api.btse.id (local OJK entity, keyless market_summary IDR-quote vol; global api.btse.com is Komdigi/Biznet DNS-blocked). Reku wired DIRECT via api.reku.id /v2/ticker (its ticker carries IDR-quote vol; was wrongly excluded as market-data-only). 2026-07-17: Mobee wired DIRECT+AUTH via open-api.mobee.io /v1/markets/summary (authenticated, read-only); prior 'app-only, no public API' belief was stale (Mobee shipped an Open API). base_volume on IDR_ pairs = IDR turnover (verified quote_volume*last==base_volume). IDR-QUOTE PAIRS ONLY: Mobee's USDT book is wash-dominated (USDT_AMZNX alone self-reports ~$1.9B/24h = 97pct of its USDT volume, vs ~$160k on every other USDT pair) so USDT/USDC pairs are excluded; IDR-quote sum stays >Indodax so the wash-guard still keeps Mobee out of credible_core.
- BTSE ID, Bittime, Mobee report volume exceeding Indodax (the market leader), likely wash/incentivized-inflated. total is an UPPER BOUND. credible core (ex-BTSE ID/Bittime/Mobee) = Rp438B.
Completenesscomplete · 9 items · 9 venues: 6 direct + 3 via CoinGecko
Fieldsvenue, volume_idr_24h, source_type, in_credible_core, note, as_of
Median bid-ask spread by pairobserved
Median top-of-book spread across quoting venues, per pair, with the tightest and widest venue named.
What it showsTwo different costs that were two panels until they confused people. The GAP is how far apart venues price the same asset. The SPREAD is the bid-ask width inside one venue. Both were labelled spread, which is why you could read two numbers and reconcile neither.
Basislive quotes from each venue's own API; the cross-venue gap and the bid-ask spread are both computed from them and are DIFFERENT quantities.
Completenesscomplete · 8 items · 8 venue/pair quote rows across 6 venues
Fieldspair, median_spread_pct, venues_quoting, tightest_venue, tightest_spread_pct, widest_venue, widest_spread_pct, dislocated_venues, as_of
Size-banded slippage by venuederived
VWAP slippage walking the live ladder at three order sizes. Rows with a null band are venues that could NOT be measured, kept in so coverage is visible.
What it showsHow much the price moves against you as your order gets bigger. The bands show where a venue stops being able to fill you at the quoted price.
Basissize-banded slippage computed from observed orderbooks.
MethodVWAP of a market order walked through the live ladder, versus mid. Buy walks asks, sell walks bids. Unfillable bands report max reachable rather than an extrapolated price.
CaveatThis is what the VISIBLE LADDER implies, not a guaranteed fill. Venues commonly apply market-order protection or price bands and would reject a large order rather than fill it at the far end of a thin book, and the ladder itself moves between snapshots. Read a large-band figure as a measure of book thinness, not as a price anyone actually paid.
Completenesscomplete · 5/6 status in ok · 6 venues probed; Mobee has no public orderbook, so 5 is the healthy ceiling
Fieldspair, venue, band, side, slippage_pct, fillable, status, as_of
USDT/IDR vs official USD/IDRderived
Stablecoin rate against the official interbank rate. Series points carry days_before_last rather than a date, because the source supplies no per-point date.
What it showsWhat it costs to move value out of rupiah, in two steps: whether the stablecoin rate sits off the official rate, then that compounded with execution cost. The Indonesian leg only, so the real journey always costs more.
Basisdeviation from the official rate, then compounded with execution cost. Indonesian leg only, so the full journey always costs more.
SourceCoinGecko + Yahoo + Indodax
Fieldsmetric, days_before_last, usdt_idr, usdc_idr, official_usd_idr, deviation_pct, as_of
IDR stablecoin supply, chain-verifiedobserved
Circulating supply read from the chain rather than from the issuer, split per chain. token_total_supply_idr repeats the token-level total on every row.
What it showsSupply of each IDR stablecoin, verified against the chain rather than taken from the issuer.
Basissupply read from the chain, not from the issuer.
Sourcepublic JSON-RPC (keyless eth_call / getTokenSupply)
Completenesscomplete · 4 items · IDRX, IDRT, IDRP, XIDR
Fieldstoken, chain, supply_idr, token_total_supply_idr, share_of_token_pct, verified_on_chain, as_of
Indonesian crypto regulation indexreported
Index of Indonesian crypto rules with agency, status and effective dates. Summaries are ours; the instruments are primary.
What it showsThe whole Indonesian rulebook, quick-reference at the top and the full text per law below it. The reference layer under the delta panel, which is where you look for what CHANGED.
Basisprimary regulator texts.
Completenesscomplete · 7 items
Fieldsgroup, ref, title, agency, status, date, summary, impact
Cycle-level time seriesobserved
One row per 30-minute data cycle from the append-only archive. This is the only dataset here with real history; it starts when the archive did, not when the dashboard did.
What it showsWhat Indonesians actually traded in the last 24h, live from exchange APIs, with the OJK monthly figure drawn underneath as the regulator's own count. Read the gap between them, not either alone.
Basisexchange APIs for live volume; the OJK monthly figure beneath it is the regulator's own claim.
Fieldsts, cex_total_idr, cex_core_idr, venues_reporting, usdt_idr, usdt_idr_reconstructed, official_usd_idr, fx_deviation_pct, spread_btc_idr_pct, spread_usdt_idr_pct, alert_status
METHODOLOGY CHANGELOG
| 2026-07-28 | Claim class became a required field on every panel (D2). Every panel now declares observed / reported / derived / interpreted, enforced by a build gate. Previously the distinction was prose and held only by convention. |
| 2026-07-28 | Pipeline health and payload completeness contracts added (D6). A partial payload now renders a reduced-coverage notice instead of showing a subset as if it were the whole. Freshness alone could not detect this. |
| 2026-07-28 | Public exports published under exports/v1 (C1). Every dataset carries its source timestamp, freshness, completeness and claim class. Fixed an archive defect at the same time: usdt_idr had been recorded null since the archive began, and is reconstructed in the history export. |
| 2026-07-26 | Risk-intel speech-act gate replaced keyword matching. Cut 57 candidate signals to 8, all genuine. Keyword match detects the TOPIC of a message and is silent on whether an event occurred. |
| 2026-07-26 | Venue scorecard shipped without a composite score, deliberately. Blending measured and unmeasured dimensions would rank venues by observability. |
| 2026-07-26 | Cost of access restricted to a published FLOOR. Only components with a verified source are counted, after fee data proved unavailable from every venue. |
| 2026-07-25 | Append-only archive started. Historical research became possible. Everything before this date is unrecoverable. |