On-chain prices and licence modes
On-chain prices and licence modes for sigstar. Collect market, on-chain, news and macro data, and explain, forecast and alert on crypto price moves from…
With a chainstar warehouse that has swaps (chainstar releases from October 2026), sigstar reads two more things from it, read-only:
- Prices: chainstar's USD prices from on-chain DEX swaps (
fct_token_prices), hourly and daily, for each asset'sonchain.pricestokens: ETH from WETH swaps on Ethereum and Base, SOL from SOL and wrapped SOL swaps on Solana, BTC from wrapped BTC (WBTC, cbBTC) on Ethereum and Base (chainstar'scross_chain_wrapped_btc, so those chains must be in the same warehouse). Only prices chainstar rates high or medium confidence; low-confidence buckets have no price there and none here. They joinfct_pricesas the venueonchainwith their chain, method, confidence and observation count, and the per-chain rows are kept infct_onchain_prices. - DEX activity: every swap in an asset's
onchain.dex_tokens(fct_swaps, verified pools only on Ethereum and Base), counted and summed in USD per day.
Tokens are matched by chain and contract address (Solana: mint), never by symbol. An on-chain price is the median of a bucket's swaps, not a closing price, so daily returns from it are smoother than an exchange's close-to-close returns. A bucket is used once the chain's loaded blocks have run past its end. A chainstar warehouse built from a few blocks per day is a sample of each day: DEX volume and swap counts then compare like with like only if each day's sample is similar, and explanations say how many seconds of the day the sample spans.
On-chain z-scores compare like with like. A chainstar warehouse can hold whole days or
short samples, and some chains on some days only, so a raw on-chain total can jump because
more was loaded rather than because more happened. Every on-chain z-score (transactions,
active wallets, stablecoin transfers, DEX volume and swaps, the price gap, and the
intraday range on days priced on-chain) therefore compares a day only with earlier days on
which every chain behind the number was loaded too, with a block count within 10%
(analysis: onchain_coverage_tolerance), and sums those earlier days over the same chains
only. Blocks are counted rather than seconds: equal samples of 40 Solana slots spanned 8
to 11 seconds. With fewer than 10 comparable days in the 30-day window the z-score is
empty, so the feature is not ranked, and <column>_note in features_daily says why
("not comparable: ethereum loaded with similar coverage (blocks within 10%) on 0 of 13
earlier days (10 needed)"). explain repeats that note, and anomalies and the brief list
such features under "not checked". Alert rules' percentile thresholds on on-chain
features use the same comparable days (see Alerts below). anomalies uses only this z-score for on-chain
features, not the robust z, which would compare with every past day. A warehouse kept in
sync (chainstar sync) loads whole days, so its days compare normally.
Features this adds (see the table below): on-chain DEX volume and swap count with
z-scores, the gap between the on-chain price and the exchanges' price hour by hour
(personal mode only, since it needs exchange prices), and the confidence, method, chain and
observation count of the day's on-chain price. The z-scored ones are ranked as drivers in
explain, scanned by anomalies and usable in alert rules. When the day's reference
price is on-chain, explain says where it came from.
Licence modes
sources: licence_mode: in sigstar.yml:
| Mode | Sources | Use |
|---|---|---|
personal (default) |
every source you enable | your own use: the exchanges license their data for that only |
commercial |
Fear & Greed Index, GDELT, FRED's public-domain series (DFF, DGS10, DTWEXBGS), chainstar | sources whose published terms allow commercial use, with the credits they ask for |
In commercial mode, Coinbase, Kraken, Binance (spot and futures), OKX and the RSS feeds are
off whatever enabled says: they are not collected or contacted, and rows they left in the
warehouse from earlier personal-mode runs are dropped when the marts are built. Prices come
only from chainstar, so a chainstar warehouse with swaps is required (sigstar build and
sigstar doctor say so if it is missing). Sources whose terms are unclear about
commercial use are treated as restricted; the reading of each one's terms, with quotes, is
in SOURCES.md.
What commercial mode can do: explain moves of on-chain prices against news coverage and tone, Fear & Greed, macro, on-chain activity and DEX volume; anomalies, relationships, price and volatility forecasts and alerts on those; the daily brief.
What it cannot do: exchange closing prices, the cross-venue spread, exchange volume (and so volume forecasts), funding and open interest, RSS headlines, the on-chain vs exchange price gap, and FRED series outside the three above. Its prices are only as good as the chainstar warehouse: medians of the swaps it holds, at chainstar's high or medium confidence, and for Bitcoin wrapped BTC on other chains.
sigstar doctor prints the mode and why each source is on or off. Every report and every
command that prints analysis ends with the mode and the sources the data actually came
from (read from the warehouse, not from the config), and the brief carries each source's
credit. chainstar's data comes from an RPC provider whose terms sigstar cannot see: for
commercial use, build it from your own node or a provider whose terms allow your use
(SOURCES.md). This is a reading of published terms, not legal advice.