A/B Test Setup
Use when designing an A/B or split test: define the hypothesis, control and variants, estimate sample size, verify tracking, and predeclare metrics and stopping rules.
4,652,548 AI resources indexedWorking toward the world’s largest AI resource index.
Execute trades on prediction markets with slippage protection and order management
---
name: execution
description: "Execute trades on prediction markets with slippage protection and order management"
emoji: "⚡"
gates:
envs:
anyOf:
- POLY_API_KEY
- KALSHI_API_KEY
---
# Execution Service - Complete API Reference
Execute trades on Polymarket and Kalshi with slippage protection, maker orders, and order management.
## Supported Platforms
| Platform | Order Types | Features |
|----------|-------------|----------|
| Polymarket | Limit, Market, Maker | -0.5% maker rebate, GTC/FOK |
| Kalshi | Limit, Market | US regulated |
---
## Chat Commands
### Place Orders
```
/execute buy poly <market> YES 100 @ 0.52 # Limit buy on Polymarket
/execute sell kalshi <market> NO 50 @ 0.48 # Limit sell on Kalshi
/execute market-buy poly <market> YES 100 # Market buy
/execute market-sell poly <market> NO 50 # Market sell
```
### Maker Orders (Rebates)
```
/execute maker-buy poly <market> YES 100 @ 0.52 # Post-only buy
/execute maker-sell poly <market> NO 50 @ 0.48 # Post-only sell
```
### Protected Orders (Slippage Protection)
```
/execute protected-buy poly <market> YES 100 --max-slippage 1%
/execute protected-sell poly <market> NO 50 --max-slippage 0.5%
```
### Order Management
```
/orders open # View open orders
/orders open poly # Open orders on Polymarket
/orders cancel <order-id> # Cancel specific order
/orders cancel-all # Cancel all open orders
/orders cancel-all poly # Cancel all on Polymarket
```
### Slippage Estimation
```
/estimate-slippage poly <market> buy 1000 # Estimate slippage for $1000 buy
/estimate-slippage kalshi <market> sell 500 # Estimate for $500 sell
```
---
## TypeScript API Reference
### Create Execution Service
```typescript
import { createExecutionService } from 'clodds/execution';
const executor = createExecutionService({
polymarket: {
apiKey: process.env.POLY_API_KEY,
apiSecret: process.env.POLY_API_SECRET,
passphrase: process.env.POLY_API_PASSPHRASE,
privateKey: process.env.PRIVATE_KEY,
},
kalshi: {
apiKey: process.env.KALSHI_API_KEY,
privateKey: process.env.KALSHI_PRIVATE_KEY,
},
// Defaults
defaultSlippageTolerance: 0.5, // 0.5%
autoLogTrades: true,
});
```
### Limit Orders
```typescript
// Buy limit order
const order = await executor.buyLimit({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100, // $100
price: 0.52, // 52 cents
timeInForce: 'GTC', // Good-til-cancel
});
console.log(`Order placed: ${order.orderId}`);
console.log(`Status: ${order.status}`);
// Sell limit order
const sellOrder = await executor.sellLimit({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100,
price: 0.55,
});
```
### Market Orders
```typescript
// Market buy - executes immediately at best price
const order = await executor.marketBuy({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100,
});
console.log(`Filled at: ${order.avgFillPrice}`);
console.log(`Filled size: ${order.filledSize}`);
// Market sell
const sellOrder = await executor.marketSell({
platform: 'kalshi',
marketId: 'TRUMP-WIN',
side: 'YES',
size: 50,
});
```
### Maker Orders (Post-Only)
```typescript
// Maker buy - only executes as maker (gets rebate)
const order = await executor.makerBuy({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100,
price: 0.52,
});
// Will be rejected if it would execute immediately as taker
if (order.status === 'rejected') {
console.log('Price too aggressive - would be taker');
}
// Maker sell
const sellOrder = await executor.makerSell({
platform: 'polymarket',
marketId: 'market-123',
side: 'NO',
size: 50,
price: 0.48,
});
```
### Protected Orders (Slippage Protection)
```typescript
// Protected buy - checks slippage before executing
const order = await executor.protectedBuy({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100,
maxSlippage: 0.5, // 0.5% max slippage
});
if (order.status === 'rejected') {
console.log(`Rejected: slippage would be ${order.estimatedSlippage}%`);
} else {
console.log(`Executed with ${order.actualSlippage}% slippage`);
}
// Protected sell
const sellOrder = await executor.protectedSell({
platform: 'kalshi',
marketId: 'TRUMP-WIN',
side: 'YES',
size: 50,
maxSlippage: 1,
});
```
### Order Management
```typescript
// Cancel specific order
await executor.cancelOrder('polymarket', orderId);
// Cancel all orders on platform
await executor.cancelAllOrders('polymarket');
// Cancel all orders for a market
await executor.cancelAllOrders('polymarket', { marketId: 'market-123' });
// Get open orders
const openOrders = await executor.getOpenOrders('polymarket');
for (const order of openOrders) {
console.log(`${order.orderId}: ${order.side} ${order.size} @ ${order.price}`);
console.log(` Status: ${order.status}`);
console.log(` Filled: ${order.filledSize}/${order.size}`);
}
```
### Slippage Estimation
```typescript
// Estimate slippage before executing
const estimate = await executor.estimateSlippage({
platform: 'polymarket',
marketId: 'market-123',
side: 'buy',
size: 1000,
});
console.log(`For $1000 buy:`);
console.log(` Avg fill price: ${estimate.avgFillPrice}`);
console.log(` Expected slippage: ${estimate.slippagePct}%`);
console.log(` Total filled: ${estimate.totalFilled}`);
console.log(` Levels consumed: ${estimate.levelsConsumed}`);
```
---
## Order Types
| Type | Description | Best For |
|------|-------------|----------|
| **Limit** | Execute at specific price or better | Price-sensitive orders |
| **Market** | Execute immediately at best available | Urgent execution |
| **Maker** | Post-only, gets rebate | Collecting rebates |
| **Protected** | Checks slippage before executing | Large orders |
## Time In Force
| Value | Description |
|-------|-------------|
| **GTC** | Good-til-cancel (default) |
| **FOK** | Fill-or-kill - all or nothing |
| **IOC** | Immediate-or-cancel - fill what you can |
---
## Fee Structure
### Polymarket (Verified Jan 2026)
- **Most markets**: 0% maker, 0% taker (zero fees)
- **15-min crypto markets**: Dynamic taker fees up to ~3% at 50/50 odds; makers eligible for rebate program
### Kalshi
- **Taker**: Formula-based ~1.2% average, capped at ~2%
- **Maker**: ~0.17% (formula-based)
---
## Best Practices
1. **Use maker orders** when possible - Pay no fees on Polymarket (most markets)
2. **Check slippage** before large orders
3. **Use protected orders** for size > $500
4. **Set appropriate timeInForce** - GTC for patient orders, FOK for all-or-nothing
5. **Monitor open orders** - Cancel stale orders
6. **Start small** - Test with small sizes first
---
name: execution
description: "Execute trades on prediction markets with slippage protection and order management"
emoji: "⚡"
gates:
envs:
anyOf:
- POLY_API_KEY
- KALSHI_API_KEY
---
# Execution Service - Complete API Reference
Execute trades on Polymarket and Kalshi with slippage protection, maker orders, and order management.
## Supported Platforms
| Platform | Order Types | Features |
|----------|-------------|----------|
| Polymarket | Limit, Market, Maker | -0.5% maker rebate, GTC/FOK |
| Kalshi | Limit, Market | US regulated |
---
## Chat Commands
### Place Orders
```
/execute buy poly <market> YES 100 @ 0.52 # Limit buy on Polymarket
/execute sell kalshi <market> NO 50 @ 0.48 # Limit sell on Kalshi
/execute market-buy poly <market> YES 100 # Market buy
/execute market-sell poly <market> NO 50 # Market sell
```
### Maker Orders (Rebates)
```
/execute maker-buy poly <market> YES 100 @ 0.52 # Post-only buy
/execute maker-sell poly <market> NO 50 @ 0.48 # Post-only sell
```
### Protected Orders (Slippage Protection)
```
/execute protected-buy poly <market> YES 100 --max-slippage 1%
/execute protected-sell poly <market> NO 50 --max-slippage 0.5%
```
### Order Management
```
/orders open # View open orders
/orders open poly # Open orders on Polymarket
/orders cancel <order-id> # Cancel specific order
/orders cancel-all # Cancel all open orders
/orders cancel-all poly # Cancel all on Polymarket
```
### Slippage Estimation
```
/estimate-slippage poly <market> buy 1000 # Estimate slippage for $1000 buy
/estimate-slippage kalshi <market> sell 500 # Estimate for $500 sell
```
---
## TypeScript API Reference
### Create Execution Service
```typescript
import { createExecutionService } from 'clodds/execution';
const executor = createExecutionService({
polymarket: {
apiKey: process.env.POLY_API_KEY,
apiSecret: process.env.POLY_API_SECRET,
passphrase: process.env.POLY_API_PASSPHRASE,
privateKey: process.env.PRIVATE_KEY,
},
kalshi: {
apiKey: process.env.KALSHI_API_KEY,
privateKey: process.env.KALSHI_PRIVATE_KEY,
},
// Defaults
defaultSlippageTolerance: 0.5, // 0.5%
autoLogTrades: true,
});
```
### Limit Orders
```typescript
// Buy limit order
const order = await executor.buyLimit({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100, // $100
price: 0.52, // 52 cents
timeInForce: 'GTC', // Good-til-cancel
});
console.log(`Order placed: ${order.orderId}`);
console.log(`Status: ${order.status}`);
// Sell limit order
const sellOrder = await executor.sellLimit({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100,
price: 0.55,
});
```
### Market Orders
```typescript
// Market buy - executes immediately at best price
const order = await executor.marketBuy({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100,
});
console.log(`Filled at: ${order.avgFillPrice}`);
console.log(`Filled size: ${order.filledSize}`);
// Market sell
const sellOrder = await executor.marketSell({
platform: 'kalshi',
marketId: 'TRUMP-WIN',
side: 'YES',
size: 50,
});
```
### Maker Orders (Post-Only)
```typescript
// Maker buy - only executes as maker (gets rebate)
const order = await executor.makerBuy({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100,
price: 0.52,
});
// Will be rejected if it would execute immediately as taker
if (order.status === 'rejected') {
console.log('Price too aggressive - would be taker');
}
// Maker sell
const sellOrder = await executor.makerSell({
platform: 'polymarket',
marketId: 'market-123',
side: 'NO',
size: 50,
price: 0.48,
});
```
### Protected Orders (Slippage Protection)
```typescript
// Protected buy - checks slippage before executing
const order = await executor.protectedBuy({
platform: 'polymarket',
marketId: 'market-123',
side: 'YES',
size: 100,
maxSlippage: 0.5, // 0.5% max slippage
});
if (order.status === 'rejected') {
console.log(`Rejected: slippage would be ${order.estimatedSlippage}%`);
} else {
console.log(`Executed with ${order.actualSlippage}% slippage`);
}
// Protected sell
const sellOrder = await executor.protectedSell({
platform: 'kalshi',
marketId: 'TRUMP-WIN',
side: 'YES',
size: 50,
maxSlippage: 1,
});
```
### Order Management
```typescript
// Cancel specific order
await executor.cancelOrder('polymarket', orderId);
// Cancel all orders on platform
await executor.cancelAllOrders('polymarket');
// Cancel all orders for a market
await executor.cancelAllOrders('polymarket', { marketId: 'market-123' });
// Get open orders
const openOrders = await executor.getOpenOrders('polymarket');
for (const order of openOrders) {
console.log(`${order.orderId}: ${order.side} ${order.size} @ ${order.price}`);
console.log(` Status: ${order.status}`);
console.log(` Filled: ${order.filledSize}/${order.size}`);
}
```
### Slippage Estimation
```typescript
// Estimate slippage before executing
const estimate = await executor.estimateSlippage({
platform: 'polymarket',
marketId: 'market-123',
side: 'buy',
size: 1000,
});
console.log(`For $1000 buy:`);
console.log(` Avg fill price: ${estimate.avgFillPrice}`);
console.log(` Expected slippage: ${estimate.slippagePct}%`);
console.log(` Total filled: ${estimate.totalFilled}`);
console.log(` Levels consumed: ${estimate.levelsConsumed}`);
```
---
## Order Types
| Type | Description | Best For |
|------|-------------|----------|
| **Limit** | Execute at specific price or better | Price-sensitive orders |
| **Market** | Execute immediately at best available | Urgent execution |
| **Maker** | Post-only, gets rebate | Collecting rebates |
| **Protected** | Checks slippage before executing | Large orders |
## Time In Force
| Value | Description |
|-------|-------------|
| **GTC** | Good-til-cancel (default) |
| **FOK** | Fill-or-kill - all or nothing |
| **IOC** | Immediate-or-cancel - fill what you can |
---
## Fee Structure
### Polymarket (Verified Jan 2026)
- **Most markets**: 0% maker, 0% taker (zero fees)
- **15-min crypto markets**: Dynamic taker fees up to ~3% at 50/50 odds; makers eligible for rebate program
### Kalshi
- **Taker**: Formula-based ~1.2% average, capped at ~2%
- **Maker**: ~0.17% (formula-based)
---
## Best Practices
1. **Use maker orders** when possible - Pay no fees on Polymarket (most markets)
2. **Check slippage** before large orders
3. **Use protected orders** for size > $500
4. **Set appropriate timeInForce** - GTC for patient orders, FOK for all-or-nothing
5. **Monitor open orders** - Cancel stale orders
6. **Start small** - Test with small sizes first
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Includes source scripts; review them before use. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.