234 lines
6.1 KiB
Markdown
234 lines
6.1 KiB
Markdown
---
|
|
name: polymarket
|
|
description: Comprehensive Polymarket skill covering prediction markets, API, trading, market data, and real-time WebSocket data streaming. Build applications with Polymarket services, monitor live trades, and integrate market predictions.
|
|
---
|
|
|
|
# Polymarket Comprehensive Skill
|
|
|
|
Complete assistance with Polymarket development - covering the full platform (API, trading, market data) and the real-time data streaming client (WebSocket subscriptions for live market activity).
|
|
|
|
## When to Use This Skill
|
|
|
|
This skill should be triggered when:
|
|
|
|
**Platform & API:**
|
|
- Working with Polymarket prediction markets
|
|
- Using Polymarket API for market data
|
|
- Implementing trading strategies
|
|
- Building applications with Polymarket services
|
|
- Learning Polymarket best practices
|
|
|
|
**Real-Time Data Streaming:**
|
|
- Connecting to Polymarket's WebSocket service
|
|
- Building prediction market monitoring tools
|
|
- Processing live trades, orders, and market updates
|
|
- Monitoring market comments and social reactions
|
|
- Tracking RFQ (Request for Quote) activity
|
|
- Integrating crypto price feeds
|
|
|
|
## Quick Reference
|
|
|
|
### Real-Time Data Client Setup
|
|
|
|
**Installation:**
|
|
```bash
|
|
npm install @polymarket/real-time-data-client
|
|
```
|
|
|
|
**Basic Usage:**
|
|
```typescript
|
|
import { RealTimeDataClient } from "@polymarket/real-time-data-client";
|
|
|
|
const onMessage = (message: Message): void => {
|
|
console.log(message.topic, message.type, message.payload);
|
|
};
|
|
|
|
const onConnect = (client: RealTimeDataClient): void => {
|
|
client.subscribe({
|
|
subscriptions: [{
|
|
topic: "activity",
|
|
type: "trades"
|
|
}]
|
|
});
|
|
};
|
|
|
|
new RealTimeDataClient({ onMessage, onConnect }).connect();
|
|
```
|
|
|
|
### Supported WebSocket Topics
|
|
|
|
**1. Activity (`activity`)**
|
|
- `trades` - Completed trades
|
|
- `orders_matched` - Order matching events
|
|
- Filters: `{"event_slug":"string"}` OR `{"market_slug":"string"}`
|
|
|
|
**2. Comments (`comments`)**
|
|
- `comment_created`, `comment_removed`
|
|
- `reaction_created`, `reaction_removed`
|
|
- Filters: `{"parentEntityID":number,"parentEntityType":"Event"}`
|
|
|
|
**3. RFQ (`rfq`)**
|
|
- Request/Quote lifecycle events
|
|
- No filters, no auth required
|
|
|
|
**4. Crypto Prices (`crypto_prices`, `crypto_prices_chainlink`)**
|
|
- `update` - Real-time price feeds
|
|
- Filters: `{"symbol":"BTC"}` (optional)
|
|
|
|
**5. CLOB User (`clob_user`)** ⚠️ Requires Auth
|
|
- `order` - User's order updates
|
|
- `trade` - User's trade executions
|
|
|
|
**6. CLOB Market (`clob_market`)**
|
|
- `price_change` - Price movements
|
|
- `agg_orderbook` - Aggregated order book
|
|
- `last_trade_price` - Latest prices
|
|
- `market_created`, `market_resolved`
|
|
|
|
### Authentication for User Data
|
|
|
|
```typescript
|
|
client.subscribe({
|
|
subscriptions: [{
|
|
topic: "clob_user",
|
|
type: "*",
|
|
clob_auth: {
|
|
key: "your-api-key",
|
|
secret: "your-api-secret",
|
|
passphrase: "your-passphrase"
|
|
}
|
|
}]
|
|
});
|
|
```
|
|
|
|
### Common Use Cases
|
|
|
|
**Monitor Specific Market:**
|
|
```typescript
|
|
client.subscribe({
|
|
subscriptions: [{
|
|
topic: "activity",
|
|
type: "trades",
|
|
filters: `{"market_slug":"btc-above-100k-2024"}`
|
|
}]
|
|
});
|
|
```
|
|
|
|
**Track Multiple Markets:**
|
|
```typescript
|
|
client.subscribe({
|
|
subscriptions: [{
|
|
topic: "clob_market",
|
|
type: "price_change",
|
|
filters: `["100","101","102"]`
|
|
}]
|
|
});
|
|
```
|
|
|
|
**Monitor Event Comments:**
|
|
```typescript
|
|
client.subscribe({
|
|
subscriptions: [{
|
|
topic: "comments",
|
|
type: "*",
|
|
filters: `{"parentEntityID":12345,"parentEntityType":"Event"}`
|
|
}]
|
|
});
|
|
```
|
|
|
|
## Reference Files
|
|
|
|
This skill includes comprehensive documentation in `references/`:
|
|
|
|
**Platform Documentation:**
|
|
- **api.md** - Polymarket API documentation
|
|
- **getting_started.md** - Getting started guide
|
|
- **guides.md** - Development guides
|
|
- **learn.md** - Learning resources
|
|
- **trading.md** - Trading documentation
|
|
- **other.md** - Additional resources
|
|
|
|
**Real-Time Client:**
|
|
- **README.md** - WebSocket client API and examples
|
|
- **llms.md** - LLM integration guide
|
|
- **llms-full.md** - Complete LLM documentation
|
|
|
|
Use `view` to read specific reference files for detailed information.
|
|
|
|
## Key Features
|
|
|
|
**Platform Capabilities:**
|
|
✅ Prediction market creation and resolution
|
|
✅ Trading API (REST & WebSocket)
|
|
✅ Market data queries
|
|
✅ User portfolio management
|
|
✅ Event and market discovery
|
|
|
|
**Real-Time Streaming:**
|
|
✅ WebSocket-based persistent connections
|
|
✅ Topic-based subscriptions
|
|
✅ Dynamic subscription management
|
|
✅ Filter support for targeted data
|
|
✅ User authentication for private data
|
|
✅ TypeScript with full type safety
|
|
✅ Initial data dumps on connection
|
|
|
|
## Best Practices
|
|
|
|
### WebSocket Connection Management
|
|
- Use `onConnect` callback for subscriptions
|
|
- Implement reconnection logic for production
|
|
- Clean up with `disconnect()` when done
|
|
- Handle authentication errors gracefully
|
|
|
|
### Subscription Strategy
|
|
- Use wildcards (`"*"`) sparingly
|
|
- Apply filters to reduce data volume
|
|
- Unsubscribe from unused streams
|
|
- Process messages asynchronously
|
|
|
|
### Performance
|
|
- Consider batching high-frequency data
|
|
- Use filters to minimize client processing
|
|
- Validate message payloads before use
|
|
|
|
## Requirements
|
|
|
|
- **Node.js**: 14+ recommended
|
|
- **TypeScript**: Optional but recommended
|
|
- **Package Manager**: npm or yarn
|
|
|
|
## Resources
|
|
|
|
### Official Links
|
|
- **Polymarket Platform**: https://polymarket.com
|
|
- **Real-Time Client Repo**: https://github.com/Polymarket/real-time-data-client
|
|
- **API Documentation**: See references/api.md
|
|
|
|
### Working with This Skill
|
|
|
|
**For Beginners:**
|
|
Start with `getting_started.md` for foundational concepts.
|
|
|
|
**For API Integration:**
|
|
Use `api.md` and `trading.md` for REST API details.
|
|
|
|
**For Real-Time Data:**
|
|
Use `README.md` for WebSocket client implementation.
|
|
|
|
**For LLM Integration:**
|
|
Use `llms.md` and `llms-full.md` for AI/ML use cases.
|
|
|
|
## Notes
|
|
|
|
- Real-Time Client is TypeScript/JavaScript (not Python)
|
|
- Some WebSocket topics require authentication
|
|
- Use filters to manage message volume effectively
|
|
- All timestamps are Unix timestamps
|
|
- Market IDs are strings (e.g., "100", "101")
|
|
- Platform documentation covers both REST API and WebSocket usage
|
|
|
|
---
|
|
|
|
**This comprehensive skill combines Polymarket platform expertise with real-time data streaming capabilities!**
|