#!/usr/bin/env python3 """ Search for Euro FX futures symbols using Databento symbology API. """ import os import databento as db import sys def main(): # Check for API key api_key = os.environ.get("DATABENTO_API_KEY") if not api_key: print("ERROR: DATABENTO_API_KEY environment variable not set") sys.exit(1) # Create client client = db.Historical(api_key) print("=" * 70) print("Searching for Euro FX symbols in GLBX.MDP3") print("=" * 70) dataset = "GLBX.MDP3" start_date = "2024-01-02" end_date = "2024-01-31" # Try different symbol patterns for Euro FX # Based on Databento documentation, CME symbols may need parent symbol format test_patterns = [ # Standard CME format "6E", "6E.FUT", "E7", # E-mini EUR/USD # Try with exchange prefix "CME:6E", "CME:6EH24", # Try continuous contract notation "6E.n.0", # Continuous front month # Try Databento instrument ID format "EUR", "EURUSD", ] print("\nTesting symbol patterns:\n") for symbol in test_patterns: print(f"Testing: {symbol:20s} ... ", end="", flush=True) try: # Use symbology.resolve to check if symbol exists result = client.symbology.resolve( dataset=dataset, symbols=[symbol], stype_in="native", stype_out="instrument_id", start_date=start_date, end_date=end_date ) if result: print(f"✅ FOUND!") print(f" Resolved to: {result}") else: print("❌ Not found") except Exception as e: error_msg = str(e)[:80] print(f"❌ Error: {error_msg}") print() print("=" * 70) print("Additional Information") print("=" * 70) print("CME Euro FX Futures (6E) symbology:") print(" - Root symbol: 6E") print(" - Contract months: H(Mar), M(Jun), U(Sep), Z(Dec)") print(" - Full format: 6EH24 (March 2024)") print() print("If none of the above work, the data may require:") print(" 1. Different dataset (not GLBX.MDP3)") print(" 2. Subscription upgrade for CME data") print(" 3. Different time period when data is available") print() print("Recommendation: Check Databento's symbology documentation") print(" https://databento.com/docs/symbology") if __name__ == "__main__": main()