REST client for daily price data + local JSONL cache.
Files: Omni/Fund/Data/Market.hs
Deliverables:
getDailyPrices :: Text -> Int -> IO (Either ApiError [DailyBar]) — fetch from Twelve Data (or fallback)DailyBar type (date, OHLCV)/var/fund/quant/prices/ — one file per tickerloadCachedPrices :: Text -> IO [DailyBar] — read from cacherefreshPrices :: [Text] -> IO () — fetch missing days, append to cachetrailingReturn, realizedVol, sma, meanReversionZcorrelationMatrix :: [[DailyBar]] -> [[Double]] — NxN realized correlation (pure list-of-lists, no hmatrix)API key: Twelve Data free tier (800 req/day). Store in pass, add to provision-secrets.sh. If Twelve Data doesn't work, fall back to Yahoo Finance CSV download (no key needed).
Cache strategy: Initial backfill fetches 5 years of daily data per ticker (16 calls). Daily timer appends new bars. Cache is append-only JSONL.
Ava verified: implementation present in live tree (file/feature confirmed via inspection). Moving to Verified.
Part of epic t-709 (Quant Phase 1)