market-index

SKILL.md

Market Index - Complete API Reference

Search, discover, and browse markets across all prediction market platforms with advanced filtering and categorization.


Chat Commands

Search

/index search "trump"                       # Search all indexed markets
/index search "election" --platform poly    # Search specific platform
/index search "fed rate" --category finance # Filter by category
/index search "crypto" --min-volume 10000   # Min volume filter
/index search "sports" --active-only        # Active markets only

Browse Categories

/index categories                           # List all categories
/index category politics                    # Browse politics markets
/index category crypto                      # Browse crypto markets
/index category sports                      # Browse sports markets
/index trending                             # Trending markets

Market Discovery

/index new                                  # Newly created markets
/index new --last 24h                       # Last 24 hours
/index hot                                  # High activity markets
/index closing-soon                         # Markets ending soon

Index Management

/index update                               # Refresh market index
/index update poly                          # Update specific platform
/index stats                                # Index statistics
/index status                               # Index health status

TypeScript API Reference

Create Market Index

import { createMarketIndex } from 'clodds/market-index';

const index = createMarketIndex({
  platforms: ['polymarket', 'kalshi', 'manifold', 'betfair'],

  // Auto-refresh
  autoRefresh: true,
  refreshIntervalMs: 300000,  // 5 minutes

  // Storage
  cachePath: './market-index.db',
});

Search Markets

// Full-text search
const results = await index.search('trump election', {
  platforms: ['polymarket', 'kalshi'],
  limit: 20,
  sortBy: 'volume',  // 'volume' | 'relevance' | 'endDate' | 'created'
});

for (const market of results) {
  console.log(`[${market.platform}] ${market.question}`);
  console.log(`  Category: ${market.category}`);
  console.log(`  Volume: $${market.volume.toLocaleString()}`);
  console.log(`  End: ${market.endDate}`);
}

// With filters
const filtered = await index.search('', {
  category: 'politics',
  minVolume: 10000,
  activeOnly: true,
  endsBefore: '2024-12-31',
});

Browse Categories

// Get all categories
const categories = await index.getCategories();

for (const cat of categories) {
  console.log(`${cat.name}: ${cat.marketCount} markets`);
}

// Get markets in category
const politics = await index.getMarketsByCategory('politics', {
  limit: 50,
  sortBy: 'volume',
});

Market Discovery

// Get new markets
const newMarkets = await index.getNewMarkets({
  since: Date.now() - 24 * 60 * 60 * 1000,  // Last 24h
  limit: 20,
});

// Get trending/hot markets
const trending = await index.getTrendingMarkets({
  period: '24h',
  limit: 10,
});

for (const market of trending) {
  console.log(`${market.question}`);
  console.log(`  Volume 24h: $${market.volume24h.toLocaleString()}`);
  console.log(`  Volume change: ${market.volumeChange > 0 ? '+' : ''}${market.volumeChange}%`);
}

// Markets closing soon
const closingSoon = await index.getClosingSoon({
  within: '48h',
  minVolume: 1000,
});

Index Management

// Update index
await index.update();

// Update specific platform
await index.update('polymarket');

// Get index stats
const stats = await index.getStats();

console.log(`Total markets: ${stats.totalMarkets}`);
console.log(`By platform:`);
for (const [platform, count] of Object.entries(stats.byPlatform)) {
  console.log(`  ${platform}: ${count}`);
}
console.log(`By category:`);
for (const [category, count] of Object.entries(stats.byCategory)) {
  console.log(`  ${category}: ${count}`);
}
console.log(`Last updated: ${stats.lastUpdated}`);

// Check status
const status = await index.getStatus();
console.log(`Status: ${status.status}`);
console.log(`Markets indexed: ${status.marketCount}`);
console.log(`Index age: ${status.ageMinutes} minutes`);

Get Single Market

// Get market details
const market = await index.getMarket('polymarket', 'market-123');

console.log(`Question: ${market.question}`);
console.log(`Description: ${market.description}`);
console.log(`Category: ${market.category}`);
console.log(`Platform: ${market.platform}`);
console.log(`Volume: $${market.volume.toLocaleString()}`);
console.log(`Liquidity: $${market.liquidity.toLocaleString()}`);
console.log(`Start: ${market.startDate}`);
console.log(`End: ${market.endDate}`);
console.log(`Outcomes: ${market.outcomes.join(', ')}`);

Categories

Standard categories across platforms:

Category Description
politics Elections, policy, government
crypto Cryptocurrency prices, events
finance Fed rates, stocks, economy
sports Games, tournaments, awards
entertainment Movies, TV, celebrities
science Research, space, climate
technology Tech companies, products
world International events
other Miscellaneous

Search Syntax

Syntax Example Description
Keywords trump election Match any word
Exact phrase "federal reserve" Match exact phrase
Exclude election -trump Exclude word
Platform filter platform:poly Specific platform
Category filter category:politics Specific category

Sorting Options

Option Description
volume Highest volume first
relevance Best match first
endDate Ending soonest first
created Newest first
liquidity Highest liquidity first

Best Practices

  1. Refresh regularly - Markets change frequently
  2. Use filters - Narrow down large result sets
  3. Check liquidity - Not just volume
  4. Monitor new markets - Opportunities in new listings
  5. Track closing dates - Don't miss resolution
Weekly Installs
5
GitHub Stars
59
First Seen
Feb 20, 2026
Installed on
opencode5
gemini-cli5
github-copilot5
codex5
kimi-cli5
amp5