4.4 KiB
4.4 KiB
Polymarket Trading Framework - Quick Start Guide
Installation
cd polymarket
pip install -r requirements.txt
# For live trading, also install:
pip install py-clob-client ethers
Configuration
Create a .env file in the polymarket directory:
# Required for live trading
POLYMARKET_PRIVATE_KEY=your_private_key_here
POLYMARKET_CHAIN_ID=137
POLYMARKET_SIGNATURE_TYPE=0
POLYMARKET_FUNDER_ADDRESS=your_wallet_address
# Optional
POLYMARKET_INITIAL_BALANCE=1000.0
POLYMARKET_MAX_POSITION_SIZE=0.5
POLYMARKET_REQUEST_DELAY=0.1
Quick Examples
1. Discover Markets
from polymarket import GammaClient
gamma = GammaClient()
events = gamma.get_events(active=True, closed=False, limit=10)
for event in events:
print(f"{event['title']}: {event['slug']}")
2. Get Market Prices
from polymarket import GammaClient, ClobClient
gamma = GammaClient()
clob = ClobClient()
# Get market
market = gamma.get_market_by_slug('will-bitcoin-reach-100k-by-2025')
prices = gamma.get_market_prices(market)
# Get orderbook
token_id = market['clobTokenIds'][0]
best_bid_ask = clob.get_best_bid_ask(token_id)
print(f"Best Bid: {best_bid_ask['bid']}, Best Ask: {best_bid_ask['ask']}")
3. Run a Backtest
from datetime import datetime, timedelta
from polymarket import BacktestEngine
from polymarket.strategies.examples import SimpleProbabilityStrategy
# Create strategy
strategy = SimpleProbabilityStrategy(
threshold=0.15, # Trade when probability deviates 15% from 0.5
min_confidence=0.7
)
# Set period
end_date = datetime.now()
start_date = end_date - timedelta(days=30)
# Run backtest
engine = BacktestEngine(strategy, start_date, end_date, initial_balance=1000.0)
results = engine.run()
engine.generate_report()
4. Live Trading
from polymarket import LiveTradingEngine
from polymarket.strategies.examples import SimpleProbabilityStrategy
# Create strategy
strategy = SimpleProbabilityStrategy()
# Create engine
engine = LiveTradingEngine(strategy, poll_interval=60)
# Add markets to monitor
engine.monitor_tag(tag_id=21, limit=10) # Monitor crypto markets
# Start trading
engine.start()
Creating Your Own Strategy
from polymarket.strategies import BaseStrategy, MarketSignal
class MyStrategy(BaseStrategy):
def __init__(self):
super().__init__(name="MyStrategy", initial_balance=1000.0)
self.my_parameter = 0.2
def analyze_market(self, market_data):
prices = market_data.get('prices', {})
yes_price = prices.get('Yes', 0.5)
# Your trading logic here
if yes_price < 0.3: # Undervalued
return MarketSignal(
action='BUY',
token_id=market_data['market']['clobTokenIds'][0],
size=0.2, # 20% of balance
confidence=0.8,
reason="Yes probability is undervalued",
metadata={}
)
return None
def get_parameters(self):
return {'my_parameter': self.my_parameter}
API Reference
GammaClient (Market Discovery)
get_events()- Fetch active eventsget_event_by_slug()- Get event by slugget_market_by_slug()- Get market by slugget_tags()- Get all categoriesget_sports()- Get sports leaguessearch_events()- Search events
ClobClient (Trading Data)
get_price()- Get current priceget_orderbook()- Get full orderbookget_best_bid_ask()- Get best bid/askget_market_depth()- Get market depthcalculate_impact()- Calculate price impact
DataClient (Portfolio)
get_positions()- Get user positionsget_trades()- Get trade historyget_portfolio()- Get portfolio summary
Notes
-
Historical Data: Polymarket API may not provide full historical data. The backtesting engine uses simulated price evolution. For production, you'd need to store historical snapshots.
-
Rate Limits: Be mindful of API rate limits. The framework includes request delays, but check Polymarket documentation for current limits.
-
Authentication: Live trading requires proper authentication with
py-clob-client. See Polymarket documentation for setup. -
Testing: Always test strategies thoroughly in backtesting before live trading.
Next Steps
- Read Strategy Development Guide
- Read Backtesting Guide
- Read Live Trading Guide