Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Stock Analysis for QQQQ
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A web dashboard for every component of QQQQ with current weights, live prices, and a month-by-month allocation history — plus a recurring cron job that keeps the data fresh.
What is "QQQQ"?
QQQQis the legacy ticker for the Invesco QQQ Trust (renamed toQQQin 2011), the ETF that tracks the Nasdaq-100 Index. Its "components" are the ~100 Nasdaq-100 constituents — that's what this tracker shows.
aria-sort / aria-expanded state; press / to jump to the
filter box. A skip link, a screen-reader status region, labelled charts, and
a prefers-reduced-motion pass round out the accessibility support.npm test); the only dev dependency
is ESLint (npm run lint).index.html / styles.css / app.js The dashboard interface
server.js Zero-dep static server (+ /api/refresh, /api/quotes)
lib/holdings.js Pure, tested data-pipeline helpers
lib/quotes.js Shared live-quote fetching (FMP or Yahoo)
api/quotes.js Vercel serverless function for /api/quotes
scripts/fetch-holdings.js Fetches holdings + prices, writes data/*.json
test/*.test.js Unit tests (data pipeline, quotes, server)
e2e/smoke.test.js Browser smoke test of the dashboard
data/holdings.json Current holdings snapshot
data/monthly-allocations.json Per-ticker monthly allocation history
data/changes.json Log of constituent additions/removals
data/price-history.json Daily QQQ closing prices (fund performance)
vercel.json Vercel deploy config (static + function)
.github/workflows/ci.yml Lints and runs the test suite on every PR
.github/workflows/refresh.yml The recurring data-refresh cron job
.github/workflows/pages.yml Deploys the dashboard to GitHub Pages
ROADMAP.md Planned features and project direction
See ROADMAP.md for where the project is headed.
Requires Node.js 20+. The app itself has no runtime dependencies; run
npm install once to get the dev tooling (ESLint, Playwright, Vercel CLI)
for lint / test / test:e2e.
npm install # install dev tooling — one time
npm start # serve the dashboard at http://localhost:3000
npm run refresh # refresh data/*.json once, right now
REFRESH_MINUTES=30 npm start # serve + auto-refresh data every 30 min
npm run lint # lint the JavaScript sources
npm test # run the unit tests
npm run test:e2e # browser smoke test (needs `npx playwright install chromium`)
Data is refreshed by .github/workflows/refresh.yml, a scheduled GitHub
Actions workflow. It runs scripts/fetch-holdings.js, which:
FMP_API_KEY is set, then the latest SEC N-PORT filing,
then the last good data. Weights are never invented from market cap.data/holdings.json, appends the current month's weights to
data/monthly-allocations.json, and logs any constituent changes to
data/changes.json.Schedule: every 30 minutes during US market hours, plus a post-close snapshot. Trigger it manually any time from the Actions tab ("Run workflow").
GitHub only runs scheduled workflows from the repository default branch.
That default is currently claude/qqqq-component-tracker-O4OBc, not main,
so cron refreshes (and their data commits) land there. Switching the default
to main is a repo-settings change this codebase cannot make; until then,
keep refresh fixes on the default branch so the cron actually sees them.
If a data source is temporarily unreachable, the script falls back to the last good data so the job stays green and the site keeps working. When that happens the workflow opens (and later auto-closes) a GitHub issue, so a silently stale dashboard gets noticed.
FMP_API_KEY secretInvesco's download endpoint and Yahoo Finance both block automated requests, so the free path can be unreliable. For dependable data, get a free API key from Financial Modeling Prep and add it to the repo:
Settings → Secrets and variables → Actions → New repository secret
— name FMP_API_KEY, value = your key.
refresh.yml already passes it through; locally, run
FMP_API_KEY=yourkey npm run refresh or put FMP_API_KEY=yourkey in a
.env file (gitignored — the npm scripts load it automatically).
npm start), the page also calls GET /api/quotes every
20s; the server fetches fresh quotes (15s cache) so prices update between
cron runs. On static hosting this call simply no-ops.The dashboard is fully static. .github/workflows/pages.yml publishes it
to GitHub Pages on every push to main (including the cron's data commits).
One-time setup: Settings → Pages → Source = "GitHub Actions".
vercel.json deploys the same static dashboard to Vercel, plus a
serverless function (api/quotes.js) that backs GET /api/quotes — so
live price polling works on Vercel (unlike GitHub Pages, where it no-ops).
One-time setup: import the repo at vercel.com/new.
For reliable prices, add an FMP_API_KEY environment variable in the Vercel
project settings — without it the function falls back to Yahoo Finance.
The Vercel CLI is included as a dev dependency: run npx vercel dev to
preview the dashboard and the /api/quotes function together locally, or
npx vercel deploy to deploy from the command line. The CLI bundles many
transitive packages, so npm audit reports advisories from them — all
dev-only and never shipped to the app; see SECURITY.md.
FMP_API_KEY is set, or the
latest SEC N-PORT filing. Last-good / seed is used only when every live
source fails.data/*.json ships with a sample dataset (source: "seed")
so the dashboard works immediately; the first successful cron run replaces it
with live data.For informational purposes only — not investment advice.