feat: MarketWatch finance app (#185)#192
Merged
Merged
Conversation
…ch (#185) Defines the market-data.json contract (calendar with sessions/closures, per-symbol daily bars in as-printed 2001 prices) and the curated ~55-symbol list with verified Yahoo lineage mappings (HWP→HPQ, MWD→MS, UTX→RTX, SBC→T) and the 14 delisted symbols that need hand-entered overrides. Co-Authored-By: Claude Fable 5 <[email protected]>
…l-loud validation Fetches daily bars for all 41 sourced symbols (verified live: anchors match, DJIA 9/10 = 9605.51), un-adjusts Yahoo's split-adjusted closes back to as-printed 2001 prices, parses FRED DGS10, builds the Sept-2001 equity/bond calendar, and refuses to emit unless every symbol covers the required dates and matches archival spot-checks. 27 offline tests, ruff clean. MMC moved to override sourcing (Yahoo no longer serves any MMC data). Co-Authored-By: Claude Fable 5 <[email protected]>
…raday (#185) marketClock reduces a virtual-clock UTC instant over the bundled market calendar (closure outranks session: 9/11's open never rings) and picks the display session (frozen on 9/10 through the closure week). syntheticIntraday builds a deterministic per-(symbol,date) minute path from daily OHLC via chained seeded Brownian bridges through explicit high/low touch points — open/close pins and extreme touches are exact by construction. 21 tests. Co-Authored-By: Claude Fable 5 <[email protected]>
Co-Authored-By: Claude Fable 5 <[email protected]>
Co-Authored-By: Claude Fable 5 <[email protected]>
Co-Authored-By: Claude Fable 5 <[email protected]>
…symbols (#185) Every bar carries a citation; sources are pre-lineage-break Wayback captures of Yahoo daily CSVs (several archived in 2001 itself), a GitHub unadjusted dataset admitted only where its closes match independently-established CNN values, and contemporaneous CNN/CNNfn articles. All 15 symbols have full real OHLC for 9/7, 9/10, 9/17, 9/18 except old-AT&T (T), whose high/lows are conservative endpoint spans. Co-Authored-By: Claude Fable 5 <[email protected]>
Co-Authored-By: Claude Fable 5 <[email protected]>
|
✅ Playwright E2E — 1 passed · 0 failed · 0 flaky · 0 skipped |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #185.
A Mac OS 8-style MarketWatch finance app that replays the September 2001 market timeline in sync with the virtual clock: quote board (2001 Dow 30 + airlines/insurers/brokers/defense/travel), index tiles (DJIA, S&P 500, Nasdaq, 10-yr Treasury yield), a market-status banner, and a CNBC-style scrolling ticker tape.
How it works
packages/tools/market-datatool (Yahoo chart API un-adjusted back to as-printed prices + FRED DGS10 + hand-curated archival overrides), uploaded to Wasabi, served atfiles.911realtime.org/market/market-data.json(infra allow-list: Keeping-History/infra@e91234c). No backend/streamer changes.marketClock.tsreduces the virtual clock over the bundle's session/closure calendar toopen | closed | halted. On 9/11 the open never arrives; the tape freezes at 9/10 closes under a TRADING HALTED banner until the 9/17 reopening. The bond market resumes 9/13 (visible in the 10-yr tile during the equity halt).syntheticIntraday.tsbuilds a deterministic per-symbol path pinned to each day's real open/high/low/close (seeded PRNG keyed on symbol+date — same minute, same price, every client). This module is the single seam to swap in real minute bars later.Delisted-symbol data provenance
Free sources don't carry AMR, UAL, LEH, MER, EK, old-GM, old-AT&T, etc. — today's same-name tickers are different companies.
market_data/overrides.jsonhand-curates all 15 with full real OHLC (except old-AT&T: conservative endpoint spans) from:The generator is fail-loud: it refuses to emit on any missing required date, anchor mismatch (DJIA 9605.51 → 8920.70), or spot-check drift.
Verification
tsc -b,eslint, 27 pytest, ruff — all green🤖 Generated with Claude Code
https://claude.ai/code/session_01QUazFBgLE84XSuHeAYkmbF