feat(api): add MSN Finance as alternative data provider

Add MsnProvider implementing MarketDataProvider trait with quote,
fundamentals, and history support. Includes provider-aware config
(file/env/CLI), cache namespace isolation per provider, symbol ID
mapping via embedded TSV, OHLCV resampling, and comprehensive unit
+ integration tests with MSN fixture data.

Key changes:
- MsnProvider with quote, key-ratios, and chart endpoints
- ProviderKind enum (yahoo/msn) with config hierarchy support
- Provider-namespaced cache buckets to prevent cross-provider poisoning
- Provider-aware MockProvider loading correct fixtures per provider
- Integration tests for config round-trip and cache isolation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
0xrsydn 2026-03-06 10:19:10 +00:00
commit 2cdefeb7a6
11 changed files with 2099 additions and 36 deletions

18
tests/fixtures/msn_quote_bbca.json vendored Normal file
View file

@ -0,0 +1,18 @@
[
{
"id": "bn91jc",
"instrumentId": "bn91jc",
"symbol": "BBCA",
"shortName": "Bank Central Asia",
"displayName": "Bank Central Asia Tbk",
"price": 9875.0,
"priceChange": 117.0,
"priceChangePercent": 1.2,
"pricePreviousClose": 9758.0,
"price52wHigh": 10250.0,
"price52wLow": 7800.0,
"accumulatedVolume": 12300000.0,
"averageVolume": 10000000.0,
"marketCap": 1215200000000000.0
}
]