Skip to content

pauljump/polyfeeds

Repository files navigation

Polyfeeds

Open-source data streams for prediction market traders. Polyfeeds monitors the public data sources that power markets on Polymarket and Kalshi — FDA approvals, weather alerts, economic indicators, election results, sports scores, and more.

Every stream maps directly to the categories where prediction markets trade. If there's a market on it, there should be a feed for it.

Status: Live and collecting data. Opening to contributors soon — this will be the fundamental data layer every prediction market trader depends on.


Streams

Data is organized into streams that mirror prediction market categories:

Stream Feeds What's Inside
Weather & Climate 39 City forecasts, NWS severe alerts, earthquakes, volcanoes, solar weather
Sports 14 NFL, NBA, MLB, NHL, MLS, NCAA, EPL, La Liga, Bundesliga, Serie A, Ligue 1, F1, ATP, WTA
Regulatory 15 FDA drug approvals, device clearances, recalls, adverse events, federal rules
Crypto 11 CoinGecko prices & trends, CoinPaprika, DeFiLlama DeFi protocols, Fear & Greed Index
Economics 8 National debt, treasury rates, federal spending, revenue, GDP, Bank of Canada
Politics 6 White House executive actions, Supreme Court opinions, Congress, FEC, polling
Geopolitics 5 Armed conflict events, EU Council sanctions, UN resolutions, travel advisories
Markets 5 Polymarket & Kalshi active markets, SEC filings, IPO filings
Tech & AI 2 HuggingFace trending models, GitHub trending repos

Each feed includes contract mappings — direct links between the data and the prediction market contracts it resolves.


Add a Feed in 30 Seconds

Feeds are JSON configs. Drop a file, open a PR.

{
  "name": "FDA Drug Approvals",
  "description": "New drug approval actions — resolves pharma prediction market contracts",
  "category": "regulatory",
  "provider": "fda",
  "source": {
    "url": "https://api.fda.gov/drug/drugsfda.json?sort=submissions.submission_status_date:desc&limit=50",
    "format": "json"
  },
  "schedule": "every 6 hours",
  "license": "public-domain",
  "tags": ["fda", "pharma", "drug-approvals"],
  "extract": {
    "root": "results",
    "fields": [
      { "name": "brand_name", "path": "openfda.brand_name[0]", "type": "string" },
      { "name": "generic_name", "path": "openfda.generic_name[0]", "type": "string" },
      { "name": "application_number", "path": "application_number", "type": "string" }
    ],
    "dedup_key": "application_number"
  },
  "contracts": [
    {
      "platform": "polymarket",
      "title": "Will the FDA approve [drug]?",
      "relationship": "resolves"
    }
  ]
}

For complex data sources that need custom fetch logic, use a Tier 2 TypeScript feed — see CONTRIBUTING.md.


Self-Hosting

git clone https://github.com/pauljump/polyfeeds.git
cd polyfeeds
npm install
POLYFEEDS_DB=./data.db npx tsx start.ts
# API running at http://localhost:3001

For the web dashboard:

cd packages/web
NEXT_PUBLIC_API_URL=http://localhost:3001 npx next dev
# Dashboard at http://localhost:3000

API

All endpoints are open, no auth required.

GET /feeds                    → List all feeds with health status
GET /feeds/:id                → Feed detail + latest data points
GET /feeds/:id/data           → Time-series data for a feed
GET /tags                     → All tags with counts
GET /health                   → Runner + API health check

Rate limited to 100 requests/minute per IP.


Architecture

polyfeeds/
├── packages/
│   ├── sdk/       → Feed schema, validation, TypeScript types
│   ├── runner/    → Cron executor, fetches data, writes to SQLite
│   ├── api/       → Fastify REST API (read-only)
│   └── web/       → Next.js dashboard
├── feeds/         → Feed configs (JSON + TypeScript)
│   └── _templates/  → Template-based feed generation
└── start.ts       → Combined entry point

Data flows in one direction: Runner → SQLite → API → Dashboard


Contributing

See CONTRIBUTING.md for the full guide. The short version:

  1. Pick a prediction market category that needs better data coverage
  2. Create a feed config in feeds/your-source/feed.json
  3. Add contract mappings linking to Polymarket/Kalshi markets
  4. Run npx tsx packages/sdk/src/validate.ts feeds/your-source/feed.json
  5. Open a PR

The easiest way to add a feed: tell Claude "add a polyfeeds feed for [data source]" and paste the feed format above.


License

MIT

About

Open-source data streams for prediction market traders. 106 feeds across 10 streams mapped to Polymarket and Kalshi categories.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors