Open Net Worth
Open Net Worth는 직접 운영하는 오픈소스 개인 AI 자산 비서로, 전체 재무를 하나의 원장에 기록하고 사용자가 제어하는 AI가 관리
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Codifies your tiered, moving-average-based dollar-cost-averaging rules into an automated pipeline: prices refresh daily via GitHub Actions alone (no Claude session needed), thresholds are evaluated against your ladder rules, and a dashboard (hosted on Vercel — see Hosting, which auto-deploys on every push) shows what's hit and lets you tick off what you've actually invested in, synced across your devices. A Claude Artifact copy of the same dashboard still exists as a manual backup/preview link, but nothing refreshes it automatically anymore (see below) — ask in chat if you want it re-published.
Trunk branch is
claude/investment-rules-stock-tiers-benvvw— the GitHub Actions crons and Vercel's Production Branch setting all read/write this branch. If you're a Claude session working from a different (session-specific) branch, merge into this one before you're done — seeCLAUDE.mdfor why this matters and what went wrong once already when it wasn't.
Daily (GitHub Actions, .github/workflows/daily-price-check.yml,
21:30 UTC ≈ 05:30 SGT next day, after US close): fetches fresh daily
closes, recomputes MA60/100/150/200/250 per stock, evaluates each tier's
ladder against the new price, and commits the result to data/state.json
along with a rebuilt dashboard/index.html (before 2026-09-21 it
committed the state alone, so the page Vercel served kept its previous
build until some later market-open run happened to rebuild it).
Prices come from stooq with Yahoo as a second source, and the two are
merged rather than "first one that answers wins": stooq publishes US
closes on a lag, so it can return a perfectly valid series that stops a
day or two short. Each source is checked against the last expected
trading session and the next is consulted if it's behind — otherwise a
stale-but-successful response silently pins the dashboard to an old
close, which is exactly what happened on 2026-09-21.
This step needs real internet access to Yahoo/stooq, which the Claude
sandbox that built this doesn't have — hence it runs on GitHub's own
runners instead of as a Claude-scheduled job. This is the data the
MA/ladder math is keyed off — it never changes intraday.
Live, on every page load (api/quote.js, no cron involved): the
dashboard asks this small serverless function for current quotes when you
open it, then again every 60 seconds while the US market is open (and
whenever you switch back to the tab). It fetches server-side, so the price
you see is seconds old, not hours. It updates the displayed price, each
pending rung's "% away", and flags any pending rung the live price has
already reached as hit now. If the fetch fails, every card falls back
to the committed close — the page never ends up blank or wrong, just less
current. This is display only: which rungs have officially fired is
still decided by run_check.py off the daily close, so a "hit now" flag
is a heads-up to go look, not a state change.
Market open (GitHub Actions, .github/workflows/market-open-price-check.yml):
NYSE opens at 9:30am ET, which lands at either 9:30pm SGT (EDT, roughly
Mar–Nov) or 10:30pm SGT (EST, roughly Nov–Mar) depending on the time of
year. Rather than track the DST flip, this workflow fires at both
possible "~15 min after open" times every weekday (13:44 UTC and
14:44 UTC). scripts/market_open_snapshot.py then checks the real
America/New_York clock and only actually fetches a live quote if it's
genuinely within ~25 minutes of today's open — so whichever of the two
firings doesn't match the current DST regime is a silent no-op, and the
schedule self-adjusts across the March/November transitions with no
manual cron edits.
Treat this as a fallback, not the live-price mechanism — step 2 is
that. GitHub queues scheduled runs behind everything else and was
starting this one 3.5–5 hours late (measured Sept 2026: firings due
at 09:44 ET actually landed 13:13–14:52 ET). Until 2026-09-21 the script
also only accepted 09:30–09:55 ET, so every firing fell outside its own
window and skipped the fetch — intraday_price had never once been
written for any stock, and the job's only real effect was rebuilding the
dashboard, under a commit message that claimed otherwise. The window is
now the whole session (09:30–16:00 ET). You can also run it on demand
from the Actions tab (workflow_dispatch), which starts immediately —
the delay only affects schedule events.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗