/api/beliefsRetrieves market-implied probability distributions for yearly low prices from Kalshi and/or Polymarket. Returns Metalog v2 fitted distributions with normalized points.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
asset | string | No | BTC | Asset symbol (BTC or ETH) Example: BTC |
source | string | No | kalshi | Data source: "kalshi", "polymarket", or "both" Example: both |
spot | number | No | — | Override spot price (USD). If not provided, fetched from Hyperliquid. |
debug | string | No | — | Enable debug output (set to "1" or "true") |
{
"kalshi": {
"min": {
"metalog": {
"aCoefficients": [
0.867,
7.285,
4.844
],
"terms": 7,
"valid": true,
"isFit": true,
"lowerBound": 0,
"upperBound": 92921.5,
"minPdf": 0.000366
},
"points": [
{
"price": 60000,
"probability": 0.37,
"volume": 6600,
"openInterest": 22500
}
],
"kalshiSeriesTicker": "KXBTCMINY"
}
},
"polymarket": {
"min": {
"metalog": {
"aCoefficients": [
0.867,
7.285,
4.844
],
"terms": 7,
"valid": true,
"isFit": true,
"lowerBound": 0,
"upperBound": 92921.5,
"minPdf": 0.000366
},
"points": [
{
"price": 15000,
"probability": 0.03,
"volume": 101000,
"openInterest": 27100
}
],
"polymarketSlug": "what-price-will-bitcoin-hit-before-2027"
}
},
"aggregated": {
"min": {
"metalog": {
"aCoefficients": [
0.867,
7.285,
4.844
],
"terms": 7,
"valid": true,
"isFit": true,
"lowerBound": 0,
"upperBound": 92921.5,
"minPdf": 0.000366
},
"points": [
{
"price": 15000,
"probability": 0.03,
"volume": 0,
"openInterest": 0
}
]
}
},
"spotPrice": 92921.5,
"metadata": {
"source": "both",
"spotSource": "hyperliquid",
"asset": "BTC",
"priceUnit": "USD",
"timestamp": "2026-01-06T12:00:00Z"
}
}/api/beliefs/oracle/queryQuery the belief oracle distribution for quantile (probability → price), percentile (price → probability), or tail probability calculations. Supports SIPmath 3.0 format output.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
price | number | No | — | Price to query (returns percentile and tail probability). Mutually exclusive with prob. Example: 60000 |
prob | number | No | — | Probability to query (returns quantile). Must be between 0 and 1. Mutually exclusive with price. Example: 0.5 |
asset | string | No | BTC | Asset symbol (BTC or ETH) |
format | string | No | summary | Response format: "summary", "full", or "sipmath" |
entity | number | No | — | RNG entity parameter (defaults to deterministic hash) |
varId | number | No | 1 | RNG varId parameter |
seed3 | number | No | 0 | RNG seed3 parameter |
seed4 | number | No | 0 | RNG seed4 parameter |
{
"query": {
"type": "probability",
"value": 0.5
},
"result": {
"quantile": 65000
},
"metadata": {
"summary": {
"asOf": "2026-01-06T12:00:00Z",
"asset": "BTC",
"side": "min",
"sources": [
{
"provider": "polymarket",
"weight": 1,
"asset": "BTC",
"side": "min",
"rawPointCount": 7,
"normalizedPointCount": 7
}
],
"metalog": {
"terms": 7,
"monotone": true,
"minPdf": 0.000366,
"lowerBound": 0,
"upperBound": 92921.5
}
}
}
}{
"error": "Must provide either price or prob parameter"
}/api/regime/detectStateless regime classification endpoint that maps SignalDetector outputs to canonical 4-regime set (CALM, TRENDING, CROWDED, DISLOCATION). Returns raw classification without stabilization.
Regime detection request with current sample and optional trail data
{
"asOf": "2026-01-06T12:00:00Z",
"asset": "HYPE",
"sample": {
"close": 1.5,
"sigma": 0.5,
"delta": 0.001,
"fragilityScore": 50,
"responseEfficiency": 50,
"crowdSide": "LONG",
"warmRatio": 0.9
},
"detectorState": "NEUTRAL",
"trail": [
{
"ts": 1704547200000,
"sigma": 0.4,
"delta": 0.0008
},
{
"ts": 1704547260000,
"sigma": 0.5,
"delta": 0.001
}
]
}{
"asOf": "2026-01-06T12:00:00Z",
"asset": "HYPE",
"regimeRaw": "CALM",
"confidenceRaw": 0.85,
"scores": {
"CALM": 0.7,
"TRENDING": 0.2,
"CROWDED": 0.08,
"DISLOCATION": 0.02
},
"signals": {
"volatility": "LOW",
"directionality": "FLAT",
"crowding": "MED",
"efficiency": "MED"
},
"metadata": {
"shockTriggered": false,
"detectorState": "NEUTRAL",
"fragilityScore": 50,
"responseEfficiency": 50,
"crowdSide": "LONG",
"warmRatio": 0.9
},
"diagnostics": {
"pointsUsed": 2,
"notes": [
"Classification based on detector state mapping"
]
}
}{
"error": "Missing required fields: asOf, asset, sample.close"
}Stateless regime classification endpoint that maps SignalDetector outputs to canonical 4-regime set.
/api/regime/detect
POST
Low volatility, low crowding, mean reversion works. "Nothing is happening."
LOW
FLAT or MIXED
LOW
MED to HIGH
Directional movement, vol rising slowly, breakouts persist. "Winners keep winning."
MED to HIGH
UP or DOWN
LOW to MED
MED to HIGH
Positioning heavy, volatility elevated, small moves cause big reactions. "Everyone's on the same side."
HIGH
UP, DOWN, or MIXED
HIGH
LOW to MED
Vol spikes, correlations jump, liquidations dominate. "Risk-off / panic."
HIGH
MIXED or extreme UP/DOWN
HIGH
LOW
Shock detection (large σ spike + large |Δ| change) immediately overrides to DISLOCATION
Maps SignalDetector state to base regime using state mapping rules
Uses fragility score, response efficiency, crowd side to refine classification
Computes volatility, directionality, crowding, efficiency from trail data
Detects shocks: σ change > 1.5 AND |Δ| change > 0.002 → forces DISLOCATION
warmRatio (detector calibration progress)
Standard deviation of recent σ (positioning pressure) values
|σ| < 0.5
0.5 ≤ |σ| < 1.5
|σ| ≥ 1.5
Mean and variance of recent Δ (price response) values
|Δ| < 0.0005
Δ > 0.0005
Δ < -0.0005
High variance in Δ values
Derived from fragility score
fragilityScore < 40
40 ≤ fragilityScore < 70
fragilityScore ≥ 70
Response efficiency metric from SignalDetector
responseEfficiency < 40
40 ≤ responseEfficiency < 60
responseEfficiency ≥ 60
Raw classification (no stabilization) - one of: CALM, TRENDING, CROWDED, DISLOCATION
Confidence score [0, 1]
Probability scores for all 4 regimes (sum to 1.0)
Signal breakdown (volatility, directionality, crowding, efficiency)
Whether shock was detected
Original SignalDetector state
Fragility score [0, 100]
Response efficiency [0, 100]
Crowd positioning (LONG, SHORT, MIXED, UNKNOWN)
Detector calibration progress [0, 1]
Number of trail points used for computation
Array of diagnostic notes about classification process
Use raw classification for immediate state, but apply stabilization (k-of-n, dwell time) before acting
Require regime to appear k times in last n samples before switching (e.g., 3 of 5)
Don't switch more than once per dwell period (e.g., 5 minutes) unless shock
Shocks immediately switch to DISLOCATION regardless of stabilization
Normal trading conditions, mean reversion strategies work
Breakout strategies favored, trends persist
Reduce position size, tighten stops, watch for reversals
Risk-off mode, reduce exposure, wait for stabilization
/api/sipmath/jointBuilds a SIPmath 3.0 sipModel JSON from historical series (FRED + Hyperliquid) with a Gaussian copula for coherence. Supports multiple assets and transformations.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
assets* | string | Yes | — | Comma-separated list of assets. Prefix sources: HL:<coin> or FRED:<seriesId>. Unprefixed IDs are treated as FRED. Example: HL:BTC,HL:ETH |
start | YYYY-MM-DD | No | 2020-08-01 if any HL: present, else 2020-01-01 | Start date for historical data |
end | YYYY-MM-DD | No | today (UTC) | End date for historical data |
freq | "m" | "d" | No | m | Frequency: monthly ("m") or daily ("d"). Daily only supported when all assets are HL:<coin>. |
transform | "level" | "pct_change" | "pch" | No | pct_change | Transformation: pct_change (multiplicative factors), level (raw levels), or pch (percent points) |
transformMap | string | No | — | Per-series transform overrides. Format: FRED:UNRATE=level,HL:BTC=pct_change |
terms | "auto" | number | No | auto | Metalog terms. "auto" tries 4..15 terms and selects first valid fit. |
minRows | number | No | 24 | Minimum number of aligned rows required |
mode | "intersection" | "union" | No | intersection | Date alignment mode |
name | string | No | — | Top-level sipModel name |
entity | number | No | — | HDR_2_0 entity parameter (defaults to deterministic hash) |
seed3 | number | No | 0 | HDR_2_0 seed3 parameter |
seed4 | number | No | 0 | HDR_2_0 seed4 parameter |
varIdStart | number | No | 1 | Starting varId for HDR_2_0 (varId will be varIdStart..varIdStart+N-1) |
/api/sipmath/helpReturns comprehensive documentation for the SIPmath API endpoints, including query parameters, examples, and available FRED series and Hyperliquid assets.
/api/polymarket/stripReturns raw strip data from Polymarket for a given asset and side (min/max).
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
asset | string | No | BTC | Asset symbol (BTC or ETH) |
side | string | No | min | Side: "min" or "max" |
[
{
"x": 60000,
"p": 0.37,
"volume24h": 6600,
"openInterest": 22500
}
]/api/machine/stateReturns the current state of the economic machine, including regime classification, stability scores, and Metalog fits for Lift, Weight, Thrust, and Drag.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
observation_start | YYYY-MM-DD | No | 2006-01-01 | Start date for observation window |
/api/fred/observationsRetrieves economic observations from the Federal Reserve Economic Data (FRED) API for a given series.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
seriesId* | string | Yes | — | FRED series ID (e.g., CPIAUCSL, UNRATE) Example: CPIAUCSL |
observation_start | YYYY-MM-DD | No | — | Start date for observations |
observation_end | YYYY-MM-DD | No | — | End date for observations |
targetFrequency | "q" | "m" | "d" | No | — | Target frequency for aggregation (q=quarterly, m=monthly, d=daily) |
/api/current-priceReturns current prices, market cap, and 24h change for specified tickers.
Array of ticker symbols
{
"tickers": [
"BTC",
"ETH",
"SOL"
]
}{
"BTC": {
"price": 92921.5,
"symbol": "BTC",
"name": "Bitcoin",
"change24h": 2.5,
"marketCap": 1800000000000,
"lastUpdated": "2026-01-06T12:00:00Z"
}
}Request Body:
{
"tickers": [
"BTC",
"ETH"
]
}For questions or issues, please refer to the GitHub repository.