Back to list
raintree-technology

decibel

by raintree-technology

Platform-agnostic, production-ready Claude Code configurations with hooks, commands, skills, examples, and more.

34🍴 5📅 Jan 21, 2026

SKILL.md


name: decibel description: Decibel on-chain perpetual futures trading platform on Aptos. Covers trading engine, orderbook, TypeScript SDK, REST APIs, WebSocket streams, market data, position management, TWAP orders, and vault operations. Triggers on Decibel, perpetual futures, Aptos trading, on-chain trading, perps, orderbook, TWAP, market data, trading API. allowed-tools: Read, Write, Edit, Grep, Glob, Bash model: sonnet license: MIT metadata: author: raintree version: "1.0"

Decibel Trading Platform Expert

Decibel is a fully on-chain perpetual futures trading platform built on Aptos blockchain.

When to Use

  • Integrating with Decibel trading APIs
  • Building trading bots or applications
  • Understanding on-chain orderbook mechanics
  • Market data queries (prices, orderbook, trades)
  • Position and order management

Platform Overview

Base URLs:

  • REST API: https://api.netna.aptoslabs.com/decibel
  • WebSocket: wss://api.netna.aptoslabs.com/decibel

Core Features:

  • Perpetual futures trading
  • Fully on-chain orderbook
  • TWAP (Time-Weighted Average Price) orders
  • Real-time WebSocket streams
  • Subaccount support
  • Vault strategies

TypeScript SDK

Installation

npm install @decibel/sdk

Client Setup

import { DecibelClient } from "@decibel/sdk";

const client = new DecibelClient({
  apiKey: process.env.DECIBEL_API_KEY,
  network: "mainnet",
});

Market Data

// Get available markets
const markets = await client.getMarkets();

// Get current prices
const prices = await client.getPrices();

// Get orderbook depth
const orderbook = await client.getOrderbook("BTC-PERP", { depth: 10 });

// Get recent trades
const trades = await client.getRecentTrades("BTC-PERP", { limit: 50 });

// Get OHLC/candlesticks
const candles = await client.getCandles("BTC-PERP", {
  interval: "1h",
  limit: 100,
});

Order Management

// Place limit order
const order = await client.placeOrder({
  market: "BTC-PERP",
  side: "buy",
  type: "limit",
  price: 50000,
  size: 0.1,
});

// Place market order
const marketOrder = await client.placeOrder({
  market: "BTC-PERP",
  side: "sell",
  type: "market",
  size: 0.1,
});

// Cancel order
await client.cancelOrder(orderId);

// Cancel all orders
await client.cancelAllOrders({ market: "BTC-PERP" });

Position Management

// Get open positions
const positions = await client.getPositions();

// Get specific position
const position = await client.getPosition("BTC-PERP");

// Close position
await client.closePosition("BTC-PERP");

// Set take-profit/stop-loss
await client.setTPSL("BTC-PERP", {
  takeProfit: 55000,
  stopLoss: 48000,
});

TWAP Orders

// Place TWAP order (reduces slippage)
const twapOrder = await client.placeTWAPOrder({
  market: "BTC-PERP",
  side: "buy",
  size: 1.0,
  duration: 3600, // 1 hour in seconds
  intervals: 12,  // Execute every 5 minutes
});

// Get active TWAP orders
const activeTWAPs = await client.getActiveTWAPOrders();

// Cancel TWAP order
await client.cancelTWAPOrder(twapOrderId);

REST API

Market Data (Unauthenticated)

# Get markets
GET /market-data/markets

# Get prices
GET /market-data/prices

# Get orderbook
GET /market-data/orderbook?market=BTC-PERP&depth=10

# Get recent trades
GET /market-data/trades?market=BTC-PERP&limit=50

# Get candlesticks
GET /market-data/candles?market=BTC-PERP&interval=1h&limit=100

User Endpoints (Authenticated)

# Get account overview
GET /user/account
Headers: Authorization: Bearer {token}

# Get positions
GET /user/positions

# Get open orders
GET /user/orders

# Get order history
GET /user/orders/history

# Get trade history
GET /user/trades

# Get funding rate history
GET /user/funding-history

Transaction Endpoints

# Place order
POST /transactions/place-order
Body: { market, side, type, price?, size }

# Cancel order
POST /transactions/cancel-order
Body: { orderId }

# Deposit to subaccount
POST /transactions/deposit
Body: { amount, subaccountId? }

# Withdraw from subaccount
POST /transactions/withdraw
Body: { amount, subaccountId? }

WebSocket Streams

Connection

const ws = new WebSocket("wss://api.netna.aptoslabs.com/decibel");

ws.onopen = () => {
  // Subscribe to channels
  ws.send(JSON.stringify({
    type: "subscribe",
    channels: ["trades:BTC-PERP", "orderbook:BTC-PERP"],
  }));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log(data);
};

Available Channels

ChannelDescription
trades:{market}Real-time trades
orderbook:{market}Orderbook updates
ticker:{market}Price ticker
accountAccount updates (authenticated)
ordersOrder updates (authenticated)
positionsPosition updates (authenticated)
fillsFill notifications (authenticated)

Authenticated Subscription

ws.send(JSON.stringify({
  type: "auth",
  token: "your-api-token",
}));

ws.send(JSON.stringify({
  type: "subscribe",
  channels: ["account", "orders", "positions", "fills"],
}));

Account Management

Subaccounts

// Create subaccount
const subaccount = await client.createSubaccount({
  name: "Trading Bot 1",
});

// List subaccounts
const subaccounts = await client.getSubaccounts();

// Deposit to subaccount
await client.deposit({
  amount: 1000,
  subaccountId: subaccount.id,
});

// Withdraw from subaccount
await client.withdraw({
  amount: 500,
  subaccountId: subaccount.id,
});

Delegations

// Delegate trading authority
await client.createDelegation({
  delegatee: "0x...",
  permissions: ["trade", "cancel"],
  expiry: Date.now() + 30 * 24 * 60 * 60 * 1000,
});

// Revoke delegation
await client.revokeDelegation(delegationId);

Error Handling

try {
  const order = await client.placeOrder({...});
} catch (error) {
  if (error.code === "INSUFFICIENT_MARGIN") {
    console.log("Not enough margin for this order");
  } else if (error.code === "INVALID_PRICE") {
    console.log("Price outside allowed range");
  } else if (error.code === "RATE_LIMITED") {
    await sleep(1000);
    // Retry
  }
}

Best Practices

DO:

  • Use WebSocket for real-time data
  • Implement proper error handling
  • Use TWAP for large orders
  • Monitor positions and margin
  • Set TP/SL for risk management

DON'T:

  • Poll REST API for real-time data
  • Ignore rate limits
  • Trade without sufficient margin
  • Skip order confirmation

Resources

  • API Docs: https://docs.decibel.trade
  • SDK: @decibel/sdk
  • Package Address: 0xb8a5788314451ce4d2fbbad32e1bad88d4184b73943b7fe5166eab93cf1a5a95

Score

Total Score

75/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon