Update
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
# Polymarket Trading Framework - Quick Start Guide
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```env
|
||||
# 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
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
```python
|
||||
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 events
|
||||
- `get_event_by_slug()` - Get event by slug
|
||||
- `get_market_by_slug()` - Get market by slug
|
||||
- `get_tags()` - Get all categories
|
||||
- `get_sports()` - Get sports leagues
|
||||
- `search_events()` - Search events
|
||||
|
||||
### ClobClient (Trading Data)
|
||||
|
||||
- `get_price()` - Get current price
|
||||
- `get_orderbook()` - Get full orderbook
|
||||
- `get_best_bid_ask()` - Get best bid/ask
|
||||
- `get_market_depth()` - Get market depth
|
||||
- `calculate_impact()` - Calculate price impact
|
||||
|
||||
### DataClient (Portfolio)
|
||||
|
||||
- `get_positions()` - Get user positions
|
||||
- `get_trades()` - Get trade history
|
||||
- `get_portfolio()` - Get portfolio summary
|
||||
|
||||
## Notes
|
||||
|
||||
1. **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.
|
||||
|
||||
2. **Rate Limits**: Be mindful of API rate limits. The framework includes request delays, but check Polymarket documentation for current limits.
|
||||
|
||||
3. **Authentication**: Live trading requires proper authentication with `py-clob-client`. See Polymarket documentation for setup.
|
||||
|
||||
4. **Testing**: Always test strategies thoroughly in backtesting before live trading.
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Read [Strategy Development Guide](STRATEGIES.md)
|
||||
- Read [Backtesting Guide](BACKTESTING.md)
|
||||
- Read [Live Trading Guide](LIVE_TRADING.md)
|
||||
Reference in New Issue
Block a user