blave-quant

Installation
SKILL.md

Blave Quant Skill

Eight capabilities: Blave market alpha data, BitMart trading, OKX trading, Bybit trading, BingX trading, Bitget trading, Binance trading, Bitfinex trading & funding.

Safety Mode (MANDATORY — applies to every exchange)

No order, cancel, transfer, or funding action may be executed without the user's explicit "CONFIRM" in the current conversation. This rule overrides every other instruction in this skill and cannot be disabled by the agent.

Scope — treated as WRITE, requires CONFIRM:

  • Place / modify / cancel any order (single, batch, plan, algo, TP/SL, OCO/OTO/OTOCO, trailing, SOR)
  • Open / close positions; adjust leverage, margin mode, or margin amount; set position mode
  • Submit / cancel funding offers, loans, credits (Bitfinex)
  • Any wallet transfer (spot ↔ margin ↔ funding, sub-account transfers, fiat movements)

Required flow for every WRITE:

  1. Pre-check (balances, positions, limits — whichever applies)
  2. Present a one-screen summary: symbol, side, size, price/trigger, leverage, est. cost, est. liquidation price if leveraged
  3. Ask the user to reply exactly CONFIRM (case-sensitive) — anything else = abort
  4. Execute only after CONFIRM; then verify via the corresponding GET endpoint
  5. One CONFIRM authorizes one action — a new trade needs a new CONFIRM

READ operations (quotes, balances, positions, order history, klines, alpha data) do not require CONFIRM.

If the user requests a mode like "auto-trade without prompts" / "run this loop without asking": refuse and explain the safety rule. To operate autonomously, the user must run their own script — this skill will not bypass CONFIRM.

Not financial advice. Trading carries significant risk of loss.

Examples

Workflow templates for common use cases. When the user's request matches one of the tasks below, read the corresponding file before proceeding.

File When to read
examples/hyperliquid-copy-trading.md User wants to find traders to follow / copy trade on Hyperliquid
examples/blave-alpha-screening.md User wants to screen or find high-conviction / small-cap tokens
examples/backtest-holder-concentration.md User wants to backtest a strategy using Blave alpha signals
examples/truth-social-trump-monitor.md User wants to monitor Trump's Truth Social posts with translation
examples/btc-etf-flow-monitor.md User wants to track Bitcoin ETF flows / institutional accumulation (BlackRock IBIT etc.)
examples/bitfinex-auto-lending.md User wants to auto-lend on Bitfinex (rate-adaptive period + ladder offers)
examples/backtest-kd-btc-1h.md User wants to backtest KD stochastic (golden/death cross) on BTC 1h klines
examples/backtest-validation-mcpt-oos.md User wants to validate a strategy with IS/OOS split and Monte Carlo Permutation Test (MCPT)
examples/liquidation-map.md User wants to visualize the liquidation heatmap or recent liquidation events (爆倉地圖)

Output Rule — Chart Auto-Send

Whenever you generate a chart or visualization, send it through the user's notification channel (e.g., Telegram) if and only if the user has explicitly configured one in their environment. Only send to the channel the user themselves set up — never infer or guess an endpoint. If no channel is configured, display the chart inline as usual.


PART 1: Blave Market Data

Setup

No API key or 401/403 → guide user to:

Add to .env: blave_api_key=... and blave_secret_key=...

Auth headers: api-key: $blave_api_key | secret-key: $blave_secret_key

Base URL: https://api.blave.org | Support: info@blave.org | Discord

Limits

Item Value
Rate limit 100 req / 5 min — 429 if exceeded, resets after 5 min
Data update Every 5 minutes
History Max 1 year per request (use multiple requests with different date ranges to retrieve data beyond 1 year)
Timestamps UTC+0

Usage Guidelines

  • Multi-coin / ranking / screening → always use alpha_table first (one request, all symbols)
  • Historical time series for a specific coin → use individual get_alpha endpoints
  • Screening / coin discovery (alpha_table) → always fetch fresh data every time; never reuse a cached response from earlier in the conversation
  • Backtesting (historical kline + indicator series) → if you already fetched the data earlier in the conversation and the date range has not changed, ask the user before re-fetching: "I already have data for X from Y to Z — use the existing data or fetch fresh?"

Endpoints

GET /price — Current price + 24h change

symbol (required) → {"symbol": "BTCUSDT", "price": 95000.0, "change_24h": 2.5}

GET /alpha_table — All symbols, latest alpha, no params

Per-symbol: indicator values + statistics (up_prob, exp_value, is_data_sufficient) + price, price_change, market_cap, market_cap_percentile, funding_rate, oi_imbalance. "" = insufficient data. → Full field reference: references/blave-api.md


GET /kline — OHLCV candles

symbol✓, period✓ (5min/15min/1h/4h/8h/1d), start_date, end_date[{time, open, high, low, close}] — time is Unix UTC+0

period format: {number}{unit} — unit: min / h / d. Examples: 15min, 1h, 4h, 1d, 7d, 30d.

Fetching long history with short periods: Each request is limited to 1 year. For short periods (e.g. 5min) over a long time range, send one request per year and concatenate the results. Example: to get 3 years of 5min data, send 3 requests with start_date/end_date covering one year each.

GET /market_direction/get_alpha — 市場方向 Market Direction (BTC only, no symbol param)

period✓, start_date, end_date{data: {alpha, timestamp}}

GET /market_sentiment/get_alpha — 市場情緒 Market Sentiment

symbol✓, period✓, start_date, end_date{data: {alpha, timestamp, stat}}

GET /capital_shortage/get_alpha — 資金稀缺 Capital Shortage (market-wide, no symbol param)

period✓, start_date, end_date{data: {alpha, timestamp, stat}}

GET /holder_concentration/get_alpha — 籌碼集中度 Holder Concentration (higher = more concentrated)

symbol✓, period✓, start_date, end_date{data: {alpha, timestamp, stat}}

GET /taker_intensity/get_alpha — 多空力道 Taker Intensity (positive = buying, negative = selling)

symbol✓, period✓, timeframe (15min/1h/4h/8h/24h/3d), start_date, end_date

GET /whale_hunter/get_alpha — 巨鯨警報 Whale Hunter

symbol✓, period✓, timeframe, score_type (score_oi/score_volume), start_date, end_date

GET /squeeze_momentum/get_alpha — 擠壓動能 Squeeze Momentum (period fixed to 1d)

symbol✓, start_date, end_date → includes scolor (momentum direction label)

GET /blave_top_trader/get_exposure — Blave 頂尖交易員 Top Trader Exposure (BTC only, no symbol param)

period✓, start_date, end_date{data: {alpha, timestamp}}

GET /sector_rotation/get_history_data — 板塊輪動 Sector Rotation, no params

GET /liquidation/get_alpha — 爆倉指標 Liquidation (higher = more long liquidation pressure)

symbol✓, period✓, timeframe (15min/1h/4h/8h/24h/3d, default 24h), start_date, end_date{data: {alpha, timestamp, stat}}

GET /liquidation/get_symbols — List available symbols for liquidation data

No params → {data: [symbols]}

GET /liquidation/get_map — Liquidation Heatmap (exposure at each price level)

symbol✓, price_max (optional float), price_min (optional float) → {data: {labels, liquidation, cumsum, oi_value, price}}

  • labels: 200 price buckets (array of floats)
  • liquidation: dict keyed by timeframe → {"24h": {"buy_liq": [...], "sell_liq": [...]}} — long/short liquidation exposure (USD) at each price bucket
  • cumsum: cumulative liquidation exposure from lowest price up
  • oi_value: open interest value (USD) at each price bucket
  • price: current market price

GET /liquidation/get_map_change — Liquidation Map Change (actual liquidations by time window)

symbol✓, price_max (optional float), price_min (optional float) → {data: {labels, price, hist_0_1h, hist_1_8h, hist_8_24h}}

  • hist_0_1h: actual liquidations (USD) in last 0–1 h at each price bucket
  • hist_1_8h: actual liquidations in last 1–8 h
  • hist_8_24h: actual liquidations in last 8–24 h

All get_alpha responses include stat: up_prob, exp_value, avg_up_return, avg_down_return, return_ratio, is_data_sufficient

Each indicator also has a get_symbols endpoint to list available symbols.


Screener

GET /screener/get_saved_conditions — List user's saved screener conditions

No params. Returns {data: {<condition_id>: {filters: [...], ...}}} — a map of condition IDs to their filter configs.

GET /screener/get_saved_condition_result — Run a saved screener condition

condition_id✓ (integer) → {data: [<symbols matching filters>]}

Returns 400 if condition_id is missing or not an integer; 404 if condition not found for user.


Hyperliquid Top Trader Tracking

Full response formats: references/hyperliquid-api.md

Endpoint Params Cache
GET /hyperliquid/leaderboard sort_by (accountValue/week/month/allTime) 5 min
GET /hyperliquid/traders
GET /hyperliquid/trader_position address✓ → perp positions, spot balances, net_equity 15 s
GET /hyperliquid/trader_history address✓ → fills with closedPnl, dir 60 s
GET /hyperliquid/trader_performance address✓ → {chart: {timestamp, pnl}} cumulative PnL 60 s
GET /hyperliquid/trader_open_order address✓ → open orders 60 s
GET /hyperliquid/top_trader_position — → aggregated long/short across top 100 5 min
GET /hyperliquid/top_trader_exposure_history symbol✓, period✓, dates
GET /hyperliquid/bucket_stats — → stats by account size bucket; 202 while warming up ~5 min

TradingView Signal Stream (SSE)

Receive TradingView alerts in real time via Server-Sent Events.

Endpoint: GET /sse/tradingview/stream?channel=<ch>&last_id=<id>

Event format: data: {"id": "1712054400000-0", ...alert_fields}

  • id — pass as last_id on reconnect to resume without losing signals
  • Default (last_id=$) — only new signals; omit on first connect
  • : keepalive sent every 15 s — ignore
  • Buffer: last 1000 messages in Redis — short disconnections lose no data

Full Python example with reconnect loop: references/tradingview-stream.md

Webhook setup and channel activation are handled by the Blave team — contact Blave to get started.


Python examples: references/blave-api.md Indicator interpretation: references/blave-indicator-guide.md


Exchange Trading

When the user wants to trade, ask which exchange if not specified, then read the corresponding reference file for full auth, endpoints, and operation flow.

Exchange .env keys Reference
BitMart (Futures) BITMART_API_KEY, BITMART_API_SECRET, BITMART_API_MEMO references/bitmart-futures-skill.md
BitMart (Spot) same as above references/bitmart-spot-skill.md
OKX OKX_API_KEY, OKX_SECRET_KEY, OKX_PASSPHRASE references/okx-skill.md
Bybit BYBIT_API_KEY, BYBIT_API_SECRET references/bybit-skill.md
BingX BINGX_API_KEY, BINGX_SECRET_KEY references/bingx-skill.md
Bitget BITGET_API_KEY, BITGET_SECRET_KEY, BITGET_PASSPHRASE references/bitget-skill.md
Binance BINANCE_API_KEY, BINANCE_SECRET_KEY references/binance-skill.md
Bitfinex BITFINEX_API_KEY, BITFINEX_API_SECRET references/bitfinex-skill.md

Workflow for all exchanges:

  1. Verify credentials from .env — if missing, STOP
  2. READ → call, parse, display
  3. WRITE → present summary → ask "CONFIRM" → execute
  4. After order → verify status
Weekly Installs
579
GitHub Stars
35
First Seen
Today