# Databento Symbology Reference Comprehensive guide to Databento's symbology system including continuous contracts, symbol types, and resolution strategies. ## Symbol Types (stypes) Databento supports multiple symbology naming conventions. Use `mcp__databento__symbology_resolve` to convert between types. ### raw_symbol Native exchange symbols as provided by the venue. **Examples:** - `ESH5` - ES March 2025 contract - `NQM5` - NQ June 2025 contract - `AAPL` - Apple Inc. stock - `SPY` - SPDR S&P 500 ETF **When to use:** - Working with specific contract months - Exact symbol from exchange documentation - Historical analysis of specific expirations **Limitations:** - Requires knowing exact contract codes - Different venues use different conventions - Doesn't handle roll automatically ### instrument_id Databento's internal numeric identifier for each instrument. **Examples:** - `123456789` - Unique ID for ESH5 - `987654321` - Unique ID for NQM5 **When to use:** - After symbol resolution - Internally within Databento system - When guaranteed uniqueness is required **Benefits:** - Globally unique across all venues - Never changes for a given instrument - Most efficient for API requests **Limitations:** - Not human-readable - Requires resolution step to obtain ### continuous Continuous contract notation with automatic rolling for futures. **Format:** `{ROOT}.{STRATEGY}.{OFFSET}` **Examples:** - `ES.c.0` - ES front month, calendar roll - `NQ.n.0` - NQ front month, open interest roll - `ES.v.1` - ES second month, volume roll - `GC.c.0` - Gold front month, calendar roll **When to use:** - Backtesting across multiple expirations - Avoiding roll gaps in analysis - Long-term continuous price series **Benefits:** - Automatic roll handling - Consistent symbology across time - Ideal for backtesting ### parent Parent contract symbols for options or complex instruments. **Examples:** - `ES` - Parent for all ES contracts - `NQ` - Parent for all NQ contracts **When to use:** - Options underlying symbols - Querying all contracts in a family - Getting contract family metadata ## Continuous Contract Deep Dive Continuous contracts are the most powerful feature for futures analysis. They automatically handle contract rolls using different strategies. ### Roll Strategies #### Calendar Roll (.c.X) Rolls on fixed calendar dates regardless of market activity. **Notation:** `ES.c.0`, `NQ.c.1` **Roll Timing:** - ES: Rolls 8 days before contract expiration - NQ: Rolls 8 days before contract expiration **When to use:** - Standard backtesting - Most predictable roll schedule - When roll timing is less critical **Pros:** - Predictable roll dates - Consistent across instruments - Simple to understand **Cons:** - May roll during low liquidity - Doesn't consider market dynamics #### Open Interest Roll (.n.X) Rolls when open interest moves to the next contract. **Notation:** `ES.n.0`, `NQ.n.1` **Roll Timing:** - Switches when next contract's OI > current contract's OI **When to use:** - Avoiding early rolls - Following market participants - When market dynamics matter **Pros:** - Follows market behavior - Natural transition point - Avoids artificial timing **Cons:** - Less predictable timing - Can be delayed during low volume - Different instruments roll at different times #### Volume Roll (.v.X) Rolls when trading volume moves to the next contract. **Notation:** `ES.v.0`, `NQ.v.1` **Roll Timing:** - Switches when next contract's volume > current contract's volume **When to use:** - Following most liquid contract - High-frequency analysis - When execution quality matters **Pros:** - Always in most liquid contract - Best for execution - Real-time liquidity tracking **Cons:** - Most variable timing - Can switch back and forth - Requires careful validation ### Offset Parameter (.X) The offset determines which contract month in the series. | Offset | Description | Example Usage | |--------|-------------|---------------| | `.0` | Front month | Primary trading contract | | `.1` | Second month | Spread analysis vs front | | `.2` | Third month | Deferred spread analysis | | `.3+` | Further months | Calendar spread strategies | **Common Patterns:** - `ES.c.0` - Standard ES continuous (front month) - `ES.c.0,ES.c.1` - ES calendar spread (front vs back) - `ES.c.0,NQ.c.0` - ES/NQ pair analysis ## ES/NQ Specific Symbology ### ES (E-mini S&P 500) **Contract Months:** H (Mar), M (Jun), U (Sep), Z (Dec) **Raw Symbol Format:** `ES{MONTH}{YEAR}` - `ESH5` = March 2025 - `ESM5` = June 2025 - `ESU5` = September 2025 - `ESZ5` = December 2025 **Continuous Contracts:** - `ES.c.0` - Front month (most common) - `ES.n.0` - OI-based front month - `ES.v.0` - Volume-based front month **Tick Size:** 0.25 points ($12.50 per tick) **Contract Multiplier:** $50 per point **Trading Hours:** Nearly 24 hours (Sunday 6pm - Friday 5pm ET) ### NQ (E-mini Nasdaq-100) **Contract Months:** H (Mar), M (Jun), U (Sep), Z (Dec) **Raw Symbol Format:** `NQ{MONTH}{YEAR}` - `NQH5` = March 2025 - `NQM5` = June 2025 - `NQU5` = September 2025 - `NQZ5` = December 2025 **Continuous Contracts:** - `NQ.c.0` - Front month (most common) - `NQ.n.0` - OI-based front month - `NQ.v.0` - Volume-based front month **Tick Size:** 0.25 points ($5.00 per tick) **Contract Multiplier:** $20 per point **Trading Hours:** Nearly 24 hours (Sunday 6pm - Friday 5pm ET) ### Month Codes Reference | Code | Month | Typical Expiration | |------|-------|-------------------| | F | January | 3rd Friday | | G | February | 3rd Friday | | H | March | 3rd Friday | | J | April | 3rd Friday | | K | May | 3rd Friday | | M | June | 3rd Friday | | N | July | 3rd Friday | | Q | August | 3rd Friday | | U | September | 3rd Friday | | V | October | 3rd Friday | | X | November | 3rd Friday | | Z | December | 3rd Friday | **Note:** ES/NQ only trade quarterly contracts (H, M, U, Z). ## Symbol Resolution Use `mcp__databento__symbology_resolve` to convert between symbol types. ### Common Resolution Patterns **Continuous to Instrument ID:** ``` Input: ES.c.0 stype_in: continuous stype_out: instrument_id Result: Maps to current front month's instrument_id ``` **Raw Symbol to Instrument ID:** ``` Input: ESH5 stype_in: raw_symbol stype_out: instrument_id Result: Specific instrument_id for ESH5 ``` **Continuous to Raw Symbol:** ``` Input: ES.c.0 stype_in: continuous stype_out: raw_symbol Result: Current front month symbol (e.g., ESH5) ``` ### Time-Based Resolution Symbol resolution is **date-dependent**. The same continuous contract resolves to different instruments across time. **Example:** - `ES.c.0` on 2024-01-15 → ESH4 (March 2024) - `ES.c.0` on 2024-04-15 → ESM4 (June 2024) - `ES.c.0` on 2024-07-15 → ESU4 (September 2024) **Important:** Always specify `start_date` and `end_date` when resolving symbols for historical analysis. ### Resolution Parameters ``` mcp__databento__symbology_resolve - dataset: "GLBX.MDP3" - symbols: ["ES.c.0", "NQ.c.0"] - stype_in: "continuous" - stype_out: "instrument_id" - start_date: "2024-01-01" - end_date: "2024-12-31" ``` Returns mapping of continuous symbols to instrument IDs for each day in the range. ## Expiration Handling ### Roll Dates ES/NQ contracts expire on the **3rd Friday of the contract month** at 9:30 AM ET. **Calendar Roll (.c.0) Schedule:** - Rolls **8 days before expiration** - Always rolls on the same relative day - Predictable for backtesting **Example for ESH5 (March 2025):** - Expiration: Friday, March 21, 2025 - Calendar roll: March 13, 2025 (8 days before) ### Roll Detection To detect when a continuous contract rolled, compare instrument_id or raw_symbol across consecutive timestamps. **Example:** ``` 2024-03-12: ES.c.0 → ESH4 2024-03-13: ES.c.0 → ESM4 (rolled!) ``` ### Handling Roll Gaps Price discontinuities often occur at roll: **Gap Detection:** ``` if abs(close_before_roll - open_after_roll) > threshold: # Roll gap detected ``` **Adjustment Strategies:** 1. **Ratio Adjustment:** Multiply historical prices by ratio 2. **Difference Adjustment:** Add/subtract difference 3. **No Adjustment:** Keep raw prices (most common for futures) For ES/NQ futures, **no adjustment** is standard since contracts are similar. ## Symbol Validation ### Valid Symbol Patterns **Continuous:** - Must match: `{ROOT}.{c|n|v}.{0-9+}` - Examples: `ES.c.0`, `NQ.n.1`, `GC.v.0` **Raw Symbols (Futures):** - Must match: `{ROOT}{MONTH_CODE}{YEAR}` - Examples: `ESH5`, `NQZ4`, `GCM6` **Equity Symbols:** - 1-5 uppercase letters - Examples: `AAPL`, `MSFT`, `SPY`, `GOOGL` ### Symbol Existence Validation Before using a symbol, validate it exists in the dataset: 1. Use `mcp__databento__symbology_resolve` to resolve 2. Use `mcp__databento__reference_search_securities` for metadata 3. Check definition schema for instrument details ## Common Symbol Pitfalls ### 1. Wrong stype_in for Continuous Contracts **Wrong:** ``` symbols: "ES.c.0" stype_in: "raw_symbol" # WRONG! ``` **Correct:** ``` symbols: "ES.c.0" stype_in: "continuous" # CORRECT ``` ### 2. Forgetting Date Range for Resolution **Wrong:** ``` symbology_resolve(symbols=["ES.c.0"], start_date="2024-01-01") # Missing end_date - only resolves for one day ``` **Correct:** ``` symbology_resolve(symbols=["ES.c.0"], start_date="2024-01-01", end_date="2024-12-31") # Resolves for entire year ``` ### 3. Using Expired Contracts **Wrong:** ``` # ESH4 expired in March 2024 symbols: "ESH4" start_date: "2024-06-01" # After expiration! ``` **Correct:** ``` # Use continuous contract symbols: "ES.c.0" start_date: "2024-06-01" # Automatically maps to ESM4 ``` ### 4. Mixing Symbol Types **Wrong:** ``` symbols: "ES.c.0,ESH5,123456" # Mixed types! ``` **Correct:** ``` # Resolve separately or use same type symbols: "ES.c.0,NQ.c.0" # All continuous ``` ## Symbol Best Practices 1. **Use continuous contracts for backtesting** - Avoids manual roll management 2. **Prefer calendar rolls (.c.X) unless specific reason** - Most predictable 3. **Always validate symbols exist** - Use symbology_resolve before fetching data 4. **Specify date ranges for resolution** - Symbol meanings change over time 5. **Use instrument_id after resolution** - Most efficient for API calls 6. **Document roll strategy** - Know which roll type (.c/.n/.v) you're using 7. **Test around roll dates** - Verify behavior during contract transitions 8. **Cache symbol mappings** - Don't re-resolve repeatedly ## Quick Reference: Common Symbols ### ES/NQ Continuous (Most Common) ``` ES.c.0 # ES front month, calendar roll NQ.c.0 # NQ front month, calendar roll ES.c.1 # ES second month NQ.c.1 # NQ second month ``` ### ES/NQ Specific Contracts (2025) ``` ESH5 # ES March 2025 ESM5 # ES June 2025 ESU5 # ES September 2025 ESZ5 # ES December 2025 NQH5 # NQ March 2025 NQM5 # NQ June 2025 NQU5 # NQ September 2025 NQZ5 # NQ December 2025 ``` ### Equity Market Breadth (Supporting ES/NQ Analysis) ``` SPY # SPDR S&P 500 ETF QQQ # Invesco QQQ (Nasdaq-100 ETF) VIX # CBOE Volatility Index TICK # NYSE TICK VOLD # NYSE Volume Delta ``` For equity symbols, use dataset `XNAS.ITCH` (Nasdaq) or other appropriate equity dataset.