Where Is the Smart Money Actually Going?
Price tells you what happened. It rarely tells you who is positioning, or where capital is staging before the move. Two flows answer that question directly: native on-chain movements and regulated institutional ETF flows. Read together, they are the closest thing crypto has to a follow-the-money feed.
On-chain data is a leading signal — coins moving onto an exchange precede sell pressure; stablecoins piling up precede buying; whales accumulate quietly before retail notices. ETF flows are structural — sustained inflows set floors that defend specific cost-basis levels. $80K BTC was the 2025 ETF floor.
This post is the hub for two of our regimes: #7 On-Chain Intelligence and #10 Institutional Flow — two of the 14 baskets in the 14-regime framework. Both are about money flow, on different timescales, and they complement each other. We link the deep-dive posts as we go.
Regime #7: On-Chain Intelligence — Six Leading Signals
On-chain intelligence treats the blockchain as a leading indicator, not a lagging chart. It is the layer that increasingly separates institutional-grade systems from retail ones. Crypto Data API exposes six distinct signals under /api/v1/on-chain/, each refreshed by APScheduler off live RPC and free data sources.
- Exchange flows.
/on-chain/exchange-flows/{symbol}returns net Transfer flow to/from CEX wallets across 1h/6h/24h/7dwindows. Positivenet= deposits to exchanges (often bearish); negative = withdrawals (often bullish). See exchange inflow spikes for the full playbook. - Stablecoin dry powder.
/on-chain/stablecoin-reserves/dry-powderreturns azscoreof current CEX stablecoin reserves vs a 30d baseline.signalresolves toaccumulating(z > +1),neutral, ordepleting(z < -1). - Whale accumulation.
/on-chain/whales/accumulation-scorecountsaccumulating/distributingacross tracked ERC-20s with a directionalsignal. Deep dive: whale accumulation tracking. - Supply dormancy.
/on-chain/dormancy/btcsurfacesmvrvwith a zone classification (capitulation → accumulation → neutral → elevated → euphoria) plus active addresses and 24h issuance. - Miner hash ribbon.
/on-chain/miners/hash-ribboncompares the 30dMA and 60dMA of BTC hashrate.stateofrecoveryaftercapitulationis historically the strongest BTC bottom signal. - Composite.
/on-chain/scorerolls all of the above into a single 0-100 read.
The On-Chain Composite in One Call
You rarely want to poll six endpoints. /on-chain/score synthesizes Hash Ribbon, MVRV, stablecoin dry-powder, whale accumulation, exchange-flow direction, and miner net flow into one directional verdict with a per-component breakdown.
curl -H "X-API-Key: cdk_live_yourkey" \
"https://cryptodataapi.com/api/v1/on-chain/score"The response:
{
"as_of": 1749600000,
"score": 63.5,
"sentiment": "leaning_bullish",
"components": [
{"name": "hash_ribbon", "score": 80.0, "weight": 0.15,
"reason": "recovery crossover 6d ago"},
{"name": "mvrv", "score": 55.0, "weight": 0.20,
"reason": "neutral zone"},
{"name": "dry_powder", "score": 72.0, "weight": 0.20,
"reason": "reserves z=+1.4, accumulating"},
{"name": "exchange_flows", "score": 58.0, "weight": 0.20,
"reason": "net withdrawals 24h"}
],
"weights_version": "v1"
}Sentiment bands: bullish (≥70), leaning_bullish (55-69), neutral (45-54), leaning_bearish (30-44), bearish (<30). Components with no data yet contribute a neutral 50, so the score stays stable across cold deploys.
Regime #10: Institutional Flow — The Structural Floor
ETF and 401(k) access turned institutional flows into a trackable regime driver. Unlike on-chain signals that fire in hours, ETF flows operate on a weeks-to-months horizon and set structural floors. When BTC approaches the average ETF cost basis, institutional holders defend it aggressively.
Two endpoints cover this regime:
- Daily flows.
/api/v1/market-intelligence/etf/btc/flowsreturns per-day flow history. Each entry carries atotal_valuein USD — positive on net inflow days, negative on redemption days. The endpoint also serveseth,sol, andxrp. - AUM.
/api/v1/market-intelligence/etf/btc/aumreturns total assets under management over time as{date, aum}entries — the slow-moving proxy for cumulative institutional accumulation.
curl -H "X-API-Key: cdk_live_yourkey" \
"https://cryptodataapi.com/api/v1/market-intelligence/etf/btc/flows"
{
"asset": "BTC",
"flows": [
{"date": "2026-06-10", "total_value": 412000000.0},
{"date": "2026-06-09", "total_value": 538000000.0},
{"date": "2026-06-06", "total_value": -190000000.0}
]
}Heuristic from the regime taxonomy: >$500M/week of sustained inflows = institutional buying; a spike in redemptions = de-risking. Full method in Bitcoin ETF flow tracking.
Signal → Endpoint → What It Implies
One map spanning both regimes. Native on-chain smart money sits above the line; institutional ETF flow sits below it.
| Signal | Endpoint | Bullish read |
|---|---|---|
| Exchange outflows | /on-chain/exchange-flows/{symbol} | Negative net — coins leaving CEXs to self-custody |
| Stablecoin dry powder | /on-chain/stablecoin-reserves/dry-powder | signal=accumulating, zscore > +1 |
| Whale accumulation | /on-chain/whales/accumulation-score | signal=accumulating across tracked tokens |
| Miner hash ribbon | /on-chain/miners/hash-ribbon | state=recovery within 14d of capitulation |
| On-chain composite | /on-chain/score | sentiment=bullish, score ≥ 70 |
| ETF daily flows | /market-intelligence/etf/btc/flows | Positive total_value, >$500M/week sustained |
| ETF AUM | /market-intelligence/etf/btc/aum | Rising aum during a price drawdown |
The highest-conviction setup is confluence: on-chain says smart money is accumulating and ETF flows are net positive on the same day. Native money leads; institutional money confirms and defends.
Wiring Both Regimes Into One Agent
Three reads give an agent a complete follow-the-money view: the on-chain composite, BTC exchange flows, and ETF daily flows. Combine them into a single directional bias.
import httpx
HDR = {"X-API-Key": "cdk_live_yourkey"}
BASE = "https://cryptodataapi.com/api/v1"
def follow_the_money() -> dict:
with httpx.Client(base_url=BASE, headers=HDR) as c:
onchain = c.get("/on-chain/score").json()
flows = c.get("/on-chain/exchange-flows/BTC").json()
etf = c.get("/market-intelligence/etf/btc/flows").json()
net_24h = flows["windows"]["24h"]["net"]
etf_5d = sum(f["total_value"] for f in etf["flows"][:5])
bullish = (
onchain["sentiment"] in ("bullish", "leaning_bullish")
and net_24h < 0 # coins leaving exchanges
and etf_5d > 0 # net ETF inflows this week
)
return {
"onchain_score": onchain["score"],
"btc_net_flow_24h": net_24h,
"etf_net_flow_5d_usd": etf_5d,
"bias": "long" if bullish else "neutral",
}The pattern: gate on the slow institutional floor (ETF), confirm with the leading on-chain composite, and time with the fast 24h exchange-flow window. Each endpoint is independently cached, so polling all three is cheap.
When to Reach for the Flow Regimes
These two regimes earn their keep in distinct scenarios. Pick the timescale that matches your decision.
- Catching distribution early. A spike in exchange inflows or long-dormant coins moving (
/on-chain/dormancy/btc) warns of sell-side liquidity before price reacts. Reduce leverage when on-chain leads down. - Confirming a bottom. Hash-ribbon
recoveryplusaccumulatingdry powder is a classic late-bear confluence. The on-chain composite packages it into one number. - Defending a floor. When BTC nears a level supported by rising ETF
aumand sustained positivetotal_value, the institutional cost basis is a structural buy zone, not a falling knife.
What these regimes are not: standalone entry triggers. On-chain flows fire constantly and ETF data is daily, not intraday. Pair them with the rest of the regime taxonomy — these are #7 and #10 of 14, and they answer the same question on two clocks: where is the money going?



