Solving Ticker Identity: TradingGoose-Market's Canonical Mapping System
These articles are AI-generated summaries. Please check the original sources for full details.
TradingGoose-Market: canonical ticker identity across market data providers
TradingGoose-Market addresses the Ticker Identity Problem where single assets have divergent naming conventions across various data APIs. The system uses a centralized identity layer to map disparate symbols like BTC-USD and BINANCE:BTCUSD to a single canonical record.
Why This Matters
In technical reality, market data providers lack a unified naming standard, forcing developers into a tangled mess of per-platform string manipulation that breaks during provider updates. While standards like ISO 10383 (MIC) exist, TradingGoose-Market demonstrates that practical implementations require higher-level market groupings to manage redundant metadata and trading hours without the $1,000/month overhead of enterprise closed-source services.
Key Insights
- CCXT maintains manual currency dictionaries, such as 30+ entries for Kraken alone, to resolve non-standard codes like XXBT to BTC.
- QuantConnect’s LEAN engine uses 64-bit bit-packed SecurityIdentifiers to store asset types, market codes, and expiry dates as immutable integers.
- OpenFIGI provides free mapping but imposes strict limits of 25 requests per minute for unauthenticated access, hindering high-volume startup resolution.
- TradingGoose-Market utilizes a scoring algorithm based on precedence—weighting ‘market’ higher for stocks and ‘currency’ higher for crypto—to select the correct symbol template.
- The system decouples identity from formatting, allowing clients to define declarative rules like {base}.ss for Shanghai-listed equities without altering the core database.
Working Examples
QuantConnect LEAN engine CSV map files for tracking ticker changes over time.
20150101,CHASE,
20150715,JPM,NYSE
20200101,DELISTED,
The TypeScript interface for declarative symbol mapping rules.
interface MarketSymbolRule {
assetClass?: AssetClass
market?: string
country?: string
city?: string
currency?: string
regex?: string
template: string
active?: boolean
}
Provider-specific mapping rules that render canonical identifiers into platform-specific symbols.
// Yahoo Finance
{ "city": "SHANGHAI", "template": "{base}.ss" }
{ "assetClass": "crypto", "template": "{base}-{quote}" }
// Finnhub
{ "assetClass": "currency", "template": "OANDA:{base}_{quote}" }
{ "assetClass": "crypto", "template": "BINANCE:{base}{quote}" }
Practical Applications
- Multi-provider Trading Systems: Use a single canonical ID to fetch data from Alpaca and Yahoo Finance simultaneously without changing asset logic. Pitfall: Hardcoding provider-specific strings like ‘EURUSD=X’ creates a maintenance burden when adding redundant data sources.
- Global Market Operations: Centralize trading hours and holiday schedules at the Market level to avoid redundant configurations for segment MICs. Pitfall: Configuring schedules per segment MIC (e.g., ARCX vs XASE) results in redundant data entry for venues with identical operating hours.
References:
Continue reading
Next article
Lessons from Real-World Java and Spring Boot Backend Development
Related Content
Solving the DevOps Tool Sprawl: Reclaiming Release Context
Modern DevOps teams face fragmented delivery cycles as specialized tools like Jira, GitHub, and Jenkins create data silos that hinder compliance and release visibility.
Understanding Model Context Protocol (MCP): A Standardized Bridge for Agentic AI
Anthropic's Model Context Protocol (MCP) standardizes how LLMs securely connect to external data sources, enabling more efficient and scalable agentic workflows across fragmented enterprise APIs.
Engineering a Unified Korean Entertainment Database Across 10 Fragmented Sources
Engineer Cara Jung builds a unified database for Korean entertainment, aggregating data from 10 sources including NAVER and KOBIS to solve metadata fragmentation.