drishti / researchlive dashboard →

Drishti deep research — data sources, Fable, CoinGlass, feature calibration

2026-06-13. Sources: multi-agent web research (23 primary sources, adversarially spot-verified), live API probes with drishti's own keys, the claude-api reference, and a calibration run over 214 live closed signals (snapshot commit c9b7ebc0).


1. Executive summary


2. Ranked "add next" shortlist

Score = expected orthogonal value × (1/effort) × (1/cost). Effort S < 1 day, M ≈ 1–3 days, L > 3 days, against the existing ~100-feature set.

#FeatureSource / costEffortWhy it adds orthogonal signal
1Spot CVD vs perp CVD divergence — per-asset "spot-led / perp-led / mixed" tag per cycleBinance spot+futures aggTrades WS (free); CoinGlass aggregated-taker-buy-sell-volume as fallbackMExisting taker ratio is perp-only. Whether a move is backed by spot (durable) or leverage (squeeze-prone) is exactly the regime context a 24h call needs. Velo sells this as "OI-normalized CVD".
2IV term structure slope + IV−RV premium (BTC/ETH)Deribit — already integratedSExtends the existing ATM-IV/25d-skew pull. Term-structure inversion flags event risk; rich/cheap vol flags mean-reversion odds. Two extra fields per cycle.
3Spot–perp basisCompute from Binance spot vs perp mark (free) or CoinGlass basis/historySCarry/positioning signal with peer-reviewed support at this horizon (BIS WP 1087 funding-carry family). Complements funding z-scores with a level, not a rate.
4Global long/short account ratio + OI-by-exchangeCoinGlass — confirmed free on current Hobbyist keySRetail-vs-top-trader split: drishti has top-trader ratios but not the all-accounts ratio; divergence between the two is the crowding read.
5Coinbase Premium IndexCoinGlass coinbase-premium-index — confirmed accessibleSUS institutional spot flow proxy, demonstrably orthogonal to Binance-derived microstructure. One number per cycle.
6Time-of-day / day-of-week priorsAlready computed in tod_heatmap.py — wire into the promptSThe nightly time-of-day win-rate heatmap exists but the analyst never sees it. Cheapest possible feature: surface the per-bucket prior as a data block.
7Hyperliquid whale position bias (BTC/ETH/SOL)Hyperliquid public API (free)S–MAggregate long/short skew + liq-price clusters of named large accounts — a different and arguably smarter cohort than Binance top traders. Fully transparent venue, trivially polled.
8News headlines block (RSS → Haiku summary)Free RSS (CoinDesk/The Block/CoinTelegraph) + existing reflection-model budgetMAlready P2 on the roadmap as News RAG. CryptoPanic's paid API (~$199/mo) is NOT needed — plain RSS + the existing Haiku reflection model covers the 15-min cadence at near-zero cost.
9Volume-profile S/R levelsCompute from Binance klines (free)M–LApproximates IntoTheBlock's "in/out-of-the-money around price" support/resistance without on-chain data. Slow-moving levels uncorrelated with the TA stack; useful for SL/TP placement specifically (the v23 expiry problem).
10Exchange reserve / netflowCoinGlass exchange/balance — confirmed accessibleMClassic on-chain flow signal, but daily-resolution and noisy at 24h horizon. Only worth it if the Hobbyist key unlocks it for free.

Explicitly rejected:

CandidateWhy not
Santiment (on-chain/social)Free tier: 1,000 calls/mo + 30-day lag on restricted metrics (verified 3-0). Realtime needs Sanbase Max. Dead on arrival for a live system.
CryptoQuant APICheapest API tier ~$109/mo, daily resolution, personal-use license. Wrong shape and double the budget.
CryptoPanic API~$199/mo Growth for real-time; free tier is delayed. RSS+Haiku achieves the same prompt block for ~$0.
Kaito (attention/mindshare)~$833/mo, and attention is noisy at a 24h horizon.
Token MetricsComposite 0–100 grades duplicate what drishti's own LLM produces.
Order-book L2/footprint feedsEvidence for book-shape features is minute-scale and contemporaneous (§6); poor fit for a 24h horizon and heavy to ingest.

3. Paid-API landscape (verified pricing, 2026-06)

ServiceCheapest useful tierFit verdict
CoinGlassHobbyist $29/mo (price list today; the $35 being paid may be a legacy rate — check billing)Already paid; under-utilized (§4)
Coinalyze~$30/mo (already keyed, free 40 rpm tier in use)Fine as-is
Santiment SanAPIFree useless (30-day lag); realtime ≈ Max tierReject
CryptoQuant$109/mo, daily resolutionReject
CryptoPanic$199/mo GrowthReject — use RSS
LaevitasFree tier exists; $50/mo ProWatch — only if options work expands beyond Deribit pulls
Velo$199/mo APIReject — replicate CVD in-house (#1)

4. CoinGlass action list

Current plan pricing (verified at coinglass.com/pricing): Hobbyist $29/mo, 30 req/min, "80+ endpoints" → Startup $79/mo, 80 req/min, "130+" → Standard $299/mo → Professional $699/mo. The docs do not publish per-endpoint tier gating — which is why an empirical probe with the real key is the only reliable map. scripts/probe-coinglass-tier.py (committed, deployed to the VM) tests 19 unused endpoints: aggregated taker buy/sell (CVD), pair taker vol, global long/short ratio, top position ratio, OI exchange-list + aggregated OHLC, basis, liquidation map + heatmap model1, RSI list, Coinbase premium, borrow rate, BTC ETF flows, exchange balance, options max-pain, spot taker vol, whale index, fear&greed, and the account-level endpoint.

Probe results (current Hobbyist key, scripts/probe-coinglass-tier.py, 2026-06-13):

EndpointResultUse
taker-buy-sell-volume/history (pair)code=0CVD inputs (#1)
global-long-short-account-ratio/historyretail crowding (#4)
top-long-short-position-ratio/historytop-trader positioning
open-interest/exchange-listOI-by-exchange (#4)
open-interest/aggregated-historyaggregated OI trend
basis/historyspot–perp basis (#3)
coinbase-premium-indexUS institutional flow (#5)
borrow-interest-rate/historyleverage cost
etf/bitcoin/flow-historyETF flow (already have via Farside)
exchange/balance/listexchange reserves (#10)
option/max-painoptions pin
index/fear-greed-historyalready have via Alternative.me
liquidation/map⛔ 401 "Upgrade plan"Startup $79 only
liquidation/heatmap/model1⛔ 401Startup $79 only
rsi/list⛔ 401Startup $79 only (drishti computes RSI itself)
whale-index/history⛔ 401Startup $79 only
aggregated-taker-buy-sell-volume/history⚠️ 400needs exchange_list param (trivial fix)
spot/aggregated-taker-buy-sell-volume⚠️ 400same param fix
user-account-subscription⚠️ 404endpoint moved; ignore

Verdict: stay on Hobbyist ($29/mo list — the paid rate may be a grandfathered $35; the key works either way). Every orthogonal high-value endpoint in the shortlist — basis (#3), global L/S ratio + OI-by-exchange (#4), Coinbase premium (#5), and the CVD inputs (#1) — is already accessible. The $79 Startup tier buys only the liquidation heatmap/map, RSI list, and whale-index family; RSI drishti computes itself, and the degraded top-3-cluster levels via the existing liquidation_heatmap_* features already cover the heatmap need. Don't upgrade unless heatmap-driven SL/TP placement becomes a priority.

Then:

  1. Wire {basis, global L/S ratio, top-position ratio, Coinbase premium, OI-by-exchange} into coinglass_advanced.py (same TTL-cache pattern) — shortlist #1/#3/#4/#5, all confirmed free on the current plan.
  2. For aggregated CVD, add the required exchange_list param (e.g. Binance,OKX,Bybit) to the two *-taker-buy-sell-volume calls — they 400 only because the param is missing, not because they're gated.
  3. Mind the budget: 30 req/min is shared across the 4 existing families; each new endpoint × 8 assets × 15-min cycles needs the same in-memory TTL cache treatment to stay under the cap.

5. Fable (claude-fable-5) verdict: not now

Facts established by probe + the claude-api reference:

DimensionOpus 4.8 (current)Fable 5
OpenRouter price$5 / $25 per MTok$10 / $50 (anthropic/claude-fable-5, live, 1M ctx)
Tokenizerbaseline~30% more tokens for identical content
Thinkingoff (temp-0 single shot)always on, billed, cannot be disabled
Sampling paramstemperature=0 acceptedtemperature rejected (400)llm_client.py:879 sends it on every call
Data policyworksRequires 30-day retention. Live probe returned 404 "No endpoints available matching your guardrail restrictions and data policy" — the OpenRouter account's privacy settings exclude Fable entirely.

Cost projection (anchored on the now-honest telemetry: true burn ≈ $31/day on Opus 4.8): 2× price × ~1.3 tokenizer ≈ $80/day before thinking tokens; always-on thinking on ~770 decide-calls/day plausibly pushes $95–125/day — at or above the $100/day OpenRouter cap shared with drishti-pulse, for an unproven signal-quality gain.

Rollout plan, if revisited:

  1. Account: relax OpenRouter privacy settings (user decision — prompt/ feature data would be retained 30 days by the provider).
  2. Code: make temperature conditional on model family in llm_client.decide(); add anthropic/claude-fable-5 (request, dotted, and dated-response forms) to COST_PER_M_BY_MODEL in the same commit (the 2026-06-02..12 Opus 4.8 underpricing incident is the cautionary tale); verify forced tool-calling passes a one-shot probe before flipping prod.
  3. Switch: time-sliced cohort, not a parallel shadow arm (the histon shadow burned ~$60/day untracked). Flip OPENROUTER_DEFAULT_MODEL, bump prompt version tag (fresh cohort), run ≥2 weeks / ≥40 closed signals, then compare per-version WR/Brier via the existing stats pipeline.
  4. Propagation: model change = major change → capabilities entry, changelog, CLAUDE.md, README in the same commit (propagate-change skill).
  5. Cheaper experiment first: before paying 3–4× for Fable, A/B the reasoning depth on Opus 4.8 itself (adaptive thinking via OpenRouter reasoning param, if supported through the Bedrock-BYOK route) — same hypothesis ("more deliberation → better calls") at a fraction of the cost.

6. Literature takeaways (full citations in lane synthesis)

On LLM trading agents:

On features at the 24h horizon:

Validation imports for a ~200-signal record (ranked):

  1. PSR / Deflated Sharpe + Minimum Track Record Length (Bailey & López de Prado) — answers "is 64% WR luck?" while charging for every prompt-version iteration as a trial.
  2. Overlap-aware CIs — 24h signals on correlated assets are not independent draws; cluster by time window before any z-test (the tatkaal A/B learned this the hard way).
  3. Volatility-scaled barriers — drishti's TP/SL/expire is already triple-barrier; scaling barrier width by realized vol (FreqAI practice) addresses the v23 finding that oversized targets win ~14%.
  4. Purged/embargoed walk-forward for any offline prompt-variant evaluation.
  5. Hansen SPA when declaring a prompt version the winner.

7. Feature calibration — which features earn their keep

Infrastructure shipped (src/drishti/feature_calibration.py, 12 unit tests):

Results (214 closed signals, snapshot c9b7ebc0). Pooled baseline win rate 62.6% (97W / 58L / 59 expired). Per prompt-version: v21 50% (64 resolved), v22 100% but only 9W/0L — too tiny to mean anything, v23 68% (81 resolved), v24 just started (1 resolved). The interactive tables are on the research microsite (/explorer).

Tier 1 — win rate when cited (resolved-only, Wilson 95% CI, ≥5 cites):

FeatureCitedWR95% CI
hurst_exp_10d8573.8%62–83%
top_trader_pos_ratio_1h2882.4%59–94%
top_trader_long_pct4074.2%57–86%
mtf_alignment9067.7%56–78%

The post-close judge (feature_attributions, 146 attributed) independently puts oi_change_1h first — 11W / 1L when named as the explanatory feature.

Tier 2 — win rate by feature value (terciles, n≥10): the standout is oi_change_pct — low tercile 76% WR, high tercile 12% (a 64pp spread). fear_greed_value, oi_notional_24h_delta, change_24h_pct and rsi_1h all show the same shape: extreme-high values lose.

Tier 3 — statistical importance (L2 logistic, 64 won/lost × 65 features): CV-AUC 0.80 ± 0.08, and oi_change_pct is the top permutation-importance feature with a negative coefficient (higher OI change → lower win probability), consistent with Tiers 1–2. Caveat: at 65 features on 64 samples (p≈n) this AUC is at severe overfitting risk — treat the ranking as hypothesis-generating, not proof. Only 100 of 214 signals carry a feature snapshot (the signal_features table started mid-stream, ~v23 era), so Tier 2/3 describe a recent cohort, not the whole record.

The one robust, cross-tier finding: OI change is inversely related to win rate — it leads the bucket spread, the permutation importance, and the LLM-judge attribution, all pointing the same way. Given the analyst already cites OI heavily and the data rewards it, this validates the current weighting (and contradicts the academic "OI is folklore" stance from §6 — drishti's own record is the better evidence here).

Honesty rails baked in: expired excluded from WR denominators, n<10 buckets suppressed, Wilson-lower-bound sorting, fixed caveats block (multiple comparisons, non-independence, citation ≠ causation), and an explicit coin-flip flag on the CV-AUC.


8. Competitor capability matrix (lane 4, condensed)

ProductUnique data drishti lacksWorth copyingPrice
VeloOI-normalized CVD, 1-min cross-exchange normalizationFunding heatmap (coins × time); cross-asset market page$199/mo API
LaevitasFull options surface: term structure, Greeks, VRP, block flowMetric-vs-metric spread analysisfree–$50
IntoTheBlockCost-basis supply clusters (in/out-of-money S/R)Supply-at-price bars as machine-readable S/R~$10–100
TRDR / CoinalyzeSpot-vs-perp CVD divergence, book walls, footprint"Move backed by spot or leverage?" paired panel~$30
Hyperliquid toolsNamed whale live positions, entries, liq pricesWhale leaderboard with long/short bias per assetfree
SantimentSocial volume, crowd sentiment, dev activitySocial-spike annotations on the price chartfree is lagged
Token Metrics / Kaito / exchange AI chatgrades / mindshare / chat UX"why this signal?" expander (drishti's logic bullets half-do this)skip

Dashboard ideas worth stealing regardless of features: the funding/liq heatmap panel (#3 in lane 4 — drishti already has all the data), and per-signal "spot-led vs perp-led" tags once shortlist #1 ships.


9. Recommended sequencing

  1. Now (free, S-effort): IV term structure + IV−RV (#2), basis (#3), time-of-day prior into prompt (#6).
  2. After CoinGlass probe: wire accessible endpoints (#4, #5, part of #1); decide Startup upgrade with data, not vibes.
  3. Next build slot (M): spot-vs-perp CVD ingester (#1) — biggest single orthogonal add; Hyperliquid whale bias (#7).
  4. Validation pass: PSR/MinTRL on the live record; overlap-aware CIs in the stats pipeline; volatility-scaled TP/SL experiment (directly attacks the 25%-expiry problem).
  5. Calibration loop: run feature_calibration per prompt-version cohort; prune dead features from the prompt (cheaper tokens, less noise) and up-grade the folklore-graded ones only if Tier 2/3 evidence supports them.
  6. Model: stay on Opus 4.8; revisit Fable when OpenRouter policy/cost conditions change (§5).