Skip to content

Commit 2204a11

Browse files
Hiksangclaude
andcommitted
feat: HL spot whitelist — only UBTC/UETH/USOL/HYPE/PURR + mapped tokens
HL has 269 spot tokens (mostly meme). Only use whitelisted major tokens. Lighter spot (8 tokens) all allowed — exchange-curated. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e84daf4 commit 2204a11

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "perp-cli",
3-
"version": "0.8.3",
3+
"version": "0.8.4",
44
"description": "Multi-DEX Perpetual Futures CLI - Pacifica, Hyperliquid, Lighter, Aster",
55
"bin": {
66
"perp": "dist/index.js",

‎src/bot/strategies/spot-perp-arb-strategy.ts‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,13 +235,18 @@ export class SpotPerpArbStrategy implements Strategy {
235235
interface ScoredOpp { symbol: string; spotExchange: string; perpExchange: string; annualized: number; score: FundingScore }
236236
const scoredOpps: ScoredOpp[] = [];
237237

238+
// HL spot: only whitelisted tokens (U-tokens + PURR/HYPE). Lighter spot: all allowed.
239+
const HL_SPOT_WHITELIST = new Set(["UBTC", "UETH", "USOL", "UFART", "UPUMP", "LINK0", "AVAX0", "AAVE0", "PURR", "HYPE"]);
240+
238241
for (const [spotExName, spotExAdapter] of adapters) {
239242
try {
240243
const spotAdapter = await getSpotAdapter(spotExName, spotExAdapter);
241244
if (!spotAdapter) continue;
242245
const spotMarkets = await spotAdapter.getSpotMarkets();
243246
for (const m of spotMarkets) {
244247
const base = m.baseToken.toUpperCase();
248+
// HL spot: skip tokens not in whitelist
249+
if (spotExName === "hyperliquid" && !HL_SPOT_WHITELIST.has(base)) continue;
245250
if (openSymbols.has(base)) continue;
246251
if (Date.now() < (this._failCooldown.get(`${base}:entry`) ?? 0)) continue;
247252
const best = await this.findBestPerp(base, adapters, ratesByExchange);

0 commit comments

Comments
 (0)