Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A point-in-time-correct research platform that turns financial news into sentiment features and research signals, with every number traceable to its source and to the moment it became knowable.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A point-in-time-correct research platform that turns financial news into sentiment features and research signals, with every number traceable to its source and to the moment it became knowable.
make demo run on 535 real SEC EDGAR
filings (8-K and 6-K, January to October 2026) from 40 large US companies and the
five Indian companies that file with the SEC (Infosys, HDFC Bank, ICICI Bank, Wipro,
Dr. Reddy's, under their NSE symbols). Each item carries the filing's own headline,
the second EDGAR accepted it, and a link to it on sec.gov. Captured by
make capture; see data and licences.as_of. A score is
hidden until its own available_at, and future data injected into tests changes nothing.τ chosen on training folds only, an untouched
holdout, costs, block-bootstrap Sharpe intervals, a deflated Sharpe ratio, and controls
(shuffled, lagged, price momentum, and a deliberate look-ahead bug). The method finds the
planted effect and stays silent on the null; the look-ahead bug turns "no effect" into a
Sharpe of +4.7. See the study.| Requirement | What we used | Where it lives | Status |
|---|---|---|---|
| Microservices | Six Python 3.12 services on FastAPI and asyncio: ingestion, preprocessor, sentiment, signal_engine, api, research_agent, plus the Next.js web app. They talk only through versioned Kafka topics on Redpanda (news.raw.v1 … reports.generated.v1, typed with Pydantic v2), with idempotent consumers and a dead-letter topic. Each service owns its own tables. | services/, libs/contracts, architecture | Running locally (make demo); a test fails if one service imports another |
| Docker | Multi-stage builds (one shared service.Dockerfile for every Python service, plus web/Dockerfile). Non-root users, read-only root filesystems, dropped Linux capabilities, health checks, resource limits. Docker Compose profiles core, jobs, agents, ui and obs. | infra/docker, infra/compose | All images build and run locally; CI builds every image |
| Infrastructure as Code | Terraform for AWS: modules vpc, ecr, , , (password generated into Secrets Manager) and (GitHub Actions OIDC, least-privilege roles), plus a environment with S3/DynamoDB remote-state guidance. |
Application stack: Python 3.12 with uv, FastAPI, Pydantic v2, SQLAlchemy, asyncio, Redpanda (Kafka API), PostgreSQL, LangGraph (Groq or a deterministic mock model), NumPy for the research studies, Next.js 16 with TypeScript for the dashboard, and Prometheus plus Grafana for observability. Data: SEC EDGAR, Kenneth French factors, the Loughran-McDonald dictionary and Yahoo prices (local only); see data and licences.
Requirements: Python 3.12, uv, Node 22 with pnpm, and
Docker for the full stack. Every make target also runs without make as
uv run python -m scripts.tasks <target>, which is the easier route on Windows.
1. Dashboard only (snapshot mode, nothing else needed)
cd web && pnpm install && pnpm dev # http://localhost:3000
2. Whole pipeline in one process, no Docker
uv sync
make dev # API on http://localhost:18000/docs
# in another terminal:
cd web && ALPHADOTS_API_URL=http://localhost:18000 pnpm dev
make dev ARGS="--speed 20000" paces the replay so the tape fills in live.
3. The real stack: Redpanda, PostgreSQL and one container per service
make demo does all of it on the real dataset: resets the local volumes, starts
every profile, replays the SEC filings, asks the research agent for briefs and prints
the URLs, so every dashboard (the web app on :13000, Grafana on :13001) has data. The
step-by-step targets below use the deterministic synthetic fixtures, which is what the
smoke checks expect; set ALPHADOTS_DATASET=real ALPHADOTS_FEED_MODE=delayed to run
them on real data instead.
make up # builds images, starts everything, waits until healthy
make seed # curated fixture (idempotent; run it twice and nothing changes)
make smoke # 13 end-to-end checks against the running API
make replay # bulk fixture; add SPEED=20000 for a paced live tape
make agents # research agent (Groq if ALPHADOTS_GROQ_API_KEY is set, else mock)
make agent-smoke # 9 checks: jobs, idempotency, citations, abstention, monitoring
make ui # dashboard container on http://localhost:13000
make obs # Prometheus on :19090, Grafana on http://localhost:13001
make down # ARGS=--volumes also deletes data
Grafana opens the pipeline dashboard without a login (anonymous, read-only, bound to
127.0.0.1). To edit, sign in as admin with ALPHADOTS_GRAFANA_PASSWORD (default
admin). Run-once jobs such as ingestion push their metrics to a Prometheus Pushgateway,
so the ingest panels stay filled after the job exits.
4. The research studies
make research # simulation study: a few seconds; rewrites the Backtest page data
make earnings-data # real data, once: about an hour, resumable, cached in var/research
make earnings-study # offline from the cache: about 20 s once text features are cached
make earnings-data needs ALPHADOTS_SEC_USER_AGENT="Your Name [email protected]" in
.env (SEC fair-access policy). Downloads are never committed; see
data and licences for each source's terms.
Kubernetes: make k8s-up, make k8s-smoke, make k8s-down (k3d and Helm). Steps,
rollback and the AWS path are in docs/deployment-runbook.md;
what AWS would cost, and why nothing applies it automatically, is in
docs/cost-guardrails.md.
Import the repository in Vercel, set Root Directory to web, and deploy. No
environment variables are needed: it serves the bundled snapshot of the real SEC
filings, including a recorded research brief for every issuer, and shows an
SEC filings · snapshot chip. Set ALPHADOTS_API_URL
(and optionally ALPHADOTS_API_TOKEN) to attach a running API instead, which also
enables generating new briefs.
Vercel cannot run Kafka consumers or databases, so the pipeline itself is not deployed
there. docs/deployment-vercel.md covers both modes, the
CLI route, security properties and caching.
| Command | What it covers |
|---|---|
make test | Python unit, contract, point-in-time leakage and end-to-end tests (in-memory bus, no Docker), plus dashboard parity against the real API |
make test-integration | The same pipeline on throwaway Redpanda and PostgreSQL containers: offset resume after restart, full redelivery, Kafka/Postgres output identical to the in-memory run |
make lint | ruff, strict mypy, schema-snapshot and fixture drift, snapshot drift, research-results drift, ESLint, tsc |
make security | pip-audit, pnpm audit, Gitleaks, Semgrep, Trivy (gating); Checkov (reporting); CycloneDX SBOM |
make web-build | The production dashboard build Vercel runs |
CI runs the same gates on every pull request (.github/workflows/pr.yml), plus a Trivy
scan of every built image and a coverage floor of 80% (currently about 95%).
Tests worth reading first:
tests/temporal_leakage,
tests/research,
tests/e2e and
web/test/parity.test.ts.
libs/contracts versioned Pydantic messages, topic registry, schema compatibility
libs/common bus (Kafka + in-memory), worker loop, config, logging, metrics, DB
libs/quant decayed-sentiment aggregate with the point-in-time guard
libs/llm bounded LLM adapter: Groq over plain httpx, deterministic mock for CI
services/ ingestion · preprocessor · sentiment · signal_engine · api · research_agent
research/ offline studies: simulation (walk-forward, deflated Sharpe) and the
real-data earnings study (EDGAR client, event timing, clustered OLS)
web/ Next.js dashboard (live proxy or bundled snapshot)
data/real/ real SEC 8-K/6-K filings and instruments (make capture), hash-pinned
data/fixtures/ synthetic news (CC0) for deterministic tests, hash-pinned by MANIFEST.json
infra/compose Docker Compose stack and throwaway integration stack
infra/helm, k3d Helm chart and local cluster config
infra/terraform AWS modules and the dev environment (validated, never applied)
observability/ Prometheus scrape config, Grafana datasource and dashboard
.github/workflows PR verification and release workflows
scripts/ task runner, fixture generator, snapshot exporter, smoke checks
tests/ unit · contract · temporal_leakage · research · e2e · integration
docs/ architecture, research report, threat model, runbooks, ADRs
daily_bars for a licensed source before any other use.τ.k3d cluster create could not run on the
development machine (it cannot reach ghcr.io for k3d's helper image). The AWS
Terraform passes validate and has never been applied.make
targets fail with the milestone that owns them instead of pretending.s3eksrdsiamdevinfra/terraform, cost guardrails |
terraform validate passes; never applied, to avoid AWS charges |
| Kubernetes | Helm chart: Deployments, StatefulSets for Redpanda and PostgreSQL, a topic-creation Job, an ingestion Job, ConfigMap, Secret references, readiness/liveness probes, resource limits, NetworkPolicy, PodDisruptionBudget and an optional HPA. A k3d cluster config with make k8s-up, k8s-smoke and k8s-down. | infra/helm/alphadots, infra/k3d, runbook | helm lint/helm template pass and Checkov scans the rendered manifests in CI; a live k3d cluster could not be created on the development machine (see limitations) |
| CI/CD | GitHub Actions with every action pinned by commit SHA. pr.yml: lint, strict mypy, tests with an 80% coverage gate, integration tests on real Redpanda and PostgreSQL, security scans, image build plus Trivy, Checkov. release.yml: builds and pushes all 7 images to GHCR with recorded digests and a CycloneDX SBOM each, a staging deploy via OIDC, and a production deploy behind manual approval with a rollback command. Vercel deploys the dashboard from GitHub. | .github/workflows | Release workflow green on main; the deploy jobs do nothing until an AWS role is configured |
| DevSecOps | Gitleaks (secrets), Semgrep (static analysis), pip-audit and pnpm audit (dependencies), Trivy (images and misconfiguration), Checkov (Terraform and Helm), CycloneDX SBOMs, OIDC instead of long-lived cloud keys, scoped exception files (.trivyignore, .gitleaks.toml), and a STRIDE threat model. | make security, scripts/tasks.py | Gitleaks, Semgrep, the dependency audits and Trivy block a merge; Checkov reports only, until a waiver policy exists |
| Cloud provider / local machine | Local first: Docker Compose runs the whole platform with Prometheus, Grafana and Pushgateway, with no credentials needed; k3d for local Kubernetes. Cloud, optional: AWS (EKS, ECR, RDS, S3, Secrets Manager, IAM OIDC) through the Terraform above. Hosting: Vercel serves the dashboard from a parity-tested snapshot. | infra/compose, infra/terraform, Vercel guide | Local stack verified end to end; AWS is a planned shape, not a live deployment |