Metadata-Version: 2.4
Name: polypoll-sdk
Version: 0.1.0
Summary: Unified SDK for prediction market data aggregation across Polymarket, Kalshi, Manifold, Metaculus, and PredictIt
Project-URL: Homepage, https://github.com/OpenOracleWeb3/polypoll-sdk
Project-URL: Documentation, https://github.com/OpenOracleWeb3/polypoll-sdk#readme
Project-URL: Repository, https://github.com/OpenOracleWeb3/polypoll-sdk
Project-URL: Issues, https://github.com/OpenOracleWeb3/polypoll-sdk/issues
Author-email: PolyPoll Team <team@polypoll.io>
License: MIT
Keywords: forecasting,kalshi,manifold,metaculus,polymarket,prediction-markets,predictit,sdk,trading
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Requires-Dist: aiohttp>=3.8.0
Requires-Dist: certifi>=2023.0.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: rapidfuzz>=3.0.0
Provides-Extra: ai
Requires-Dist: groq>=0.5.0; extra == 'ai'
Requires-Dist: openai>=1.0.0; extra == 'ai'
Provides-Extra: all
Requires-Dist: black>=23.0.0; extra == 'all'
Requires-Dist: fastapi>=0.109.0; extra == 'all'
Requires-Dist: groq>=0.5.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'all'
Requires-Dist: pytest>=7.0.0; extra == 'all'
Requires-Dist: ruff>=0.1.0; extra == 'all'
Requires-Dist: uvicorn[standard]>=0.27.0; extra == 'all'
Provides-Extra: dev
Requires-Dist: black>=23.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: server
Requires-Dist: fastapi>=0.109.0; extra == 'server'
Requires-Dist: uvicorn[standard]>=0.27.0; extra == 'server'
Description-Content-Type: text/markdown

# PolyPoll SDK

Unified SDK for prediction market data aggregation across multiple platforms.

## Supported Platforms

- **Polymarket** - Crypto prediction markets on Polygon
- **Kalshi** - US regulated prediction markets
- **Manifold Markets** - Play-money forecasting
- **Metaculus** - Expert forecasting
- **PredictIt** - US political markets

## Installation

```bash
pip install polypoll-sdk
```

## Quick Start

```python
import asyncio
from polypoll_sdk import PolyPollSDK

async def main():
    # Initialize SDK (no API keys needed for core features)
    sdk = PolyPollSDK()

    # Get markets from all platforms
    markets = await sdk.get_all_markets()
    print(f"Found {len(markets)} markets")

    # Get markets from specific platform
    polymarket = await sdk.get_markets(platform="polymarket")

    # Search for markets
    trump_markets = await sdk.search_markets("trump")

    # Find similar markets across platforms
    if markets:
        similar = await sdk.get_similar_markets(
            market_id=markets[0].market_id,
            platform=markets[0].platform
        )

    # Detect arbitrage opportunities
    arbitrage = await sdk.get_arbitrage_opportunities()
    for opp in arbitrage[:5]:
        print(f"Arbitrage: {opp.profit_pct:.1f}% profit")
        print(f"  {opp.strategy}")

asyncio.run(main())
```

## Features

### Layer 1: Data Aggregation

```python
# Get all markets from all platforms
markets = await sdk.get_all_markets()

# Get markets from specific platform
kalshi = await sdk.get_markets(platform="kalshi")

# Search markets by keyword
crypto = await sdk.search_markets("bitcoin", platforms=["polymarket", "kalshi"])
```

### Layer 2: Cross-Platform Matching

```python
# Find markets on other platforms similar to a given market
similar = await sdk.get_similar_markets(
    market_id="abc123",
    platform="polymarket",
    min_similarity=70
)

for match in similar:
    print(f"{match.market.platform}: {match.similarity_score:.0f}%")
```

### Layer 3: AI Research (Coming Soon)

```python
# Coming in future release:
# research = await sdk.deep_research("Will GPT-5 be released?")
# ai_odds = await sdk.get_ai_odds(market_id="...")
```

### Layer 4: Validation (Coming Soon)

```python
# Coming in future release:
# validation = await sdk.validate(question="Will BTC hit $100k?")
# status = await sdk.check_status(market_id="...")
```

### Layer 5: Arbitrage Detection

```python
# Find cross-platform arbitrage opportunities
opportunities = await sdk.get_arbitrage_opportunities(
    min_profit=1.0,  # Minimum 1% profit
    min_similarity=80  # High similarity threshold
)

for opp in opportunities:
    print(f"{opp.profit_pct:.1f}% profit: {opp.strategy}")
```

## UnifiedMarket Schema

All markets are normalized to a common schema:

```python
@dataclass
class UnifiedMarket:
    # Core
    platform: str       # polymarket, kalshi, etc.
    market_id: str
    title: str
    url: str

    # Pricing (0-1)
    yes_price: float
    no_price: float

    # Volume
    volume: float
    volume_24h: float
    liquidity: Optional[float]

    # Status
    status: MarketStatus  # open, closed, resolved
    is_resolved: bool
    close_time: Optional[datetime]

    # Metadata
    category: Optional[str]
    description: Optional[str]
    image_url: Optional[str]
```

## Coming Soon: AI Features

> **Note:** AI features are planned but not yet implemented in v0.1.0.

The following features will require API keys when implemented:

```python
# Planned for future release:
sdk = PolyPollSDK(
    exa_api_key="your-exa-key",
    groq_api_key="your-groq-key"
)

# Deep research (coming soon)
# research = await sdk.deep_research("Will GPT-5 be released in 2025?")

# AI odds prediction (coming soon)
# ai_odds = await sdk.get_ai_odds(market_id="...")

# Market validation (coming soon)
# validation = await sdk.validate(question="Will BTC hit $100k?")
```

## Development

```bash
# Clone repository
git clone https://github.com/OpenOracleWeb3/polypoll-sdk.git
cd polypoll-sdk

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest
```

## License

MIT
