SPB Git forge

spb/market-atlas

Public
12commits 1branches 0releases
1.1 MBsize
maindefault branch
10 days agolast push
TypeScript 96.7% SQL 1.6% CSS 0.8% JavaScript 0.5%
5.1 KB · 209 lines typescript
Raw Blame History
1// Canonical vocabularies of Market Atlas. Every boundary (bus, DB, API, UI) uses these strings verbatim.23export const ASSET_CLASSES = [4  "EQUITY",5  "ETF",6  "ETN",7  "INDEX",8  "CRYPTO",9  "FOREX",10  "COMMODITY",11  "FUTURE",12  "OPTION",13  "BOND",14  "TREASURY",15  "INTEREST_RATE",16  "MUTUAL_FUND",17  "ADR",18  "GDR",19  "REIT",20  "WARRANT",21  "CFD",22  "OTHER",23] as const;24export type AssetClass = (typeof ASSET_CLASSES)[number];2526export const RIGHTS_STATUSES = [27  "PUBLIC_OPEN",28  "PUBLIC_ATTRIBUTED",29  "PUBLIC_RESTRICTED_REDISTRIBUTION",30  "OFFICIAL_OPEN_DATA",31  "LICENSED",32  "DELAYED",33  "INDICATIVE",34  "RESEARCH_ONLY",35  "INTERNAL_ONLY",36  "UNKNOWN",37  "DISABLED",38] as const;39export type RightsStatus = (typeof RIGHTS_STATUSES)[number];4041/** Rights statuses whose raw values may be redistributed publicly by Market Atlas. */42export const PUBLICLY_REDISTRIBUTABLE: ReadonlySet<RightsStatus> = new Set<RightsStatus>([43  "PUBLIC_OPEN",44  "PUBLIC_ATTRIBUTED",45  "OFFICIAL_OPEN_DATA",46  "LICENSED",47  "DELAYED",48  "INDICATIVE",49]);5051export const REALTIME_STATUSES = ["REALTIME", "DELAYED", "END_OF_DAY", "INDICATIVE", "STALE", "UNKNOWN"] as const;52export type RealtimeStatus = (typeof REALTIME_STATUSES)[number];5354export const SOURCE_TYPES = [55  "WEBSOCKET",56  "SSE",57  "XHR",58  "FETCH",59  "GRAPHQL",60  "HTML",61  "RSS",62  "CSV",63  "XML",64  "PDF",65  "OFFICIAL_API",66  "BULK_FILE",67] as const;68export type SourceType = (typeof SOURCE_TYPES)[number];6970export const FIELDS = [71  "LAST_PRICE",72  "OPEN",73  "HIGH",74  "LOW",75  "PREVIOUS_CLOSE",76  "CLOSE",77  "BID",78  "ASK",79  "BID_SIZE",80  "ASK_SIZE",81  "VOLUME",82  "VWAP",83  "MARKET_CAP",84  "CHANGE",85  "CHANGE_PERCENT",86  "OPEN_INTEREST",87  "YIELD",88  "RATE",89  "NAV",90  "52_WEEK_HIGH",91  "52_WEEK_LOW",92  "IMPLIED_VOLATILITY",93] as const;94export type Field = (typeof FIELDS)[number];9596/**97 * What an observation *is*. Values of different comparability classes are never compared to each98 * other (an ECB fixing is not a live mid, an exchange settlement is not a trade).99 */100export const OBSERVATION_TYPES = [101  "TRADE", // last trade on a venue102  "MID", // mid of a quoted market103  "QUOTE", // bid/ask style value104  "INDEX_VALUE", // computed index level105  "INDICATIVE", // indicative live value (non-tradable)106  "STABLECOIN_PROXY", // fiat rate implied from a stablecoin market (USDT/USDC ≈ USD)107  "DERIVED", // computed by Market Atlas (cross rates…)108  "OFFICIAL_FIX", // central-bank / official fixing109  "REFERENCE_RATE", // official reference or policy rate110  "SETTLEMENT", // exchange settlement price111  "EOD_CLOSE", // end-of-day close from a historical dataset112  "NAV",113] as const;114export type ObservationType = (typeof OBSERVATION_TYPES)[number];115116export type ComparabilityClass = "LIVE" | "FIX" | "EOD";117export const COMPARABILITY: Record<ObservationType, ComparabilityClass> = {118  TRADE: "LIVE",119  MID: "LIVE",120  QUOTE: "LIVE",121  INDEX_VALUE: "LIVE",122  INDICATIVE: "LIVE",123  STABLECOIN_PROXY: "LIVE",124  DERIVED: "LIVE",125  OFFICIAL_FIX: "FIX",126  REFERENCE_RATE: "FIX",127  SETTLEMENT: "EOD",128  EOD_CLOSE: "EOD",129  NAV: "EOD",130};131/** Observation types that are proxies/derivations: they confirm but never count as independent families. */132export const PROXY_TYPES: ReadonlySet<ObservationType> = new Set<ObservationType>(["STABLECOIN_PROXY", "DERIVED", "INDICATIVE"]);133134export const TIMESTAMP_TRUSTS = ["EXCHANGE", "SOURCE", "CONNECTOR", "UNKNOWN"] as const;135export type TimestampTrust = (typeof TIMESTAMP_TRUSTS)[number];136137export const CONNECTOR_STATES = [138  "HEALTHY",139  "DEGRADED",140  "STALE",141  "RECONNECTING",142  "FAILED",143  "PAUSED",144  "DISABLED",145  "STARTING",146] as const;147export type ConnectorState = (typeof CONNECTOR_STATES)[number];148149export const MARKET_STATES = ["PRE", "OPEN", "HALTED", "CLOSED", "POST", "AUCTION", "UNKNOWN"] as const;150export type MarketState = (typeof MARKET_STATES)[number];151152export const EVENT_TYPES = [153  "PRICE_CHANGE",154  "SESSION_HIGH",155  "SESSION_LOW",156  "PRICE_BREAKOUT",157  "PRICE_GAP",158  "VOLUME_SPIKE",159  "VOLATILITY_SPIKE",160  "SPREAD_WIDENING",161  "SPREAD_COMPRESSION",162  "LIQUIDITY_CHANGE",163  "MARKET_OPEN",164  "MARKET_CLOSE",165  "TRADING_HALT",166  "TRADING_RESUME",167  "CORPORATE_ACTION",168  "DIVIDEND_DECLARED",169  "DIVIDEND_CHANGED",170  "STOCK_SPLIT",171  "EARNINGS_RELEASE",172  "GUIDANCE_CHANGE",173  "FILING_PUBLISHED",174  "INSIDER_TRANSACTION",175  "IPO_STATUS_CHANGE",176  "INDEX_CONSTITUENT_CHANGE",177  "RATING_CHANGE",178  "RATE_DECISION",179  "REFERENCE_RATE_PUBLISHED",180  "DOCUMENT_CHANGED",181  "SOURCE_FAILURE",182  "SOURCE_RECOVERY",183  "SOURCE_DIVERGENCE",184  "SCHEMA_DRIFT",185  "INSTRUMENT_LISTED",186  "INSTRUMENT_DELISTED",187] as const;188export type EventType = (typeof EVENT_TYPES)[number];189190export const SEVERITIES = ["DEBUG", "INFO", "NOTICE", "WARNING", "CRITICAL"] as const;191export type Severity = (typeof SEVERITIES)[number];192193export const BAR_RESOLUTIONS = ["1m", "5m", "15m", "1h", "1d"] as const;194export type BarResolution = (typeof BAR_RESOLUTIONS)[number];195196export const RESOLUTION_MS: Record<BarResolution, number> = {197  "1m": 60_000,198  "5m": 300_000,199  "15m": 900_000,200  "1h": 3_600_000,201  "1d": 86_400_000,202};203204export const CANONICAL_VERSIONS = {205  normalizer: "1.0",206  consensus: "1.0",207  events: "1.0",208} as const;209