Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Prediction market discovery platform — translates betting odds into intuitive probabilities
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Probability, not betting. The world's honest guess about what happens next.
Bain Luck aggregates prediction markets, sportsbook lines, and statistical models into one blended probability per question. You always see a probability like "60%", never a price like "-150" or "+3000". It started with sports and now covers politics, economics, entertainment, tech, geopolitics, and weather.
At the 2026 Australian Open, Carlos Alcaraz beat Alexander Zverev in a five-set tennis semifinal. So why did his odds run from 98% up two sets to 14%, the brink of elimination, before he won?README 전문 보기 ↗Probability, not betting. The world's honest guess about what happens next.
Bain Luck aggregates prediction markets, sportsbook lines, and statistical models into one blended probability per question. You always see a probability like "60%", never a price like "-150" or "+3000". It started with sports and now covers politics, economics, entertainment, tech, geopolitics, and weather.
Live Site · Discover Feed · Calibration · API Docs
At the 2026 Australian Open, Carlos Alcaraz beat Alexander Zverev in a five-set tennis semifinal. So why did his odds run from 98% up two sets to 14%, the brink of elimination, before he won?
That swing (an adductor injury, a near-collapse, a fifth-set comeback) is the story of the match, and it's invisible in the final score. Bain Luck gives every question one honest number and shows you how that number moved.
It isn't just sports. The same probability lines tracked who would stand in Taylor Swift's wedding party ahead of her July 2026 wedding, how many rate cuts the Fed delivers this year, and which movie tops Netflix this week. If the world is guessing about it, there's a number, and the way the number moves is the story.
aggregation.py. When sources disagree, that's a data problem to fix, not a feature to display.curl -s https://api.bainluck.com/api/calibration | jq .total_outcomes for the current count. Each outcome is graded against a registered settlement authority. It's the scoreboard we hold ourselves to.cd backend && pytest --collect-only -q | tail -1 is the current onebetting 3.0, espn 1.5, models 1.0, markets 0.8) are hand-set priors with no recorded empirical basis — that is the current truth, not the goal. docs/aggregation-weighting-methodology.md specifies how they get replaced by weights earned from measured per-category skill; that harness is staged, not shipped, and promoting it is gated on beating the hand-set weights out-of-time.total_outcomes, total_markets, total_winners on GET /api/calibration), and a number copied into a README is a number that stops matching the meter.| Component | Technology | Hosting |
|---|---|---|
| Backend API | FastAPI (Python 3.11+) | Heroku |
| Database | PostgreSQL | Heroku Postgres |
| Task Queue | Celery + Redis | Heroku Redis |
| Frontend | Next.js 14 (React) | Vercel |
| iOS/macOS | SwiftUI (shared codebase) | TestFlight |
| watchOS | SwiftUI (app ships; complication unwired) | Direct install |
Data Sources: The Odds API, Kalshi, Polymarket, ESPN, DataGolf, MLB Stats API
This repo is developed by one person orchestrating multiple AI agent lanes running in parallel: a backend lane, a frontend/iOS lane, a read-only production verification lane, and a fenced adversarial audit lane, all coordinated through file-based work queues, with automated sentinels watching production and filing issues. Product judgment stays human. Taste, ranking, and calibration calls are made by the maintainer and recorded as standing rulings in docs/PRODUCT-BRAIN.md. The GitHub Issues board is the single source of priority.
bainluck/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI entry point
│ │ ├── models/ # SQLAlchemy models
│ │ ├── routes/ # API endpoints
│ │ ├── services/ # External API clients
│ │ ├── tasks/ # Celery tasks (incl. sentinels)
│ │ └── utils/ # Pure logic
│ ├── alembic/ # Database migrations
│ └── tests/ # Backend test suite
├── frontend/
│ ├── app/ # Next.js app router
│ ├── components/ # React components
│ └── lib/ # API client, types
├── ios/Bain Luck/ # iOS + macOS + watchOS (SwiftUI)
├── scripts/ # Operational scripts
└── docs/ # Documentation
| Doc | Purpose |
|---|---|
| Architecture | System design, aggregation, resilience |
| Weighting Methodology | How today's hand-set source weights become fitted-skill weights (staged, not live) |
| Product Brain | Standing product rulings and the reasoning behind them |
| Feature Reference | Detailed feature documentation |
| Design System | Colors, typography, components |
| Completed Features | Shipped features log |
| Gotchas | Known pitfalls and workarounds |
| GitHub Issues | The single source of priority |
The API is documented at api.bainluck.com/docs (Swagger UI).
Key endpoints:
GET /api/events lists events with probabilitiesGET /api/events/{id} returns event detail with full historyGET /api/feed serves the Discover feed (events + futures)GET /api/events/typeahead powers search suggestionsGET /api/calibration returns calibration data by category