Fintool
second-state/fintool
Financial trading CLIs — spot and perp trading on Hyperliquid, Binance, Coinbase, OKX.
Trade perpetual futures on Binance, Bybit, Hyperliquid, MEXC with up to 200x leverage
$ npx skills add alsk1992/CloddsBot --skill trading-futures -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install alsk1992/CloddsBot trading-futures --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/bundled/trading-futures .claude/skills/trading-futures && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "trading-futures" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/trading-futures into .claude/skills/trading-futures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trading-futures", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/trading-futuresType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add alsk1992/CloddsBot --skill trading-futures -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install alsk1992/CloddsBot trading-futures --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/skills/bundled/trading-futures .agents/skills/trading-futures && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "trading-futures" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/trading-futures into .agents/skills/trading-futures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trading-futures", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add alsk1992/CloddsBot --skill trading-futures -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install alsk1992/CloddsBot trading-futures --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/skills/bundled/trading-futures .cursor/skills/trading-futures && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "trading-futures" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/trading-futures into .cursor/skills/trading-futures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trading-futures", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/alsk1992/CloddsBot.git --path src/skills/bundled/trading-futures--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add alsk1992/CloddsBot --skill trading-futures -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install alsk1992/CloddsBot trading-futures --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/skills/bundled/trading-futures .gemini/skills/trading-futures && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "trading-futures" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/trading-futures into .gemini/skills/trading-futures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trading-futures", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install alsk1992/CloddsBot trading-futuresInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add alsk1992/CloddsBot --skill trading-futures -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/skills/bundled/trading-futures .github/skills/trading-futures && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "trading-futures" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/trading-futures into .github/skills/trading-futures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trading-futures", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add alsk1992/CloddsBot --skill trading-futures -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install alsk1992/CloddsBot trading-futures --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/skills/bundled/trading-futures .opencode/skills/trading-futures && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "trading-futures" agent skill from https://github.com/alsk1992/CloddsBot/tree/main/src/skills/bundled/trading-futures into .opencode/skills/trading-futures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trading-futures", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
trading-futuresTrade perpetual futures on Binance, Bybit, Hyperliquid, MEXC with up to 200x leverage
Trading Futures is an agent skill from alsk1992/CloddsBot. Trade perpetual futures on Binance, Bybit, Hyperliquid, MEXC with up to 200x leverage
Its SKILL.md is about 5.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `index.ts`).
It sits in Business, Finance & HR, covering Trading and backtesting. It works with Binance and Hyperliquid. The repository describes itself as: Open Source AI trading agent that operates autonomously across 1000+ markets - Polymarket, Kalshi, Binance, Hyperliquid, Solana DEXs, 5 EVM chains. Scans for edge, executes… The licence is MIT.
Read from SKILL.md and the folder at commit c930628. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
BINANCE_API_KEYBINANCE_API_SECRETBYBIT_API_KEYBYBIT_API_SECRETMEXC_API_KEYMEXC_API_SECRETHYPERLIQUID_PRIVATE_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Trading Futures loads about 5.6k tokens when it runs. Until then it costs about 25 tokens; SKILL.md has 232 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from alsk1992/CloddsBot at commit c930628, republished under its MIT licence (© alsk1992). 232 words, ~5,578 tokens.
.claude/skills/trading-futures/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Trade leveraged perpetual futures across 4 exchanges with database tracking, custom strategies, and A/B testing.
200+ methods across 4 exchanges. This is the complete reference.
| Exchange | Type | Max Leverage | KYC | API Methods |
|---|---|---|---|---|
| Binance Futures | CEX | 125x | Yes | 55+ |
| Bybit | CEX | 100x | Yes | 50+ |
| MEXC | CEX | 200x | No (small) | 35+ |
| Hyperliquid | DEX | 50x | No | 60+ |
# Binance Futures
BINANCE_API_KEY=your_api_key
BINANCE_API_SECRET=your_api_secret
# Bybit
BYBIT_API_KEY=your_api_key
BYBIT_API_SECRET=your_api_secret
# MEXC (No KYC for small amounts)
MEXC_API_KEY=your_api_key
MEXC_API_SECRET=your_api_secret
# Hyperliquid (Fully decentralized, No KYC)
HYPERLIQUID_PRIVATE_KEY=your_private_key
HYPERLIQUID_WALLET_ADDRESS=0x...
# Optional: Database for trade tracking
DATABASE_URL=postgres://user:pass@localhost:5432/clodds/futures balance [exchange] # Check margin balance (all or specific)
/futures positions # View all open positions
/futures positions <exchange> # View positions on specific exchange/futures long <symbol> <size> [leverage]x # Open long position
/futures short <symbol> <size> [leverage]x # Open short position
# Examples:
/futures long BTCUSDT 0.1 10x # Open 0.1 BTC long at 10x
/futures short ETHUSDT 1 20x # Open 1 ETH short at 20x
/futures long BTCUSDT 0.01 # Use default leverage/futures tp <symbol> <price> # Set take-profit
/futures sl <symbol> <price> # Set stop-loss
/futures tpsl <symbol> <tp> <sl> # Set both at once
# Examples:
/futures tp BTCUSDT 105000 # Take profit at $105k
/futures sl BTCUSDT 95000 # Stop loss at $95k
/futures tpsl BTCUSDT 105000 95000 # Both/futures close <symbol> # Close specific position
/futures close-all # Close ALL positions (all exchanges)
/futures close-all <exchange> # Close all on specific exchange/futures markets [exchange] # List available markets
/futures price <symbol> # Get current price
/futures funding <symbol> # Check funding rate
/futures orderbook <symbol> # View orderbook depth/futures stats # Trade statistics from database
/futures history [symbol] # Trade history
/futures pnl [period] # P&L summary (day/week/month)/futures leverage <symbol> <value> # Set leverage
/futures margin <symbol> <mode> # Set margin mode (cross/isolated)import { setupFromEnv } from 'clodds/trading/futures';
// Auto-configure from environment variables
const { clients, database, strategyEngine } = await setupFromEnv();
// Access individual clients
const binance = clients.binance;
const bybit = clients.bybit;
const mexc = clients.mexc;
const hyperliquid = clients.hyperliquid;import {
BinanceFuturesClient,
BybitFuturesClient,
MexcFuturesClient,
HyperliquidClient,
FuturesDatabase,
StrategyEngine,
} from 'clodds/trading/futures';
// Binance
const binance = new BinanceFuturesClient({
apiKey: process.env.BINANCE_API_KEY!,
apiSecret: process.env.BINANCE_API_SECRET!,
testnet: false, // true for testnet
});
// Bybit
const bybit = new BybitFuturesClient({
apiKey: process.env.BYBIT_API_KEY!,
apiSecret: process.env.BYBIT_API_SECRET!,
testnet: false,
});
// MEXC (No KYC)
const mexc = new MexcFuturesClient({
apiKey: process.env.MEXC_API_KEY!,
apiSecret: process.env.MEXC_API_SECRET!,
});
// Hyperliquid (Decentralized, No KYC)
const hyperliquid = new HyperliquidClient({
privateKey: process.env.HYPERLIQUID_PRIVATE_KEY!,
walletAddress: process.env.HYPERLIQUID_WALLET_ADDRESS!,
testnet: false,
});// Prices & Tickers
await binance.getMarkPrice('BTCUSDT');
await binance.getTicker24h('BTCUSDT');
await binance.getAllTickers();
await binance.getBookTicker('BTCUSDT');
// Orderbook & Trades
await binance.getOrderBook('BTCUSDT', 100);
await binance.getRecentTrades('BTCUSDT', 500);
await binance.getHistoricalTrades('BTCUSDT', 500);
await binance.getAggTrades('BTCUSDT');
// Klines (Candlesticks)
await binance.getKlines('BTCUSDT', '1h', 100);
await binance.getContinuousKlines('BTCUSDT', '1h', 'PERPETUAL');
await binance.getIndexPriceKlines('BTCUSDT', '1h');
await binance.getMarkPriceKlines('BTCUSDT', '1h');
await binance.getPremiumIndexKlines('BTCUSDT', '1h');
// Funding Rates
await binance.getFundingRate('BTCUSDT');
await binance.getFundingRateHistory('BTCUSDT', 100);
// Market Info
await binance.getExchangeInfo();
await binance.getOpenInterest('BTCUSDT');
await binance.getOpenInterestHistory('BTCUSDT', '1h');// Place Orders
await binance.placeOrder({
symbol: 'BTCUSDT',
side: 'BUY',
type: 'MARKET',
quantity: 0.01,
});
await binance.placeOrder({
symbol: 'BTCUSDT',
side: 'BUY',
type: 'LIMIT',
quantity: 0.01,
price: 95000,
timeInForce: 'GTC',
});
// With TP/SL
await binance.placeOrder({
symbol: 'BTCUSDT',
side: 'BUY',
type: 'MARKET',
quantity: 0.01,
takeProfit: 105000,
stopLoss: 95000,
});
// Batch Orders
await binance.placeBatchOrders([
{ symbol: 'BTCUSDT', side: 'BUY', type: 'LIMIT', quantity: 0.01, price: 94000 },
{ symbol: 'BTCUSDT', side: 'BUY', type: 'LIMIT', quantity: 0.01, price: 93000 },
]);
// Modify & Cancel
await binance.modifyOrder('BTCUSDT', orderId, { quantity: 0.02 });
await binance.cancelOrder('BTCUSDT', orderId);
await binance.cancelAllOrders('BTCUSDT');
await binance.cancelBatchOrders('BTCUSDT', [orderId1, orderId2]);
// Auto-cancel
await binance.setAutoCancel(60000); // Cancel all after 60s
await binance.cancelAutoCancel();// Account Info
await binance.getAccountInfo();
await binance.getBalance();
await binance.getPositions();
await binance.getPositionRisk();
// Orders & History
await binance.getOpenOrders();
await binance.getOpenOrders('BTCUSDT');
await binance.getAllOrders('BTCUSDT');
await binance.getOrder('BTCUSDT', orderId);
await binance.getTradeHistory('BTCUSDT');
await binance.getIncomeHistory();
await binance.getIncomeHistory('BTCUSDT', 'REALIZED_PNL');
// Commission
await binance.getCommissionRate('BTCUSDT');// Leverage
await binance.setLeverage('BTCUSDT', 10);
await binance.getLeverageBrackets();
await binance.getLeverageBrackets('BTCUSDT');
// Margin Mode
await binance.setMarginType('BTCUSDT', 'ISOLATED');
await binance.modifyIsolatedMargin('BTCUSDT', 100, 'ADD');
await binance.modifyIsolatedMargin('BTCUSDT', 50, 'REDUCE');
// Position Mode
await binance.getPositionMode();
await binance.setPositionMode(true); // Hedge mode
await binance.setPositionMode(false); // One-way mode
// Multi-Asset Mode
await binance.getMultiAssetMode();
await binance.setMultiAssetMode(true);// Market Analytics
await binance.getLongShortRatio('BTCUSDT', '1h');
await binance.getTopTraderLongShortRatio('BTCUSDT', '1h');
await binance.getTopTraderPositions('BTCUSDT', '1h');
await binance.getGlobalLongShortRatio('BTCUSDT', '1h');
await binance.getTakerBuySellVolume('BTCUSDT', '1h');// Staking
await binance.getStakingProducts();
await binance.stake('BNB', 10);
await binance.unstake('BNB', 5);
await binance.getStakingHistory();
await binance.getStakingPositions();// Convert between assets
await binance.getConvertPairs('USDT', 'BTC');
await binance.sendQuote('USDT', 'BTC', 100);
await binance.acceptQuote(quoteId);
await binance.getConvertHistory();await binance.getPortfolioMarginAccount();
await binance.getPortfolioMarginBankruptcyLoan();
await binance.repayPortfolioMarginLoan();await bybit.getTickers('linear');
await bybit.getTickers('linear', 'BTCUSDT');
await bybit.getOrderbook('BTCUSDT', 'linear');
await bybit.getKline('BTCUSDT', '1h', 'linear');
await bybit.getMarkPriceKline('BTCUSDT', '1h', 'linear');
await bybit.getIndexPriceKline('BTCUSDT', '1h', 'linear');
await bybit.getPremiumIndexPriceKline('BTCUSDT', '1h', 'linear');
await bybit.getInstrumentsInfo('linear');
await bybit.getFundingHistory('BTCUSDT', 'linear');
await bybit.getPublicTradingHistory('BTCUSDT', 'linear');
await bybit.getOpenInterest('BTCUSDT', 'linear', '1h');
await bybit.getHistoricalVolatility();
await bybit.getInsurance();
await bybit.getRiskLimit('linear');// Place Order
await bybit.placeOrder({
category: 'linear',
symbol: 'BTCUSDT',
side: 'Buy',
orderType: 'Market',
qty: '0.01',
});
await bybit.placeOrder({
category: 'linear',
symbol: 'BTCUSDT',
side: 'Buy',
orderType: 'Limit',
qty: '0.01',
price: '95000',
timeInForce: 'GTC',
});
// Batch Orders
await bybit.placeBatchOrders('linear', [
{ symbol: 'BTCUSDT', side: 'Buy', orderType: 'Limit', qty: '0.01', price: '94000' },
{ symbol: 'BTCUSDT', side: 'Buy', orderType: 'Limit', qty: '0.01', price: '93000' },
]);
// Modify & Cancel
await bybit.amendOrder({ category: 'linear', symbol: 'BTCUSDT', orderId, qty: '0.02' });
await bybit.cancelOrder({ category: 'linear', symbol: 'BTCUSDT', orderId });
await bybit.cancelAllOrders({ category: 'linear', symbol: 'BTCUSDT' });
await bybit.cancelBatchOrders('linear', [{ symbol: 'BTCUSDT', orderId }]);await bybit.getWalletBalance('UNIFIED');
await bybit.getPositionInfo('linear');
await bybit.getPositionInfo('linear', 'BTCUSDT');
await bybit.getOpenOrders('linear');
await bybit.getOrderHistory('linear');
await bybit.getExecutionList('linear');
await bybit.getClosedPnl('linear');
await bybit.getBorrowHistory();
await bybit.getCollateralInfo();
await bybit.getCoinGreeks();
await bybit.getFeeRate('linear', 'BTCUSDT');
await bybit.getAccountInfo();
await bybit.getTransactionLog();
await bybit.getMMPState('linear');
await bybit.setMMP({ baseCoin: 'BTC', window: '5000', frozenPeriod: '100', qtyLimit: '10', deltaLimit: '100' });
await bybit.resetMMP('BTC');await bybit.setLeverage({ category: 'linear', symbol: 'BTCUSDT', buyLeverage: '10', sellLeverage: '10' });
await bybit.setMarginMode('ISOLATED_MARGIN');
await bybit.setPositionMode({ category: 'linear', mode: 0 }); // 0=one-way, 3=hedge
await bybit.setRiskLimit({ category: 'linear', symbol: 'BTCUSDT', riskId: 1 });
await bybit.setTradingStop({ category: 'linear', symbol: 'BTCUSDT', takeProfit: '105000', stopLoss: '95000' });
await bybit.setTpSlMode({ category: 'linear', symbol: 'BTCUSDT', tpSlMode: 'Full' });
await bybit.addOrReduceMargin({ category: 'linear', symbol: 'BTCUSDT', margin: '100' });
await bybit.switchCrossIsolatedMargin({ category: 'linear', symbol: 'BTCUSDT', tradeMode: 1, buyLeverage: '10', sellLeverage: '10' });await bybit.getCopyTradingLeaders();
await bybit.followLeader(leaderId);
await bybit.unfollowLeader(leaderId);
await bybit.getCopyPositions();
await bybit.closeCopyPosition(symbol);await bybit.getLendingProducts();
await bybit.depositToLending(productId, amount);
await bybit.redeemFromLending(productId, amount);
await bybit.getLendingOrders();
await bybit.getEarnProducts();
await bybit.getEarnOrders();await hyperliquid.getMeta();
await hyperliquid.getMetaAndAssetCtxs();
await hyperliquid.getAssetCtxs();
await hyperliquid.getAllMids();
await hyperliquid.getCandleSnapshot('BTC', '1h', startTime, endTime);
await hyperliquid.getL2Snapshot('BTC');
await hyperliquid.getFundingHistory('BTC', startTime, endTime);
await hyperliquid.getRecentTrades('BTC');
await hyperliquid.getPredictedFunding();// Place Order
await hyperliquid.placeOrder({
asset: 'BTC',
isBuy: true,
sz: 0.01,
limitPx: 95000,
orderType: { limit: { tif: 'Gtc' } },
reduceOnly: false,
});
// Market Order
await hyperliquid.placeOrder({
asset: 'BTC',
isBuy: true,
sz: 0.01,
limitPx: null,
orderType: { market: {} },
});
// TWAP Order
await hyperliquid.placeTwapOrder({
asset: 'BTC',
isBuy: true,
sz: 1.0,
duration: 3600, // 1 hour
randomize: true,
});
// Modify & Cancel
await hyperliquid.modifyOrder(orderId, { sz: 0.02 });
await hyperliquid.cancelOrder('BTC', orderId);
await hyperliquid.cancelAllOrders();
await hyperliquid.cancelOrdersByCloid(['cloid1', 'cloid2']);
// Batch Operations
await hyperliquid.batchModifyOrders([{ oid: orderId1, sz: 0.02 }, { oid: orderId2, sz: 0.03 }]);await hyperliquid.getUserState(walletAddress);
await hyperliquid.getClearinghouseState(walletAddress);
await hyperliquid.getOpenOrders(walletAddress);
await hyperliquid.getFrontendOpenOrders(walletAddress);
await hyperliquid.getUserFills(walletAddress);
await hyperliquid.getUserFillsByTime(walletAddress, startTime, endTime);
await hyperliquid.getUserFunding(walletAddress);
await hyperliquid.getUserFundingHistory(walletAddress, startTime, endTime);
await hyperliquid.getHistoricalOrders(walletAddress);
await hyperliquid.getOrderStatus(walletAddress, orderId);
await hyperliquid.getTwapHistory(walletAddress);
await hyperliquid.getSubaccounts(walletAddress);await hyperliquid.updateLeverage('BTC', 10, false); // false = cross
await hyperliquid.updateLeverage('BTC', 10, true); // true = isolated
await hyperliquid.updateIsolatedMargin('BTC', 100);await hyperliquid.usdTransfer(toAddress, amount);
await hyperliquid.spotTransfer(toAddress, token, amount);
await hyperliquid.withdraw(amount);
await hyperliquid.classTransfer(amount, toPerp);await hyperliquid.getSpotMeta();
await hyperliquid.getSpotMetaAndAssetCtxs();
await hyperliquid.getSpotClearinghouseState(walletAddress);
await hyperliquid.placeSpotOrder({
asset: 'HYPE',
isBuy: true,
sz: 10,
limitPx: 25,
});await hyperliquid.getVaultDetails(vaultAddress);
await hyperliquid.getUserVaultEquities(walletAddress);
await hyperliquid.depositToVault(vaultAddress, amount);
await hyperliquid.withdrawFromVault(vaultAddress, amount);
await hyperliquid.getAllVaults();await hyperliquid.getValidatorSummaries();
await hyperliquid.getUserStakingSummary(walletAddress);
await hyperliquid.stakeHype(amount, validatorAddress);
await hyperliquid.unstakeHype(amount, validatorAddress);
await hyperliquid.claimStakingRewards();await hyperliquid.getDelegatorSummary(walletAddress);
await hyperliquid.getDelegatorHistory(walletAddress);
await hyperliquid.delegate(amount, agentAddress);
await hyperliquid.undelegate(amount, agentAddress);await hyperliquid.getReferralState(walletAddress);
await hyperliquid.createReferralCode(code);
await hyperliquid.getReferredUsers(walletAddress);
await hyperliquid.getUserAnalytics(walletAddress);
await hyperliquid.getLeaderboard();
await hyperliquid.getMaxBuilderFee();await mexc.getContractDetail('BTC_USDT');
await mexc.getAllContractDetails();
await mexc.getOrderbook('BTC_USDT');
await mexc.getKlines('BTC_USDT', '1h');
await mexc.getTicker('BTC_USDT');
await mexc.getAllTickers();
await mexc.getFundingRate('BTC_USDT');
await mexc.getFundingRateHistory('BTC_USDT');
await mexc.getOpenInterest('BTC_USDT');
await mexc.getRecentTrades('BTC_USDT');
await mexc.getIndexPrice('BTC_USDT');
await mexc.getFairPrice('BTC_USDT');// Place Order
await mexc.placeOrder({
symbol: 'BTC_USDT',
side: 1, // 1=Open Long, 2=Close Short, 3=Open Short, 4=Close Long
type: 5, // 1=Limit, 2=Post Only, 3=IOC, 4=FOK, 5=Market
vol: 1, // Contracts
leverage: 10,
});
// With TP/SL
await mexc.placeOrder({
symbol: 'BTC_USDT',
side: 1,
type: 5,
vol: 1,
leverage: 10,
takeProfit: 105000,
stopLoss: 95000,
});
// Batch Orders
await mexc.placeBatchOrders([
{ symbol: 'BTC_USDT', side: 1, type: 1, vol: 1, price: 94000, leverage: 10 },
{ symbol: 'BTC_USDT', side: 1, type: 1, vol: 1, price: 93000, leverage: 10 },
]);
// Trigger Order
await mexc.placeTriggerOrder({
symbol: 'BTC_USDT',
side: 1,
type: 1,
vol: 1,
triggerPrice: 96000,
triggerType: 1, // 1=Last Price, 2=Fair Price, 3=Index Price
executionPrice: 96100,
leverage: 10,
});
// Cancel
await mexc.cancelOrder('BTC_USDT', orderId);
await mexc.cancelAllOrders('BTC_USDT');
await mexc.cancelBatchOrders([orderId1, orderId2]);await mexc.getAccountInfo();
await mexc.getPositions();
await mexc.getPositions('BTC_USDT');
await mexc.getOpenOrders();
await mexc.getOpenOrders('BTC_USDT');
await mexc.getOrderHistory('BTC_USDT');
await mexc.getTradeHistory('BTC_USDT');
await mexc.getTriggerOrders();
await mexc.getStopOrders();
await mexc.getRiskLimit('BTC_USDT');
await mexc.getAssets();
await mexc.getAssetRecords();await mexc.setLeverage('BTC_USDT', 10);
await mexc.changeMarginMode('BTC_USDT', 1); // 1=Isolated, 2=Cross
await mexc.changePositionMode(1); // 1=Hedge, 2=One-way
await mexc.autoAddMargin('BTC_USDT', true);import { FuturesDatabase } from 'clodds/trading/futures';
const db = new FuturesDatabase(process.env.DATABASE_URL!);
await db.initialize(); // Creates tables if not existawait db.logTrade({
exchange: 'binance',
symbol: 'BTCUSDT',
orderId: '12345',
side: 'BUY',
price: 95000,
quantity: 0.01,
realizedPnl: 50.25,
commission: 0.95,
commissionAsset: 'USDT',
timestamp: Date.now(),
isMaker: false,
strategy: 'momentum',
variant: 'aggressive',
});// Get trades
const trades = await db.getTrades({ exchange: 'binance' });
const btcTrades = await db.getTrades({ exchange: 'binance', symbol: 'BTCUSDT' });
const recentTrades = await db.getTrades({ limit: 100 });
// Get statistics
const stats = await db.getTradeStats('binance');
// { totalTrades, winRate, totalPnl, avgPnl, bestTrade, worstTrade }
// Get variant performance
const results = await db.getVariantPerformance('momentum');
// { aggressive: { trades, pnl, winRate }, conservative: { ... } }import { FuturesStrategy, StrategySignal } from 'clodds/trading/futures';
interface FuturesStrategy {
name: string;
analyze(data: MarketData): Promise<StrategySignal | null>;
}
interface StrategySignal {
action: 'BUY' | 'SELL' | 'CLOSE';
symbol: string;
confidence: number; // 0-1
reason: string;
metadata?: Record<string, unknown>;
}class RSIStrategy implements FuturesStrategy {
name = 'rsi-strategy';
constructor(private config: { period: number; oversold: number; overbought: number }) {}
async analyze(data: MarketData): Promise<StrategySignal | null> {
const rsi = calculateRSI(data.closes, this.config.period);
if (rsi < this.config.oversold) {
return {
action: 'BUY',
symbol: data.symbol,
confidence: (this.config.oversold - rsi) / this.config.oversold,
reason: `RSI oversold at ${rsi.toFixed(1)}`,
metadata: { rsi },
};
}
if (rsi > this.config.overbought) {
return {
action: 'SELL',
symbol: data.symbol,
confidence: (rsi - this.config.overbought) / (100 - this.config.overbought),
reason: `RSI overbought at ${rsi.toFixed(1)}`,
metadata: { rsi },
};
}
return null;
}
}const engine = new StrategyEngine(db);
engine.registerStrategy(new RSIStrategy({ period: 14, oversold: 30, overbought: 70 }));
// A/B Test Variants
engine.registerVariant('rsi-strategy', 'aggressive', { oversold: 25, overbought: 75 });
engine.registerVariant('rsi-strategy', 'conservative', { oversold: 35, overbought: 65 });| Strategy | Logic | Config |
|---|---|---|
| MomentumStrategy | Follow price trends | lookbackPeriod, threshold |
| MeanReversionStrategy | Buy dips, sell rallies | maPeriod, deviationMultiplier |
| GridStrategy | Place orders at intervals | gridSize, levels, spacing |
All clients throw typed errors:
import { FuturesError, InsufficientBalanceError, InvalidOrderError } from 'clodds/trading/futures';
try {
await binance.placeOrder({ ... });
} catch (error) {
if (error instanceof InsufficientBalanceError) {
console.log('Not enough margin');
} else if (error instanceof InvalidOrderError) {
console.log('Invalid order params:', error.message);
} else if (error instanceof FuturesError) {
console.log('Exchange error:', error.code, error.message);
}
}| Exchange | Limit | Notes |
|---|---|---|
| Binance | 2400/min | Per IP, weight-based |
| Bybit | 120/min | Per endpoint |
| Hyperliquid | 1200/min | Per wallet |
| MEXC | 20/sec | Per IP |
All clients automatically handle rate limiting with exponential backoff.
© alsk1992, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in src/skills/bundled/trading-futures of alsk1992/CloddsBot.
Open the folder on GitHubat commit c930628
Trading Futures next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Trading Futures this skillalsk1992/CloddsBot | 3k | — | ~5.6k | Automated safety check: Pass | MIT | |
| Fintoolsecond-state/fintool | 316 | — | ~5.9k | Automated safety check: Pass | None | |
| Heytraders APILeoYeAI/openclaw-master-skills | 2.2k | — | ~4.2k | Automated safety check: Pass | MIT | |
| Moss Trade Bot Factorymoss-site/moss-trade-bot-skills | 390 | — | ~2.2k | Automated safety check: Pass | MIT-0 | |
| Academy Skillbinance/binance-skills-hub | 1.1k | — | ~3.5k | Automated safety check: Notes | None | |
| Opportunity RadarNunchi-trade/agent-cli | 521 | — | ~1.2k | Automated safety check: Pass | MIT |
second-state/fintool
Financial trading CLIs — spot and perp trading on Hyperliquid, Binance, Coinbase, OKX.
LeoYeAI/openclaw-master-skills
Trade crypto (Binance, Upbit, Hyperliquid, Lighter) and prediction markets (Polymarket).
moss-site/moss-trade-bot-skills
用户用自然语言描述币种、回测时间区间和策略风格时,自动创建加密货币交易 Bot,读取内置 Hyperliquid CSV 覆盖并运行本地回测/进化;若币种、时间区间或策略风格缺失,则主动询问缺失项并展示 CSV 解析出的可用回测区间。也可在回测后上传平台 verify 或创建模拟实盘 Bot。适用于创建bot、交易策略、回测、backtest、evolve、upload verify、live…
binance/binance-skills-hub
Retrieve Binance Academy's official educational content (Glossary, Courses, Learn & Earn, Articles) for AI chat.
Nunchi-trade/agent-cli
Screens all Hyperliquid perps and surfaces top trading setups
binance/binance-skills-hub
A skill your agent uses when users ask for World Cup or 世界杯 AI match predictions, WC assistant probabilities, World Cup news insights, master analysis, recomputing football match win rates with…
alsk1992/CloddsBot
Local hybrid search for markdown notes and docs. An agent skill from alsk1992/CloddsBot.
alsk1992/CloddsBot
AI Strategy - natural language to trades. An agent skill from alsk1992/CloddsBot.
alsk1992/CloddsBot
Create and manage price alerts for prediction markets. An agent skill from alsk1992/CloddsBot.
alsk1992/CloddsBot
Performance attribution, trade analytics, and strategy optimization
alsk1992/CloddsBot
Automated cross-platform arbitrage detection and monitoring. An agent skill from alsk1992/CloddsBot.
alsk1992/CloddsBot
Automatic response rules, patterns, and scheduled messages. An agent skill from alsk1992/CloddsBot.
Works with
Categories
Trade perpetual futures on Binance, Bybit, Hyperliquid, MEXC with up to 200x leverage. Trading Futures is an agent skill from alsk1992/CloddsBot.
Trading Futures fits situations like: tasks that involve Trading and backtesting.
Run `npx skills add alsk1992/CloddsBot --skill trading-futures -a claude-code`. Or copy the skill folder (src/skills/bundled/trading-futures in alsk1992/CloddsBot) into .claude/skills/trading-futures in your project. Claude Code loads it when a task matches its description.
Run `npx skills add alsk1992/CloddsBot --skill trading-futures -a codex`. Or copy the skill folder (src/skills/bundled/trading-futures in alsk1992/CloddsBot) into .agents/skills/trading-futures in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add alsk1992/CloddsBot --skill trading-futures -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/trading-futures, .gemini/skills/trading-futures, .github/skills/trading-futures and .opencode/skills/trading-futures in your project.
Going by SKILL.md and its folder, Trading Futures needs TypeScript for the scripts in its folder and credentials named BINANCE_API_KEY, BINANCE_API_SECRET, BYBIT_API_KEY and BYBIT_API_SECRET. Our summary lists: Node.js; A credential in BINANCE_API_KEY; A credential in BYBIT_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Trading Futures is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.6k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Trading Futures: Fintool (second-state/fintool, 316 stars), Heytraders API (LeoYeAI/openclaw-master-skills, 2.2k stars), Moss Trade Bot Factory (moss-site/moss-trade-bot-skills, 390 stars) and Academy Skill (binance/binance-skills-hub, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
alsk1992 (a GitHub user) maintains it in alsk1992/CloddsBot, which has 2,951 GitHub stars. The repository holds 116 skills in this directory. The repository was last updated on October 2, 2026.
Source: alsk1992/CloddsBot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.